Compare commits

...

2800 Commits

Author SHA1 Message Date
harukin 3a105cc339 Merge branch 'develop' into 'japanese'
Update 4.6

See merge request harukin/core!72
2019-12-29 14:08:20 +09:00
harukin 6859053727 Revert "Revert "Merge branch 'develop' into 'origin'""
This reverts commit 8c207cf1eb.
2019-12-29 13:59:00 +09:00
harukin 8c207cf1eb Revert "Merge branch 'develop' into 'origin'"
This reverts commit e1922bd555.
2019-12-29 13:53:59 +09:00
harukin bce8c2ee5a Merge branch 'origin' into 'develop'
Update 4.6

See merge request harukin/core!68
2019-12-29 13:33:15 +09:00
harukin e1922bd555 Merge branch 'develop' into 'origin'
# Conflicts:
#   view/ja/hstrings.php
2019-12-29 13:31:01 +09:00
harukin fc9a901c4c Merge branch 'japanese' into 'develop'
Japanese translation sync

See merge request harukin/core!69
2019-12-29 13:10:22 +09:00
Mario 6f93d9848c Disable oembed in directory profile about 2019-12-17 10:53:40 +01:00
Mario bde429cff6 Merge branch '4.6RC' 2019-12-04 10:25:11 +00:00
Mario 4c8d33d1eb bump version 2019-12-04 10:24:03 +00:00
Mario fac7826efa update changelog
(cherry picked from commit 295c08fcf31e44ed48284768e6df92aaa11ab964)
2019-12-04 11:22:56 +01:00
DM42.Net Hubzilla Development 3e133bbfa3 Move auto_save_draft to header from thread comment
(cherry picked from commit c86b35da701674510a97ccc21e46581bd864cc31)
2019-11-28 09:42:59 +01:00
Max Kostikov 6c8d1bdffe Update CHANGELOG
(cherry picked from commit 9284b60a79bf226f4fef0e51f6eb58eacdb3973c)
2019-11-28 09:42:00 +01:00
Max Kostikov 59fc495593 Update Russian hstrings.php
(cherry picked from commit b69f8a3f298f3c80b75d4085399c4c1f03c0dfb0)
2019-11-28 09:41:40 +01:00
Max Kostikov 60827bdcc4 Update Russian hmessages.po
(cherry picked from commit 8ea7c08f43473560519ab3637022db6c31beec39)
2019-11-28 09:41:19 +01:00
Mario f992feb71c update changelog
(cherry picked from commit fcb065bcb2f8e61d1d9e804f8f251967732ee037)
2019-11-25 22:06:59 +01:00
Mario cf66e66db8 Merge branch '4.6RC' of https://framagit.org/hubzilla/core into 4.6RC 2019-11-25 21:03:35 +00:00
Max Kostikov 63aa3948e5 resolve merge conflict 2019-11-25 21:03:22 +00:00
Max Kostikov 7899ed6f69 Revert "Add daily cached embedded content cleanup"
This reverts commit 5c47c9ed9579dc97e0a508045fe50264bb96490b

(cherry picked from commit 38de059156f9a6ec63727d47a96d1b15e96e3b47)
2019-11-25 21:58:36 +01:00
Max Kostikov 5e44239657 Add daily cached embedded content cleanup
(cherry picked from commit 5c47c9ed9579dc97e0a508045fe50264bb96490b)
2019-11-25 21:58:18 +01:00
Mario 17cd452fff changelog
(cherry picked from commit f6f7e7e8d2a9045ac2010ab2308ef7bc5e896efa)
2019-11-25 12:33:36 +01:00
Mario 004861fbb7 merge opengraph fixes from dev 2019-11-25 08:41:34 +00:00
Manuel Jiménez Friaza 8727f12b18 no mention notifications from mastodon (and pleroma)
(cherry picked from commit ea235c0c67)


(cherry picked from commit 0159b631fcc2041009cc273b3f5308f06cee0429)
2019-11-21 14:49:59 +01:00
Mario 05604e4bd2 onepoll: do not update dead feeds
(cherry picked from commit 5a6b14f8787927ee6ea99c622d02875811d3a74a)
2019-11-15 11:03:54 +01:00
Mario fd7d497cd1 make inline pdf a security option, move thumbnail security to security options from admin/site
(cherry picked from commit de9a7f0fa909792656d26d369f2ff21c57fc1e4d)
2019-11-15 11:03:38 +01:00
Mario a974d0d52d AP fixes
(cherry picked from commit 3009c88d246ddcafabf1965f88c5ebd8fe1717fd)
2019-11-15 11:02:55 +01:00
Mario c850a61a89 check if file exists
(cherry picked from commit 52bd27a0280c736e563ccc67a9307cd75bd14d3f)
2019-11-13 16:26:57 +01:00
zotlabs 3a2fdec241 wildcard tag issue
(cherry picked from commit 2f4c619d510e64eeda05366e485d50f490cefebe)
2019-11-13 08:57:12 +01:00
Mario 08b804cd2d use minified version of jquery
(cherry picked from commit 89342ca9fbf329d5e84839c51f26db19bdd4ac8c)
2019-11-11 11:17:42 +01:00
Mario de7891771d update strings 2019-11-11 08:14:42 +00:00
Mario 602768209b bump version 2019-11-11 08:06:44 +00:00
Mario 73b1f8fcdd Merge branch 'cherry-pick-1affcb80' into 'dev'
fix language tests

See merge request hubzilla/core!1782
2019-11-10 14:21:13 +01:00
Mario e1b923ab7d Merge branch 'cherry-pick-6685381f' into 'dev'
another bulk of composer updates

See merge request hubzilla/core!1781
2019-11-10 14:18:18 +01:00
Mario bed9876d68 Merge branch 'cherry-pick-9ad4c652' into 'dev'
hopefully fix query for postgres

See merge request hubzilla/core!1780
2019-11-10 14:17:58 +01:00
Mario d184e2708f fix language tests
(cherry picked from commit 1affcb80172576dc46e4434cd10e1a534a9bb6c2)
2019-11-10 14:10:51 +01:00
Mario 580c3f4ffe another bulk of composer updates
(cherry picked from commit 6685381fd8db507493c3d7c1793f8c05c681bbce)
2019-11-10 14:10:03 +01:00
Mario 158b8aea38 hopefully fix query for postgres
(cherry picked from commit 9ad4c6528cc3ee4e34d2b5d77027a1c33cbadf5c)
2019-11-10 12:02:12 +01:00
Max Kostikov d22766f458 Merge branch 'cherry-pick-971e7eef' into 'dev'
remove some old unused javascript libraries

See merge request hubzilla/core!1779
2019-11-10 11:55:05 +01:00
Max Kostikov 70391243dc Merge branch 'cherry-pick-b444bf59' into 'dev'
update jquery to version 3.4.1

See merge request hubzilla/core!1778
2019-11-10 11:54:43 +01:00
Mario 61eef68ff3 Ãremove some old unused javascript libraries
(cherry picked from commit 971e7eef9c415a2ce82eb0cd22eaabee12ae719c)
2019-11-10 09:59:22 +01:00
Mario 41cc2854c5 update jquery to version 3.4.1
(cherry picked from commit b444bf59560b3d918aa13b52035c602b03e8d013)
2019-11-10 09:58:18 +01:00
Max Kostikov 478014f02a Better BBcode to Markdown conversion 2019-11-08 23:35:05 +01:00
M. Dent aff7c2d771 Merge branch 'dev' into 'dev'
exempt svg from tag completion

See merge request hubzilla/core!1777
2019-11-08 23:30:30 +01:00
zotlabs 00dd52317a Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-11-08 13:10:24 -08:00
zotlabs 17522b31e9 exempt svg from tag completion 2019-11-08 13:07:42 -08:00
Max Kostikov 163b1ee9f8 Merge branch 'cherry-pick-fa437b79' into 'dev'
more fix date header format

See merge request hubzilla/core!1776
2019-11-08 21:35:06 +01:00
Mario 7b9a992f83 more fix date header format
(cherry picked from commit fa437b7977ba7fffd7368fa5c75e3d57fbf75424)
2019-11-08 21:27:43 +01:00
Max Kostikov 4efb258671 Merge branch 'cherry-pick-bb11cd15' into 'dev'
fix date header format

See merge request hubzilla/core!1775
2019-11-08 21:26:54 +01:00
Mario 7532358806 fix date header format
(cherry picked from commit bb11cd15d147ebbcc90b544788c9c2ef4925daa5)
2019-11-08 21:13:58 +01:00
Max Kostikov 13c05e7937 Merge branch 'dev' into 'dev'
Do not trim a sufficiently shortened Opengraph description

See merge request hubzilla/core!1774
2019-11-08 18:13:52 +01:00
Max Kostikov c6e9bca76c Merge branch 'cherry-pick-2df15f35' into 'dev'
update composer libs

See merge request hubzilla/core!1773
2019-11-08 18:13:27 +01:00
Max Kostikov 3706afbd01 Do not trim a sufficiently shortened Opengraph description 2019-11-08 16:19:08 +01:00
Mario bcd0802ea4 update composr libs
(cherry picked from commit 2df15f35d706d4608ff723ce6288391ca774f7ba)
2019-11-08 10:47:28 +01:00
Mario 9360148829 Merge branch 'dev' into 'dev'
svg stuff

See merge request hubzilla/core!1772
2019-11-08 10:47:00 +01:00
Zot a6165c00ce svg stuff 2019-11-08 10:47:00 +01:00
zotlabs a5826fec25 svg stuff 2019-11-07 14:51:29 -08:00
zotlabs 839c6668cf Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-11-07 14:48:44 -08:00
Max Kostikov e9a9fc5050 Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1771
2019-11-07 14:24:19 +01:00
Max Kostikov 426668cd2e Update hstrings.php 2019-11-07 14:14:41 +01:00
Max Kostikov 926d7c56a6 Update hmessages.po 2019-11-07 14:13:29 +01:00
Mario 9934dbfe69 Merge branch 'dev' into 'dev'
Sanitize title on Atom/RSS feed import

See merge request hubzilla/core!1770
2019-11-07 09:14:51 +01:00
Max Kostikov b6314c109d Sanitize title on Atom/RSS feed import 2019-11-07 09:14:51 +01:00
Max Kostikov f8955f90b8 Move title sanitizer code in the right place 2019-11-06 16:14:57 +01:00
Max Kostikov 9248fc96b3 Formatting 2019-11-06 16:11:10 +01:00
Max Kostikov 2875ee2423 Update feedutils.php 2019-11-06 16:08:36 +01:00
Max Kostikov 36f707b25e Sanitize title on Atom/RSS feed import 2019-11-06 16:07:04 +01:00
M. Dent 2a05bd9ed6 Merge branch 'cherry-pick-7cc8c2d1' into 'dev'
port fixes from zap to check for arrays

See merge request hubzilla/core!1767
2019-11-06 04:13:57 +01:00
M. Dent b7db9944ec Merge branch 'cherry-pick-3604220c' into 'dev'
add date and request target headers to make pixelfed happy

See merge request hubzilla/core!1768
2019-11-06 04:11:12 +01:00
M. Dent 86f7d08483 Merge branch 'dev' into 'dev'
Prefer use Etag on photo modification validation

See merge request hubzilla/core!1769
2019-11-06 04:10:16 +01:00
zotlabs 1358a81c32 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-11-04 14:26:12 -08:00
Max Kostikov 09ad48c12b Prefer use Etag on photo modification validation 2019-11-04 21:44:42 +01:00
M. Dent aa137fb2d2 Merge branch 'cherry-pick-4cfb9658' into 'dev'
fix duplicate attachment and regression with audio file upload

See merge request hubzilla/core!1766
2019-11-04 20:01:14 +01:00
M. Dent 09284d512d Merge branch 'cherry-pick-03317b98' into 'dev'
fix query with protocol prefix not always picking the right xchan

See merge request hubzilla/core!1765
2019-11-04 19:58:01 +01:00
Mario 02fd7e51ff add date and request target headers to make pixelfed happy
(cherry picked from commit 3604220c2a5aedddf25143cc5fd87ed576d34702)
2019-11-04 13:04:28 +01:00
Mario b359b89aa1 port fixes from zap to check for arrays
(cherry picked from commit 7cc8c2d127b09b7e53c7916c6ea104fa566971db)
2019-11-04 13:03:00 +01:00
Mario 873b20677e fix duplicate attachment and regression with audio file upload
(cherry picked from commit 4cfb965881df2be181aab6020c9df78c0a86fd9f)
2019-11-04 10:34:24 +01:00
Mario a049664219 fix query with protocol prefix not always picking the right xchan
(cherry picked from commit 03317b9864c0d7c99e144404c647b9923d8d29ea)
2019-11-04 09:39:56 +01:00
Max Kostikov 64c6e25896 Merge branch 'cherry-pick-4a1c2208' into 'dev'
fix issue #1402

See merge request hubzilla/core!1764
2019-11-03 14:03:00 +01:00
Mario 9f9122ab8e fix issue #1402
(cherry picked from commit 4a1c2208866360b5fe54eea71ff8e62bd6d63045)
2019-11-03 11:15:12 +01:00
Mario d0661cd4a3 Merge branch 'commentsclosed-hook' into 'dev'
Add hook to comments_are_now_closed()

See merge request hubzilla/core!1763
2019-11-03 10:12:12 +01:00
M. Dent 707b19dc35 Add hook to comments_are_now_closed() 2019-11-03 10:12:11 +01:00
Max Kostikov 6fd15d66a7 Merge branch 'dev' into 'dev'
Change llink type in default SQL schema

See merge request hubzilla/core!1761
2019-11-02 10:42:02 +01:00
Max Kostikov 8c9a814e18 Merge branch 'homeinstall_fix_addons' into 'dev'
homeinstall fix addons

See merge request hubzilla/core!1762
2019-11-02 10:37:59 +01:00
Max Kostikov 74ef5f38e9 Fix start time to sync queries on photo cache purge 2019-11-02 10:36:04 +01:00
root 624a3ee1a7 homeinstall fix addons 2019-11-01 23:01:42 +01:00
Max Kostikov fc658a25d7 Update schema_mysql.sql 2019-11-01 19:37:46 +01:00
Max Kostikov 308619a726 Drop llink index 2019-11-01 17:47:16 +01:00
Max Kostikov e87d8d9856 Change llink column type and drop index 2019-11-01 17:46:28 +01:00
Max Kostikov 7594264725 Merge branch 'dev' into 'dev'
Better photo cache expiry processing

See merge request hubzilla/core!1760
2019-11-01 10:49:19 +01:00
Max Kostikov 69533ce8f5 Add missed interval in SQL query 2019-11-01 10:46:49 +01:00
Max Kostikov 9fac43a3a3 Better photo cache expiry processing 2019-11-01 10:34:02 +01:00
harukin 972270ff3e fix plural code 2019-10-27 09:44:24 +09:00
Max Kostikov b00db39739 Merge branch 'dev' into 'dev'
Better cached photos processing

See merge request hubzilla/core!1759
2019-10-26 12:30:41 +02:00
Max Kostikov 6f2a584279 Update Photo.php 2019-10-26 12:24:23 +02:00
Max Kostikov de717268f7 Better cached photos processing 2019-10-26 12:22:09 +02:00
Mario e27b19c756 fix hardcoded code/pre css in mod admin
(cherry picked from commit cddf6c4ff51580f3dec5d32eef06a40a473a9202)
2019-10-22 13:29:52 +02:00
Mario 045cb461f1 fix encoding issue
(cherry picked from commit 067010fc0a5a6c10825b869b822c9cfbb3d4516b)
2019-10-22 10:39:54 +02:00
Max Kostikov 088c0eedc6 Merge branch 'patch-1' into 'dev'
add japanese translation

See merge request hubzilla/core!1752
2019-10-19 23:28:58 +02:00
harukin e5137b03fc Update view/ja/hstrings.php 2019-10-19 18:41:58 +02:00
harukin 76d34a4d74 Update view/ja/hmessages.po, view/ja/hstrings.php files 2019-10-17 17:57:23 +02:00
harukin a3f7121a3a fix translation miss 2019-10-18 00:56:42 +09:00
Max Kostikov ae4f0e5728 Merge branch 'dev' into 'dev'
Fix channel address in follow link

See merge request hubzilla/core!1757
2019-10-15 22:39:18 +02:00
Max Kostikov 5df59027ad Fix channel address in follow link 2019-10-15 22:37:03 +02:00
Max Kostikov c888e33f04 Merge branch 'dev' into 'dev'
Better Opengraph image type detection

See merge request hubzilla/core!1756
2019-10-15 14:11:21 +02:00
Max Kostikov 1a56ecaa39 Update opengraph.php 2019-10-15 14:04:24 +02:00
Max Kostikov d778c3cf19 Better Opengraph image type detection 2019-10-15 14:03:41 +02:00
Max Kostikov 8bf57c6226 Merge branch 'dev' into 'dev'
Dev

See merge request hubzilla/core!1755
2019-10-15 14:00:21 +02:00
Max Kostikov 3c762b8809 Fix cache-control syntax for photos 2019-10-15 13:49:46 +02:00
Max Kostikov 3561fd7c43 Merge branch 'dev' into 'dev'
Sync dev

See merge request kostikov/core!3
2019-10-15 13:48:07 +02:00
Max Kostikov 66bfc0ec64 Merge branch 'patch-20191014' into 'dev'
Updates to zcard/profile images and other public images to account for infrastructure caches (CDN)

See merge request hubzilla/core!1754
2019-10-14 22:28:48 +02:00
M. Dent 7d0e576e3b Updates to zcard/profile images and other public images to account for infrastructure caches (CDN) 2019-10-14 22:28:48 +02:00
harukin a65453676f fix plural-Forms 2019-10-15 00:56:49 +09:00
Max Kostikov aa330bc8c7 Merge branch 'dev' into 'dev'
Better plural function detection

See merge request hubzilla/core!1753
2019-10-14 11:16:12 +02:00
Max Kostikov b4de492e0d Merge branch 'dev' into 'dev'
Dev

See merge request kostikov/core!2
2019-10-14 11:11:48 +02:00
Max Kostikov 5bf3114e6f Better plural function detection 2019-10-14 11:09:53 +02:00
harukin 1fc82c5daf edit translation 2019-10-14 10:41:40 +09:00
harukin d2b1a2e5a3 Upload .php file 2019-10-14 03:39:43 +02:00
harukin 4b01f6359b Upload .po file 2019-10-14 03:39:05 +02:00
harukin bcfa62f45a japanese translation directory 2019-10-14 03:34:24 +02:00
Mario e7e8a2ca5f Merge branch 'dev' into 'dev'
Better Opengraph markup

See merge request hubzilla/core!1751
2019-10-13 14:27:54 +02:00
Max Kostikov 5edeb0250b Revert "Remove visible channels list from pubstream tags cloud creation procedure"
This reverts commit 5c4c6e68f6
2019-10-13 14:27:54 +02:00
Max Kostikov 0c2657df78 Add Opengraph image type detection 2019-10-12 23:42:35 +02:00
Max Kostikov e4c57e8031 Update opengraph.php 2019-10-12 21:22:42 +02:00
Max Kostikov 6a25548097 Update Channel.php 2019-10-12 19:26:17 +02:00
Max Kostikov db7cbdfc44 Add Opengraph markup for articles 2019-10-12 19:23:14 +02:00
Max Kostikov 2f26badb84 Move Opengraph functions to common libraries 2019-10-12 19:05:20 +02:00
Max Kostikov f7e665c42f Add Opengraph function 2019-10-12 19:03:21 +02:00
Max Kostikov 3bc44ee451 Minor Opengraph improvements 2019-10-11 19:29:40 +02:00
Max Kostikov 125de855ef Add Opengraph og:type object 2019-10-11 09:55:06 +02:00
Max Kostikov 3881ebcce0 Better Opengraph markup for channel 2019-10-11 00:46:02 +02:00
harukin ca50e9e6d6 edit translation 2019-10-10 08:39:58 +09:00
M. Dent bef5324fea Merge branch 'cherry-pick-cac0672a' into 'dev'
issue #1401

See merge request hubzilla/core!1750
2019-10-08 14:26:17 +02:00
Mario Vavti c2655370e0 issue #1401
(cherry picked from commit cac0672a49cd710b3eced1d66f1bfb18747ddbf8)
2019-10-08 11:28:36 +02:00
Max Kostikov d017e34795 Merge branch 'dev' into 'dev'
Dev sync

See merge request kostikov/core!1
2019-10-06 19:26:23 +02:00
Max Kostikov aa44da35ba Revert "Remove visible channels list from pubstream tags cloud creation procedure"
This reverts commit 5c4c6e68f6
2019-10-06 19:24:28 +02:00
Max Kostikov 5c4c6e68f6 Remove visible channels list from pubstream tags cloud creation procedure 2019-10-06 12:02:45 +02:00
Max Kostikov a435363b94 Merge branch 'cherry-pick-d8b8d8ce' into 'dev'
fix zap->hubzlla event title compatibility

See merge request hubzilla/core!1749
2019-10-06 11:18:35 +02:00
Mario Vavti d6634eb14e fix zap->hubzlla event title compatibility
(cherry picked from commit d8b8d8ceb5cc9d701f91dac26834af15f3257cce)
2019-10-05 22:04:23 +02:00
Mario afee2cf71a Merge branch 'dev' into 'dev'
Allow addons to process forum posts published through mentions

See merge request hubzilla/core!1745
2019-10-05 10:31:47 +02:00
Max Kostikov 79b0a6ba9c Allow addons to process forum posts published through mentions 2019-10-05 10:31:47 +02:00
Mario 0c2438b36a Merge branch 'cherry-pick-79bcc157' into 'dev'
fix bbcode event reshare timezone issue

See merge request hubzilla/core!1747
2019-10-05 10:31:26 +02:00
Mario d6da46f94b Merge branch 'dev' into 'dev'
another timezone fix

See merge request hubzilla/core!1748
2019-10-05 10:31:11 +02:00
Zot 562e39c9c5 another timezone fix 2019-10-05 10:31:11 +02:00
zotlabs 2d08e0955a Merge branch 'dev' of https://framagit.org/zot/core into dev 2019-10-04 14:31:21 -07:00
zotlabs baffa969d3 another timezone fix 2019-10-04 14:28:31 -07:00
Mario Vavti 1fbc8739b9 fix bbcode event reshare timezone issue
(cherry picked from commit 79bcc157bf8f0c67a8ee41ae9c53a9dec969f8d1)
2019-10-04 09:25:39 +02:00
zotlabs b9dec84489 fix event timezones for zot6 2019-10-03 22:16:11 -07:00
Max Kostikov 6feb864c38 Allow processing of forum posts through mentions in addons 2019-10-03 18:28:29 +02:00
Max Kostikov b6db1898b1 Get extended channel info using channelx_by_hash() 2019-10-03 18:27:25 +02:00
Max Kostikov de902d179e Allow processing of forum posts through mentions in addons 2019-10-03 18:25:57 +02:00
Max Kostikov 58b77e3427 Merge branch 'cherry-pick-2c7ed093' into 'dev'
fix missing summary in mod article_edit

See merge request hubzilla/core!1744
2019-10-02 11:43:41 +02:00
Mario Vavti cdcac86256 fix missing summary in mod article_edit
(cherry picked from commit 2c7ed093699ea0c0f68068fdd8a035454b9a76a3)
2019-10-02 11:05:24 +02:00
Mario 79b05e48e8 Merge branch 'dev' into 'dev'
Add 'Connect' button for not connected at this location channels

See merge request hubzilla/core!1743
2019-10-01 11:15:29 +02:00
Max Kostikov 541146e8ce Add 'Connect' button for not connected at this location channels 2019-10-01 11:15:29 +02:00
Max Kostikov 97b161c536 Merge branch 'dev' into 'dev'
Fix empty string quotation; remove trailing spaces

See merge request hubzilla/core!1742
2019-09-30 16:54:35 +02:00
Max Kostikov ba3a6ecb52 Fix empty string quotation; remove trailing spaces 2019-09-30 16:50:24 +02:00
Mario cf27b7440d Merge branch 'dev' into 'dev'
Sync private items with clones; avoid sync if no local connection with thread owner

See merge request hubzilla/core!1739
2019-09-30 16:19:39 +02:00
Max Kostikov 407b9c9cd7 Sync private items with clones; avoid sync if no local connection with thread owner 2019-09-30 16:19:39 +02:00
Mario d0055310ba Merge branch 'dev' into 'dev'
issue with bearcap tests

See merge request hubzilla/core!1738
2019-09-28 10:36:38 +02:00
zotlabs 02f5fa32af Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-09-26 18:36:06 -07:00
zotlabs b6590e95b5 issue with bearcap tests 2019-09-26 18:34:08 -07:00
harukin 4f9f5ac3e6 edit translation 2019-09-26 14:27:04 +09:00
M. Dent ec65211d54 Merge branch 'admindoc' into 'dev'
Improve admin documentation

See merge request hubzilla/core!1737
2019-09-24 23:36:32 +02:00
Ale Abdo 8dfa08f146 Improve admin documentation 2019-09-24 15:37:47 +02:00
M. Dent daef2d0546 Merge branch 'dev' into 'dev'
Update plink type for MySQL schema

See merge request hubzilla/core!1736
2019-09-23 19:21:27 +02:00
M. Dent 15eaa80301 Merge branch 'cherry-pick-9aa928ec' into 'dev'
composer update simplepie/simplepie

See merge request hubzilla/core!1735
2019-09-23 19:20:45 +02:00
M. Dent 1e924a8530 Merge branch 'cherry-pick-e4336578' into 'dev'
composer update vendor/league/html-to-markdown/.github/

See merge request hubzilla/core!1734
2019-09-23 19:18:53 +02:00
M. Dent 23995ccb07 Merge branch 'cherry-pick-38cb094e' into 'dev'
composer update ezyang/htmlpurifier

See merge request hubzilla/core!1733
2019-09-23 19:16:59 +02:00
M. Dent a4f2603454 Merge branch 'cherry-pick-a34ce790' into 'dev'
composer update ezyang/htmlpurifier

See merge request hubzilla/core!1732
2019-09-23 19:16:38 +02:00
M. Dent cc860b4a76 Merge branch 'cherry-pick-53b8ee78' into 'dev'
composer update blueimp/jquery-file-upload

See merge request hubzilla/core!1731
2019-09-23 19:08:47 +02:00
Max Kostikov 0be82602ce Update schema_mysql.sql 2019-09-23 14:23:47 +02:00
Max Kostikov b42c42692e Update plink type for MySQL 2019-09-23 14:14:02 +02:00
Mario Vavti 7fcbff3ceb composer update simplepie/simplepie
(cherry picked from commit 9aa928ec8f378c6df2a0c8bbe892ff971c3bc672)
2019-09-23 12:22:35 +02:00
Mario Vavti efec0af394 composer update vendor/league/html-to-markdown/.github/
(cherry picked from commit e4336578388b3e59ba8130123649ccdc9b8487d0)
2019-09-23 12:22:08 +02:00
Mario Vavti aafecd9d1e composer update ezyang/htmlpurifier
(cherry picked from commit 38cb094ede8a389ef0b8bb331c1e6a3befd666a8)
2019-09-23 12:21:04 +02:00
Mario Vavti e37c43ea06 composer update ezyang/htmlpurifier
(cherry picked from commit a34ce790129bdd729a5019895ea6cd4c59f08ba4)
2019-09-23 12:20:28 +02:00
Mario Vavti 3fac7b5bb7 composer update blueimp/jquery-file-upload
(cherry picked from commit 53b8ee7866eb1394980b08b90153a63563832391)
2019-09-23 12:19:33 +02:00
Mario 9b90114d03 Merge branch 'customitem-delivery' into 'dev'
Notify on custom items - rework hooks

See merge request hubzilla/core!1730
2019-09-23 10:11:27 +02:00
M. Dent 7c5cfe6697 Notify on custom items - rework hooks 2019-09-23 10:11:27 +02:00
Mario d1fd69337f Merge branch 'encode-comment-policy' into 'dev'
Encode comment policy into AS(Z6) packets.

See merge request hubzilla/core!1729
2019-09-23 10:10:56 +02:00
DM42.Net Zap Dev 3fc218111a Add dependency 2019-09-21 23:03:42 -04:00
DM42.Net Zap Dev c63fb0fc6b comment policy default for ordered items 2019-09-21 13:37:20 -04:00
DM42.Net Zap Dev 6fe4ac241d encode/decode comment_policy for Z6 2019-09-21 13:30:42 -04:00
Max Kostikov c385b80807 Merge branch 'cherry-pick-394f263d' into 'dev'
fix issue #1331

See merge request hubzilla/core!1728
2019-09-19 12:41:47 +02:00
Mario Vavti 97f36fa46f fix issue #1331
(cherry picked from commit 394f263ddd648e25ff3967bfbe3b0e25dccf89a0)
2019-09-19 12:34:01 +02:00
Mario 856d4b39d1 Merge branch 'dev' into 'dev'
change event formatting slightly for Zot6 and ActivityStreams.

See merge request hubzilla/core!1727
2019-09-18 12:43:45 +02:00
Mario 01abd73a2a Merge branch 'fix_homeinstall_for_Debian_10' into 'dev'
Fix homeinstall for debian 10

See merge request hubzilla/core!1725
2019-09-18 12:42:56 +02:00
zotlabs 375c2a87c7 change event formatting slightly for Zot6 and ActivityStreams. 2019-09-16 23:27:41 -07:00
Max Kostikov 6ca507f8dd Merge branch 'dev' into 'dev'
Prevent image blurring

See merge request hubzilla/core!1726
2019-09-15 09:23:22 +02:00
Max Kostikov 86b4a53858 Prevent image blurring 2019-09-15 09:18:42 +02:00
harukin 9a61b7682b 言語ファイル調整 2019-09-15 10:10:39 +09:00
OJ Random 8959ba9b82 hominstall - readme 2019-09-14 19:14:31 +02:00
OJ Random a62a230d3d hominstall - fix url rewriting and minor changes. 2019-09-14 19:09:26 +02:00
Max Kostikov cc45129e9f Merge branch 'dev' into 'dev'
Add selected text quote on comment reply

See merge request hubzilla/core!1724
2019-09-10 10:41:53 +02:00
Max Kostikov bffc9d5aba Merge branch 'daemon-qwfix' into 'dev'
Return in the case of further processing

See merge request hubzilla/core!1711
2019-09-10 10:41:34 +02:00
Max Kostikov f2b121cd58 Merge branch 'dev' into 'dev'
Zot -> Zot6 translation issue, liking a "new friend" activity

See merge request hubzilla/core!1723
2019-09-10 10:40:53 +02:00
harukin c1e22f9e86 fix japanese translation php 2019-09-10 01:16:40 +09:00
harukin e6e49ae3f7 部分日本語修復 2019-09-10 00:43:05 +09:00
Max Kostikov fd30be7644 Add selected text quote on comment reply 2019-09-09 12:35:47 +02:00
harukin 4b191b9cc7 Merge branch 'master' into 'develop'
developのmaster追従

See merge request harukin/core!65
2019-09-06 12:14:46 +09:00
harukin efbe737439 Merge branch 'japanese' into 'master'
言語ファイル翻訳暫定完了

See merge request harukin/core!64
2019-09-06 12:10:43 +09:00
harukin 172fe3d7ff php変換 2019-09-06 11:53:19 +09:00
harukin 5dc70562bf 機械翻訳ミスを修正 2019-09-06 11:49:55 +09:00
harukin a598e1fc2c google翻訳で一括処理 2019-09-06 10:53:54 +09:00
zotlabs d9052c7e3c Zot -> Zot6 translation issue, liking a "new friend" activity 2019-09-03 17:00:10 -07:00
Max Kostikov dcfe10b691 Merge branch 'dev' into 'dev'
Add CalDAV / CardDAV autodiscovery

See merge request hubzilla/core!1719
2019-09-03 14:33:37 +02:00
Max Kostikov 914a096b42 Merge branch 'dev' into 'dev'
improved conversion of emoji reactions from zot to zot6

See merge request hubzilla/core!1720
2019-09-03 14:33:09 +02:00
Max Kostikov 5fa9dcbc7e Merge branch 'dev' into 'dev'
More nofollow tags to discourage backlink farmers

See merge request hubzilla/core!1722
2019-09-03 14:32:52 +02:00
Terrox 93ec01e0a1 More nofollow tags to discourage backlink farmers 2019-09-03 14:32:52 +02:00
zotlabs bbc98db6b4 Clarify private mail deletion policy. Related to issue #1391. 2019-08-31 14:43:08 -07:00
zotlabs 1f8d29a221 improved conversion of emoji reactions from zot to zot6 2019-08-31 14:04:10 -07:00
Max Kostikov d267dd2515 Update Well_known.php 2019-08-30 00:55:36 +02:00
Max Kostikov 51954c7f3d Add CalDAV / CardDAV autodiscovery 2019-08-30 00:51:46 +02:00
Max Kostikov df842a8e8d Merge branch 'dev' into 'dev'
Better spoiler BBcode tag conversion to Markdown

See merge request hubzilla/core!1718
2019-08-24 00:00:58 +02:00
Max Kostikov 60919488f1 Better spoiler BBcode tag conversion to Markdown 2019-08-23 23:58:07 +02:00
Max Kostikov 4dbaaa63bb Merge branch 'dev' into 'dev'
issues with image import to zot6 - wrong mid. Also label source project of...

See merge request hubzilla/core!1717
2019-08-23 23:09:14 +02:00
zotlabs 8cc4003837 issues with image import to zot6 - wrong mid. Also label source project of zotfeed since it is not completely compatible across projects. 2019-08-22 19:39:11 -07:00
Max Kostikov 35790c584b Merge branch 'dev' into 'dev'
possible for DB to return hublocs with no sitekey

See merge request hubzilla/core!1713
2019-08-22 20:29:53 +02:00
Max Kostikov 09d7cf2cc1 Merge branch 'dev' into 'dev'
Fix attach permissions sync for clonned channel

See merge request hubzilla/core!1716
2019-08-22 20:25:57 +02:00
Max Kostikov 58d7c7f6ae Fix attach permissions sync for clonned channel 2019-08-22 20:20:54 +02:00
Max Kostikov cab24836d8 Merge branch 'dev' into 'dev'
Fix spoiler displaying while convert BBcode to markdown

See merge request hubzilla/core!1715
2019-08-22 20:20:44 +02:00
Max Kostikov cf9ef615c9 Fix spoiler displaying while convert BBcode to markdown 2019-08-22 20:17:22 +02:00
zotlabs 8c96032b2b Merge branch 'dev' of https://framagit.org/zot/core into dev 2019-08-21 18:51:25 -07:00
zotlabs d256551907 possible for DB to return hublocs with no sitekey 2019-08-21 18:50:38 -07:00
DM42.Net Zap Dev e800e2db2b Return in the case of further processing 2019-08-19 23:13:19 -04:00
harukin ae09281bb8 Merge branch 'origin' into 'master'
Update 4.4.1

See merge request harukin/core!63
2019-08-17 08:46:18 +09:00
harukin 9a776b3cdf Merge branch 'origin' into 'japanese'
Update 4.4.1

See merge request harukin/core!62
2019-08-17 08:42:47 +09:00
harukin 63d7bfde81 Merge branch 'origin' into 'develop'
Update 4.4.1

See merge request harukin/core!61
2019-08-17 08:38:51 +09:00
Mario Vavti cc9f41df5f bump version 2019-08-16 20:22:16 +02:00
Mario Vavti bb3784d8dd update changelog
(cherry picked from commit e5539c0d01)
2019-08-16 20:21:19 +02:00
Mario Vavti e5539c0d01 update changelog 2019-08-16 20:19:49 +02:00
zotlabs c997360b4a show correct profile photo when previewing and editing profiles
(cherry picked from commit 808baf203d)
2019-08-16 19:33:38 +02:00
Mario ea8621d6ec Merge branch 'dev' into 'dev'
zot6 compatibility: when posting from a non-primary clone the actor->id is...

See merge request hubzilla/core!1710
2019-08-16 19:32:08 +02:00
zotlabs 88fa18204f illegal offset warning (prevents encrypted signatures from being used for encrypted messages). Not fatal but can leak metadata.
(cherry picked from commit feda23587c)
2019-08-16 19:29:21 +02:00
zotlabs ac05a2ede7 support "bearcaps" in Activity library 2019-08-15 21:30:47 -07:00
zotlabs 808baf203d show correct profile photo when previewing and editing profiles 2019-08-15 19:18:46 -07:00
zotlabs beeafc6bc5 fix bitrot in util/zotsh 2019-08-15 16:28:06 -07:00
zotlabs 6f8c977e73 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-08-15 13:49:02 -07:00
zotlabs 9a2fbdde20 zot6 compatibility: when posting from a non-primary clone the actor->id is that of the primary, resulting in an author/owner identity mismatch. Solution is to always post with the actor->id set to the sender if it is a local channel. 2019-08-14 17:55:56 -07:00
Max Kostikov b325b2c003 Merge branch 'dev' into 'dev'
illegal offset warning (prevents encrypted signatures from being used for...

See merge request hubzilla/core!1709
2019-08-14 16:35:55 +02:00
zotlabs feda23587c illegal offset warning (prevents encrypted signatures from being used for encrypted messages). Not fatal but can leak metadata. 2019-08-13 16:53:04 -07:00
Mario Vavti e8f3b7f853 Merge branch '4.4RC' 2019-08-13 09:46:01 +02:00
Mario Vavti e28341ca4b bump version 2019-08-13 09:44:28 +02:00
Mario Vavti 6c11a020ee Merge branch 'dev' into 4.4RC 2019-08-13 09:42:21 +02:00
Mario Vavti 7200c2ac0c update changelog 2019-08-13 09:41:58 +02:00
Mario Vavti 732ca49b02 Merge branch 'dev' into 4.4RC 2019-08-13 09:34:32 +02:00
Mario Vavti ee976ed460 update directory servers 2019-08-13 09:33:23 +02:00
Mario Vavti 06ac3e896a Merge branch 'dev' into 4.4RC 2019-08-13 09:27:03 +02:00
Mario 6ce0f6e806 Merge branch 'dev_homeinstall_debian10' into 'dev'
Changes: Debian 10, MariaDB, adminer

See merge request hubzilla/core!1707
2019-08-13 09:23:36 +02:00
Max Kostikov e006586275 Merge branch 'rudocs' into 'dev'
Add more Russian context help

See merge request hubzilla/core!1708
2019-08-12 23:01:09 +02:00
Max Kostikov e9d6b17a00 Merge branch 'dev' into 'rudocs'
# Conflicts:
#   doc/context/ru/network/help.html
2019-08-12 22:55:12 +02:00
OJ Random bf2f199f37 Changes: Debian 10, MariaDB, adminer 2019-08-12 22:02:28 +02:00
Max Kostikov 718ca548be Delete .gitkeep 2019-08-12 21:57:24 +02:00
Max Kostikov 51c0dc070a Delete .gitkeep 2019-08-12 21:57:07 +02:00
Max Kostikov d5e0d52bc4 Update help.html 2019-08-12 21:56:50 +02:00
Max Kostikov f6b99db738 Update help.html 2019-08-12 21:52:21 +02:00
Max Kostikov ef69294072 Update help.html 2019-08-12 21:52:10 +02:00
Max Kostikov c56d395c90 Add Russian context help for Connections 2019-08-12 21:43:42 +02:00
Max Kostikov 778e9141d8 Add new directory 2019-08-12 21:27:50 +02:00
Max Kostikov c70a4662b4 Update help.html 2019-08-12 21:26:43 +02:00
Max Kostikov e441a31051 Update help.html 2019-08-12 12:04:46 +02:00
Max Kostikov 9f5ec5cc50 Update help.html 2019-08-12 12:02:00 +02:00
Max Kostikov 825ded2e08 Update help.html 2019-08-12 12:00:25 +02:00
Max Kostikov a7c3776557 Merge branch 'rudocs' into 'dev'
Add Russian context help and update translation

See merge request hubzilla/core!1706
2019-08-12 11:56:13 +02:00
Max Kostikov 1e7cfc2644 Update help.html 2019-08-12 11:38:34 +02:00
Max Kostikov c6fd32ffde Update help.html 2019-08-12 11:36:35 +02:00
Max Kostikov 5f551a8b47 Update hstrings.php 2019-08-12 11:33:03 +02:00
Max Kostikov f73ff57148 Update hmessages.po 2019-08-12 11:32:39 +02:00
Max Kostikov c538d7372e Add Russian context help for network page 2019-08-12 11:25:08 +02:00
Max Kostikov 4e7804ca75 Add new directory 2019-08-12 10:55:50 +02:00
Max Kostikov 8fe715983a Merge branch 'dev' into 'dev'
Updated Spanish translation

See merge request hubzilla/core!1705
2019-08-12 00:14:09 +02:00
Manuel Jiménez Friaza 4a3fb07d5f Updated Spanish translation 2019-08-11 11:15:07 +02:00
Mario Vavti f5062c0507 Merge branch 'dev' into 4.4RC 2019-08-11 10:56:00 +02:00
Mario Vavti f0d7a17b72 linkinfo: only allow to embed public items 2019-08-11 10:55:38 +02:00
Manuel Jiménez Friaza b89d2d7580 Merge remote-tracking branch 'upstream/dev' into dev 2019-08-11 10:39:03 +02:00
Mario Vavti 7a7f57fa45 Merge branch 'dev' into 4.4RC 2019-08-11 10:23:14 +02:00
Max Kostikov 047dd31724 Merge branch 'dev' into 'dev'
Improve plink to share tag detection

See merge request hubzilla/core!1704
2019-08-10 11:23:51 +02:00
Max Kostikov 0ce1a200f7 Improve plink to share tag detection 2019-08-10 11:15:48 +02:00
Mario Vavti 0e0024218f Merge branch 'dev' into 4.4RC 2019-08-09 22:21:40 +02:00
Mario Vavti 4886d088e9 use stripos() to match the body against terms in format_hashtags() 2019-08-09 22:19:51 +02:00
Mario Vavti 6eec6e2d65 update changelog 2019-08-09 21:58:25 +02:00
Mario Vavti 6c12880f5b fix version 2019-08-09 20:37:06 +02:00
Mario Vavti eb472111a8 Merge branch 'dev' into 4.4RC 2019-08-09 20:35:25 +02:00
Mario Vavti 8d8b7ed567 make fetch logging less chatty
(cherry picked from commit 130cfbf231)
2019-08-09 20:34:38 +02:00
Mario Vavti 681dc70205 Merge branch 'dev' into 4.4RC 2019-08-09 20:33:45 +02:00
Mario Vavti 130cfbf231 make fetch logging less chatty 2019-08-09 20:33:03 +02:00
Mario 940e4a6152 Merge branch 'dev' into 'dev'
Replace plink URL with 'share' tag if possible

See merge request hubzilla/core!1703
2019-08-09 20:26:54 +02:00
Max Kostikov 38f7d9ad37 Replace plink URL with 'share' tag if possible 2019-08-09 19:01:21 +02:00
Max Kostikov e896d316f2 Merge branch 'dev' into 'dev'
More intelligent quotation shortening while link embedding

See merge request hubzilla/core!1702
2019-08-09 17:05:05 +02:00
Max Kostikov af690b64d6 More intelligent quotation shortening while link embedding 2019-08-09 16:59:14 +02:00
Max Kostikov 699aad8626 Merge branch 'dev' into 'dev'
Catch and exclude trailing punctuation while URL embedding

See merge request hubzilla/core!1701
2019-08-08 18:53:14 +02:00
Max Kostikov 4382e53acb Remove condition 2019-08-08 18:37:05 +02:00
Max Kostikov 832adf92a6 Update zid.php 2019-08-08 18:30:08 +02:00
Max Kostikov 33e2582918 Update zid.php 2019-08-08 18:29:26 +02:00
Max Kostikov 1c2f413211 Formatting 2019-08-08 18:27:07 +02:00
Max Kostikov 2300581c93 Catch and exclude trailing punctuation while URL embedding 2019-08-08 18:19:07 +02:00
Max Kostikov 03c4fba730 Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1700
2019-08-02 23:51:55 +02:00
Max Kostikov 75a8b209f5 Update hstrings.php 2019-08-02 23:42:09 +02:00
Max Kostikov d554b41fea Update hmessages.po 2019-08-02 23:41:54 +02:00
Mario Vavti b0db1f827e version 2019-08-01 22:37:52 +02:00
Mario Vavti 3070baf04e version 2019-08-01 22:36:51 +02:00
Mario Vavti 72629ca511 bump version 2019-08-01 22:11:27 +02:00
Mario Vavti 1c39fc71d9 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-08-01 22:07:07 +02:00
Mario Vavti 0bb59b66be update license 2019-08-01 22:00:11 +02:00
Mario Vavti 31b177f8ad update strings 2019-08-01 21:46:24 +02:00
Max Kostikov 8ee5ced08d Merge branch 'dev' into 'dev'
Minor optimizations on static file serve

See merge request hubzilla/core!1699
2019-08-01 21:01:12 +02:00
Max Kostikov c96a1632f5 Minor optimizations on static file serve 2019-08-01 20:55:08 +02:00
Max Kostikov b3b2649814 Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1698
2019-07-31 19:57:44 +02:00
Max Kostikov 95805d2e7c Update hstrings.php 2019-07-31 19:50:07 +02:00
Max Kostikov d4b92141fd Update hmessages.po 2019-07-31 19:49:51 +02:00
Max Kostikov 829e915c90 Merge branch 'dev' into 'dev'
Do not limit channel if service class property value set with 0

See merge request hubzilla/core!1697
2019-07-31 17:21:06 +02:00
Max Kostikov aaffc7485d Update account.php 2019-07-31 17:18:11 +02:00
Max Kostikov 9ea1d6e8af Do not limit channel if service class property value set with 0 2019-07-31 17:09:24 +02:00
Mario 17661b4b5f Merge branch 'dev' into 'dev'
Do not control limits on service class settings with 0 values

See merge request hubzilla/core!1696
2019-07-30 23:08:42 +02:00
Mario 32874b89ca Merge branch 'dev' into 'dev'
fix urls on imported item taxonomy

See merge request hubzilla/core!1695
2019-07-30 23:07:33 +02:00
Max Kostikov d4a038c437 Update account.php 2019-07-30 13:59:12 +02:00
Max Kostikov 59fed33797 Do not control limits on service class settings with 0 values 2019-07-30 11:54:14 +02:00
zotlabs feea137dbf hz core issue #1386 - function name must be a string 2019-07-28 23:46:38 -07:00
zotlabs 70e4a2c4fa Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-07-28 20:00:14 -07:00
zotlabs 696359daba fix urls on imported item taxonomy 2019-07-28 19:57:17 -07:00
Max Kostikov 5695350e98 Revert "Merge branch 'dev' into 'dev'"
This reverts merge request !1694
2019-07-25 12:25:27 +02:00
Mario Vavti 4e3a0720c3 minor css adjustions 2019-07-23 23:32:32 +02:00
Mario Vavti dc56d8560d pleroma uses slightly different URLs in body - also look for the string 2019-07-22 20:38:10 +02:00
Mario Vavti 81ecea29c8 reflect repeats in notifications, use force flag for import_xchan_photo() in cron 2019-07-22 19:11:52 +02:00
Mario Vavti ad58697521 move image attachments to the top 2019-07-19 18:45:34 +02:00
Mario Vavti 6ca7527ec9 add hashtag to appschema and bump appschema rev 2019-07-18 14:19:32 +02:00
Mario Vavti 8ced3699c2 fallback to id if href is not available 2019-07-18 13:52:39 +02:00
Mario Vavti c4de5b45df do not format hashtags with missing url 2019-07-18 13:19:10 +02:00
Mario Vavti 71056e1db1 fix issue with encoding hashtags and silence parent fetch logging 2019-07-18 13:02:19 +02:00
Mario Vavti f94faeeace streamline keyId and creator/actor 2019-07-17 23:36:41 +02:00
Mario Vavti 80f56a1315 minor css fix 2019-07-17 15:14:05 +02:00
Mario 485f5a07ed Merge branch 'dev' into 'dev'
Exclude trailing punctuations from URL

See merge request hubzilla/core!1694
2019-07-16 18:11:47 +02:00
Max Kostikov 821af482f0 Exclude trailing punctuations from URL 2019-07-16 18:11:47 +02:00
Mario Vavti b2d1fadf66 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-07-15 15:06:08 +02:00
Mario Vavti 3b73e5223e stringify_array_elms() could return weird results if the initial array key was not zero. this could trigger obscure bugs e.g. adding an empty string value to the recipients array in the notifier which could then select some broken hubloc/xchan entries. 2019-07-15 15:05:54 +02:00
Max Kostikov 6a964e7caf Merge branch 'dev' into 'dev'
Fix ETag quotes

See merge request hubzilla/core!1693
2019-07-15 11:00:55 +02:00
Max Kostikov a6f06c2d94 Fix ETag quotes 2019-07-15 10:57:04 +02:00
Mario a85f0a93c6 Merge branch 'serve-static-files' into 'dev'
Serve static files directly if not caught by web server

See merge request hubzilla/core!1691
2019-07-15 09:55:11 +02:00
Mario 250387c7e5 Merge branch 'queueworker-updates' into 'dev'
Hookify Zotlabs\Daemon\Master::Summon

See merge request hubzilla/core!1692
2019-07-15 09:51:42 +02:00
DM42.Net (Matt Dent) dde7144f5a Hookify Zotlabs\Daemon\Master::Summon 2019-07-15 00:25:19 -04:00
DM42.Net (Matt Dent) 68733a2bc0 Serve static files directly if not caught by web server 2019-07-14 23:56:11 -04:00
Mario Vavti b2d3a11de8 update certs 2019-07-13 21:30:51 +02:00
Mario Vavti a024e4c10a Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-07-13 20:00:05 +02:00
Mario Vavti db6e4d1c32 admin should be allowed to delete any item 2019-07-13 19:59:52 +02:00
Max Kostikov 8393c382c3 Merge branch 'dev' into 'dev'
Missprint in Russian translation fixed

See merge request hubzilla/core!1690
2019-07-13 09:57:41 +02:00
Max Kostikov 5c0e3688fe Missprint fixed 2019-07-13 09:48:53 +02:00
Max Kostikov 1e6c07246e Missprint fixed 2019-07-13 09:48:20 +02:00
Mario e5370971d6 Merge branch 'dev' into 'dev'
emoji reactions from hubzilla becoming top level posts on zap because of missing object

See merge request hubzilla/core!1689
2019-07-12 13:00:14 +02:00
Mario Vavti 090d921006 webfinger: better handling of URLs that contain a @ 2019-07-12 12:43:12 +02:00
zotlabs 39c0a7525b emoji reactions from hubzilla becoming top level posts on zap because of missing object 2019-07-11 20:47:38 -07:00
Mario Vavti 407b02bde8 calendar: revert back to UTC strings for dates due to better legibility. Strip timezone info from UTC string and always treat values as UTC. 2019-07-11 11:12:27 +02:00
Mario Vavti da7912b879 calendar: display date values as ISO string 2019-07-09 23:17:48 +02:00
Mario Vavti 02c08aed12 hide timezone select on allday events 2019-07-08 21:12:54 +02:00
Mario Vavti 87668f7fa8 fix typo 2019-07-03 22:13:14 +02:00
Mario 001734a725 Merge branch 'dev' into 'dev'
begin directory migration to zot6, see the code comments

See merge request hubzilla/core!1687
2019-07-02 22:02:15 +02:00
zotlabs 276ab3eae3 I'm pretty sure the LD construct 'diaspora:guid' isn't actually legal without a definition of 'diaspora' in the current or parent LD context. 2019-07-01 23:28:31 -07:00
zotlabs 1b976f30f3 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-07-01 23:28:17 -07:00
Max Kostikov 019afe2a1a Merge branch 'dev' into 'dev'
Fix missprint in German translation

See merge request hubzilla/core!1688
2019-07-01 23:44:51 +02:00
Max Kostikov 37ebcd3b4f Update hstrings.php 2019-07-01 23:40:14 +02:00
zotlabs 5ad6eeccdf add opengraph meta info to channel page 2019-06-29 16:34:06 -07:00
zotlabs 65cd33cb15 zot_finger() and Zotlabs\Zot\Finger::run() have different output. Adjusted accordingly. 2019-06-28 16:59:15 -07:00
zotlabs 4aa59226d7 I wonder how long zot_finger() has been missing and how this may have affected the directory servers. 2019-06-28 16:49:23 -07:00
zotlabs d53c98860d minor fix 2019-06-28 16:29:56 -07:00
zotlabs d022e1acce Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-06-28 16:25:00 -07:00
zotlabs 98100520eb begin directory migration to zot6, see the code comments 2019-06-28 16:21:54 -07:00
Mario Vavti 42526fc2dc decode encoded mid 2019-06-28 13:09:44 +02:00
Mario Vavti 9c76afa2a3 missing class import 2019-06-28 10:35:32 +02:00
Mario Vavti 943db4496b regenerate autoload cache 2019-06-28 09:58:22 +02:00
zotlabs 4a77b6673b support zot and zot6 in social graph operations (suggestions, common friends)
(cherry picked from commit 9def9a5cb7)
2019-06-28 09:43:06 +02:00
zotlabs 62b31b1e4a photo objects: incorrect media type on links
(cherry picked from commit 60c003733e)
2019-06-28 09:42:19 +02:00
zotlabs ddde4e1965 extend definition of direct message to anything with allow_cid but *not* allow_gid.
(cherry picked from commit 96a99935ef)
2019-06-28 09:38:28 +02:00
zotlabs 96a99935ef extend definition of direct message to anything with allow_cid but *not* allow_gid. 2019-06-27 18:37:36 -07:00
zotlabs 60c003733e photo objects: incorrect media type on links 2019-06-27 17:36:29 -07:00
zotlabs 9def9a5cb7 support zot and zot6 in social graph operations (suggestions, common friends) 2019-06-27 17:05:25 -07:00
Mario Vavti 145295302d fix typo 2019-06-27 13:45:51 +02:00
Mario Vavti 302d2dbd51 do not check send_stream permission for comments 2019-06-27 13:11:59 +02:00
Mario 49ba3ffee6 Merge branch 'httpsig' into 'dev'
http signature consolidation

See merge request hubzilla/core!1685
2019-06-27 13:05:25 +02:00
zotlabs d83ce0863a Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-06-26 21:54:50 -07:00
zotlabs cf844cb27c http signature consolidation 2019-06-26 21:45:21 -07:00
Mario Vavti 5ccef18d4e port some functions from osada 2019-06-26 14:00:44 +02:00
Mario 40bbdfdf6a Merge branch 'dev' into 'dev'
provide auto redirect from zot6 /item permalinks

See merge request hubzilla/core!1684
2019-06-26 09:21:22 +02:00
Mario ad8ad0ccd7 Merge branch 'fix-item_export-api-path' into 'dev'
Make export_page API endpoint match ZAP

See merge request hubzilla/core!1683
2019-06-26 09:21:09 +02:00
Mario 1cf012650b Merge branch 'export_items-export_all' into 'dev'
Export items export all

See merge request hubzilla/core!1680
2019-06-26 09:20:54 +02:00
zotlabs 4f280b5497 allow api login by address or url (url will use zot6 hubloc records, address can use either zot or zot6 hubloc records) 2019-06-25 18:47:16 -07:00
zotlabs 5ee7009271 provide auto redirect from zot6 /item permalinks 2019-06-25 18:37:27 -07:00
DM42.Net (Matt Dent) 07f850ed15 Make export_page API endpoint match ZAP 2019-06-23 20:23:03 -04:00
harukin dde0c41c84 edit translation 2019-06-23 10:01:54 +09:00
Max Kostikov 1b6fbe3a2e Merge branch 'dev' into 'dev'
Fix thumbnails processing logic on files sync

See merge request hubzilla/core!1682
2019-06-21 23:26:12 +02:00
Max Kostikov b1b415ec5b Fix thumbnails processing logic on files sync 2019-06-21 23:15:16 +02:00
Max Kostikov 8730bbac2f Revert "Respect photo thumbnails storage in import"
This reverts commit e8918ca149
2019-06-21 22:42:38 +02:00
Max Kostikov e8918ca149 Respect photo thumbnails storage in import 2019-06-21 22:27:27 +02:00
DM42.Net (Matt Dent) 82478eef09 export all items except photos 2019-06-21 14:23:16 -04:00
zotlabs 892e9cd835 minor zot6 compatibility issues uncovered through daily use
(cherry picked from commit becaa3b920)
2019-06-21 13:03:58 +02:00
Mario Vavti 3dd6499ac4 fix mid not dbesc'd. the comment was no longer true. this fixes an issue with mid's that contain single quotes 2019-06-21 10:37:09 +02:00
harukin 037da34e5d edit translation 2019-06-21 11:34:37 +09:00
harukin ad30d35663 edit translation 2019-06-21 11:02:14 +09:00
harukin 8d70b3b79e edit translation 2019-06-21 10:39:25 +09:00
Mario Vavti 109c66aea3 apply calendar encoding fixes to mod cal
(cherry picked from commit 24b0f8e27e)
2019-06-20 18:45:12 +02:00
Mario Vavti 24b0f8e27e apply calendar encoding fixes to mod cal 2019-06-20 18:44:23 +02:00
Mario Vavti 1a76e83fa4 fix encoding also for description and location
(cherry picked from commit f37387de80)
2019-06-20 18:40:57 +02:00
Mario Vavti 2fa788b01b various calendar UI improvements: make day- and weeknumbers clickable for navigation, hide start and end time fields in month view (only allday events can be generated there), remove the action arg from changeView().
;


(cherry picked from commit 4f705fc3f8)
2019-06-20 18:40:39 +02:00
zotlabs 028cbdcffa tweak to event title encoding to ensure it works with German, Russian, as well as angle chars
(cherry picked from commit 952e466d91)
2019-06-20 18:40:19 +02:00
zotlabs 8aefbd911b events: don't use htmlentities on local (hz) event titles as they are not being used in textareas and umlauts for instance are getting mangled on the calendar display
(cherry picked from commit c1cc76119c)
2019-06-20 18:39:58 +02:00
Mario Vavti f37387de80 fix encoding also for description and location 2019-06-20 18:34:44 +02:00
Mario Vavti 4f705fc3f8 various calendar UI improvements: make day- and weeknumbers clickable for navigation, hide start and end time fields in month view (only allday events can be generated there), remove the action arg from changeView().
;
2019-06-20 18:27:46 +02:00
Mario 5b727065cf Merge branch 'dev' into 'dev'
changes to support direct messages in zot6 (set item.item_private = 2 when...

See merge request hubzilla/core!1679
2019-06-20 17:32:10 +02:00
zotlabs 952e466d91 tweak to event title encoding to ensure it works with German, Russian, as well as angle chars 2019-06-19 22:13:03 -07:00
zotlabs c1cc76119c events: don't use htmlentities on local (hz) event titles as they are not being used in textareas and umlauts for instance are getting mangled on the calendar display 2019-06-19 21:41:46 -07:00
zotlabs 9d156141b1 changes to support direct messages in zot6 (set item.item_private = 2 when private mentions are used and federate with zot:directMessage attribute which aligns with litepub:directMessage) 2019-06-19 17:32:38 -07:00
Max Kostikov 8c92b0cd3a Merge branch 'dev' into 'dev'
Remove cached photo location directory on delete if empty

See merge request hubzilla/core!1678
2019-06-19 23:26:54 +02:00
Max Kostikov dd515da889 Remove cached photo location directory on delete if empty 2019-06-19 23:13:53 +02:00
Max Kostikov 2862b69d56 Merge branch 'dev' into 'dev'
Use html_entity_decode() for cached photo URL

See merge request hubzilla/core!1677
2019-06-19 13:26:36 +02:00
Max Kostikov db8e46184b Use html_entity_decode() for cached photo URL 2019-06-19 13:20:32 +02:00
Max Kostikov 99a7cd3cfb Merge branch 'dev' into 'dev'
Include Zot6 hubs in the Grid scope

See merge request hubzilla/core!1676
2019-06-19 10:29:19 +02:00
Max Kostikov 75746d714a Update zid.php 2019-06-19 09:39:56 +02:00
Max Kostikov 983d6d3b42 Include Zot6 hubs in the Grid scope 2019-06-18 22:17:50 +02:00
Max Kostikov 060dd8b020 Merge branch 'dev' into 'dev'
Update German and Russian translations

See merge request hubzilla/core!1674
2019-06-18 20:40:32 +02:00
Max Kostikov b5be0a2e3e Update hstrings.php 2019-06-18 20:28:23 +02:00
Max Kostikov 46a687b0a6 Update hmessages.po 2019-06-18 20:28:07 +02:00
Max Kostikov 4ff7aa4352 Update hstrings.php 2019-06-18 20:15:54 +02:00
Max Kostikov 750d1f820d Update hmessages.po 2019-06-18 20:15:40 +02:00
Mario f046a34d34 Merge branch 'patch-2' into 'master'
Fix os_path replace for thumbnails

See merge request hubzilla/core!1673
2019-06-18 19:17:33 +02:00
Max Kostikov 0d165920bb Merge branch 'dev' into 'dev'
Fix os_path replace for thumbnails

See merge request hubzilla/core!1672
2019-06-18 18:24:19 +02:00
Max Kostikov 9e3a4402e0 Fix os_path replace for thumbnails 2019-06-18 18:19:17 +02:00
Max Kostikov 34d7aea1be Fix os_path replace for thumbnails 2019-06-18 18:17:28 +02:00
Max Kostikov e2abc0b727 Merge branch 'dev' into 'dev'
Dev

See merge request kostikov/core!1
2019-06-18 11:47:26 +02:00
Max Kostikov a677a68ab7 Avoid to process original images using storeThumbnail 2019-06-18 11:31:14 +02:00
Mario Vavti df228237de fix typo
(cherry picked from commit 619b39f955)
2019-06-18 10:37:56 +02:00
Mario fc2a038ee1 Merge branch 'dev' into 'dev'
minor zot6 compatibility issues uncovered through daily use

See merge request hubzilla/core!1671
2019-06-18 10:35:50 +02:00
Mario Vavti 619b39f955 fix typo 2019-06-18 10:33:30 +02:00
zotlabs becaa3b920 minor zot6 compatibility issues uncovered through daily use 2019-06-17 18:30:05 -07:00
Mario Vavti c0b9ab930d update composer libs 2019-06-17 11:50:17 +02:00
Mario Vavti f106b1db15 changelog and version 2019-06-17 10:45:43 +02:00
Mario Vavti 958217dd55 changelog and version 2019-06-17 10:42:56 +02:00
Mario Vavti 2f80fdae97 Merge branch 'dev' 2019-06-17 10:28:47 +02:00
Mario Vavti 9507f191b0 disable events module. it is now disfunctional 2019-06-17 10:16:49 +02:00
Mario Vavti 92f5d8c8be remove old fullcalendar library 2019-06-17 10:11:36 +02:00
Mario Vavti 8535eb7bf5 update feature set 2019-06-17 10:10:44 +02:00
Mario Vavti c9604eaabf revisit mod cal 2019-06-17 10:07:00 +02:00
Mario 3bc214e544 Merge branch 'dev' into 'dev'
Add signatures processing for private messages

See merge request hubzilla/core!1670
2019-06-15 23:07:39 +02:00
Max Kostikov 43cec4398d base64 encode message signature 2019-06-15 16:03:35 +02:00
Max Kostikov 335394aaa1 Add base64 decode if signature encoded 2019-06-15 15:58:55 +02:00
Max Kostikov c9615cc19c Formatting 2019-06-14 21:08:53 +02:00
Max Kostikov 5315d8fe3f Add signature when private message displaying 2019-06-14 20:59:07 +02:00
Max Kostikov 75dedb3345 Add signature when send private message 2019-06-14 20:57:28 +02:00
Max Kostikov 134dfb8804 Formatting 2019-06-14 20:56:00 +02:00
Max Kostikov 86f4a8d33a Add signatures processing for private messages 2019-06-14 20:54:42 +02:00
Max Kostikov abeb924554 Add signatures processing for private messages 2019-06-14 20:53:43 +02:00
Max Kostikov 4da3933f24 Add signatures processing for private messages 2019-06-14 20:52:21 +02:00
Mario Vavti c5703306ef fix mod cal regression
(cherry picked from commit a26774b99e)
2019-06-14 09:53:26 +02:00
Mario Vavti a26774b99e fix mod cal regression 2019-06-14 09:52:54 +02:00
Mario 9258593776 Merge branch 'dev' into 'dev'
zot6 protocol edge case

See merge request hubzilla/core!1669
2019-06-14 09:13:57 +02:00
Mario Vavti 48604041e8 fix typo 2019-06-14 09:12:47 +02:00
harukin 110af3b524 edit translation 2019-06-14 15:07:12 +09:00
zotlabs 57ed9ec8e2 zot6 protocol edge case 2019-06-13 18:28:33 -07:00
harukin 5434b53a99 edit translation 2019-06-13 21:50:53 +09:00
harukin f4361818e0 edit translation 2019-06-13 21:34:18 +09:00
Mario Vavti 801ab611ed more work on linked item/resource deletion for photos and events, deprecate the force flag in drop_item() and comment out goaway() in drop_item(). 2019-06-13 13:34:04 +02:00
Mario Vavti bc34167c84 port delete fixes from zap 2019-06-12 12:46:29 +02:00
Mario Vavti decd0dc035 more work on event item deletion 2019-06-12 11:27:39 +02:00
Mario Vavti 9ac9c693ad initial support for deleting event items if an event is removed 2019-06-12 10:07:18 +02:00
Mario 9b2cd69c0f Merge branch 'dev' into 'dev'
attach sync issues

See merge request hubzilla/core!1668
2019-06-12 10:00:17 +02:00
zotlabs b3f1a19db6 zot6 deletion issue 2019-06-11 20:22:57 -07:00
zotlabs f3b6708a92 attach sync issues 2019-06-11 18:00:42 -07:00
harukin 99cdc7af32 edit translation 2019-06-12 09:45:14 +09:00
Mario 8848885d9a Merge branch 'patch-1' into 'master'
Add resize on image scale to 4 and 7

See merge request hubzilla/core!1667
2019-06-11 17:16:41 +02:00
Max Kostikov c1cab6789e Add resize on image scale to 4 and 7 2019-06-11 12:55:28 +02:00
Max Kostikov 907777eeb0 Add resize on image scale to 4 and 7 2019-06-11 12:53:46 +02:00
Mario Vavti 7889612edc remove sizeRangeSuffixes. they can cause issues with profile photos.
(cherry picked from commit e81e264988)
2019-06-10 22:40:36 +02:00
Mario Vavti e81e264988 remove sizeRangeSuffixes. they can cause issues with profile photos. 2019-06-10 22:39:53 +02:00
Mario eacc29ded0 add the thumbrepair script
(cherry picked from commit 15874ac45c)
2019-06-10 22:36:10 +02:00
Mario ea04c93bfd resolve merge conflict
(cherry picked from commit 761fc74a67)
2019-06-10 22:35:30 +02:00
Mario 8692977585 fix storageconv issue with postgres
(cherry picked from commit 0e2239e50b)
2019-06-10 22:35:14 +02:00
Mario 6a40f3ed60 Revert "PgSQL compatibility on conversion"
This reverts commit dd1f631d9d
2019-06-10 22:34:51 +02:00
Max Kostikov dd1f631d9d PgSQL compatibility on conversion
(cherry picked from commit 94254e61c1)
2019-06-10 22:32:54 +02:00
Mario 15874ac45c add the thumbrepair script 2019-06-10 22:30:38 +02:00
Mario 761fc74a67 resolve merge conflict 2019-06-10 21:52:29 +02:00
Mario 0e2239e50b fix storageconv issue with postgres 2019-06-10 21:49:34 +02:00
Max Kostikov e9a17517d3 Merge branch 'dev' into 'dev'
PgSQL compatibility on conversion

See merge request hubzilla/core!1665
2019-06-10 20:03:55 +02:00
Max Kostikov 94254e61c1 PgSQL compatibility on conversion 2019-06-10 19:51:55 +02:00
harukin 32eb81d4ae edit translation 2019-06-09 22:50:56 +09:00
harukin 6f7e38b94c edit translation 2019-06-09 22:46:17 +09:00
harukin 87f271af29 Merge branch 'origin' into 'japanese'
Update 4.2

See merge request harukin/core!60
2019-06-09 22:04:05 +09:00
harukin ff74310e32 fix conflict 2019-06-09 22:01:25 +09:00
harukin a181fa2992 Merge branch 'origin' into 'master'
Update 4.2

See merge request harukin/core!56
2019-06-09 11:19:02 +09:00
harukin 76e879e5de Merge branch 'origin' into 'develop'
Update 4.2

See merge request harukin/core!55
2019-06-09 10:54:57 +09:00
harukin c01ab3ed39 edit translation 2019-06-08 20:17:36 +09:00
Mario Vavti 9f403a4d6b fix css issue
(cherry picked from commit 55792d5528)
2019-06-07 09:58:51 +02:00
Mario Vavti 55792d5528 fix css issue 2019-06-07 09:51:26 +02:00
Mario Vavti a3f726baa8 fix embedphotos image size
(cherry picked from commit ebc2b23c3a)
2019-06-07 08:45:58 +02:00
Mario Vavti ebc2b23c3a fix embedphotos image size 2019-06-07 08:45:08 +02:00
Mario Vavti e4ca3609d9 Merge branch '4.2RC' 2019-06-04 10:19:04 +02:00
Mario Vavti bc092d8d78 version 4.2 2019-06-04 10:16:06 +02:00
Mario Vavti dd5933b048 Merge branch 'dev' into 4.2RC 2019-06-04 10:13:59 +02:00
Mario Vavti 5d6128b25c update changelog 2019-06-04 10:13:25 +02:00
Mario Vavti 24cb04c346 do not change default timezone in parse_ical_file()
(cherry picked from commit f1b54cf0a4)
2019-06-03 22:43:20 +02:00
Mario Vavti f1b54cf0a4 do not change default timezone in parse_ical_file() 2019-06-03 22:37:03 +02:00
Mario Vavti e64a7b87a8 fix timezone issue when importing adjusted events
(cherry picked from commit 2b452ea3e8)
2019-06-03 21:04:51 +02:00
Mario Vavti 2b452ea3e8 fix timezone issue when importing adjusted events 2019-06-03 21:03:43 +02:00
Mario 66c6c6c7d1 regard timezones in calendar import/export
(cherry picked from commit 5b4aa1afc2)
2019-06-03 13:27:16 +02:00
Mario 5b4aa1afc2 regard timezones in calendar import/export 2019-06-03 13:25:48 +02:00
Mario Vavti 89205276ab update changelog
(cherry picked from commit 6d2ab6a7d6)
2019-06-03 11:49:04 +02:00
Mario Vavti 6d2ab6a7d6 update changelog 2019-06-03 11:48:30 +02:00
Mario Vavti e6da910ee2 Merge branch 'dev' into 4.2RC 2019-06-03 11:44:31 +02:00
Max Kostikov 2100ac3cfc Merge branch 'dev' into 'dev'
fix category widget when using articles

See merge request hubzilla/core!1664
2019-05-31 23:28:09 +02:00
zotlabs c7476a1d96 fix category widget when using articles 2019-05-31 14:19:04 -07:00
Max Kostikov d8c3033941 Merge branch 'dev' into 'dev'
live-update not triggering on mod_search

See merge request hubzilla/core!1662
2019-05-30 19:50:58 +02:00
Max Kostikov 7e26ee5a73 Merge branch 'dev' into 'dev'
Add single photo URL rewrite for clonned channel

See merge request hubzilla/core!1663
2019-05-30 13:45:20 +02:00
Max Kostikov a8e25ccfe6 Add single photo URL rewrite for clonned channel 2019-05-30 13:41:32 +02:00
zotlabs b6267ec7c2 live-update not triggering on mod_search 2019-05-29 17:04:27 -07:00
Mario Vavti b6bd2884d5 Merge branch 'dev' into 4.2RC 2019-05-29 09:08:40 +02:00
Mario 767a235611 Merge branch 'dev' into 'dev'
support 'expires' over Zot6

See merge request hubzilla/core!1661
2019-05-29 09:06:52 +02:00
zotlabs 620fc06b6c anomolies in calls to datetime_convert in include/import 2019-05-28 23:14:22 -07:00
zotlabs 0fa4c89a1b convert AS "instrument" objects to the more appropriate "generator" - this probably should happen in pubcrawl addon also 2019-05-28 20:23:03 -07:00
zotlabs 1bf046c142 Revert "another forum -> group wording change" (wrong tree)
This reverts commit 7c2aafd4ee.
2019-05-28 16:35:41 -07:00
zotlabs 52f8429218 support 'expires' over Zot6 2019-05-28 16:28:03 -07:00
zotlabs 932b414063 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-05-28 16:16:29 -07:00
Mario Vavti 097b2390db update changelog
(cherry picked from commit ca8d252ad7)
2019-05-28 12:31:48 +02:00
Mario Vavti ca8d252ad7 update changelog 2019-05-28 12:07:14 +02:00
Mario Vavti 23a0dbe3cc 4.2RC2 2019-05-27 08:19:23 +02:00
Mario Vavti 545ece82b3 Merge branch '4.2RC' of https://framagit.org/hubzilla/core into 4.2RC 2019-05-27 08:09:36 +02:00
Mario Vavti eaea947b74 Merge branch 'dev' into 4.2RC 2019-05-27 08:07:26 +02:00
Mario Vavti f1b61d5882 mod cal band-aid fixes 2019-05-26 20:22:40 +02:00
Mario Vavti e466d72058 adjust birthday handling according to community decision and slightly change display of allday event items 2019-05-26 18:05:11 +02:00
Mario Vavti 385be35ed5 fix #1374
(cherry picked from commit 528b9b6a60)
2019-05-24 12:27:14 +02:00
Mario Vavti 528b9b6a60 fix #1374 2019-05-24 10:27:45 +02:00
Mario Vavti dd374eaebf get channel from photo uid
(cherry picked from commit 9ea483d1dc)
2019-05-24 09:59:17 +02:00
Mario Vavti 9ea483d1dc get channel from photo uid 2019-05-24 09:57:46 +02:00
harukin d8a396bf24 new style translation 2019-05-23 18:08:19 +09:00
Mario Vavti b1813df61a add new directory fallback server 2019-05-23 08:46:16 +02:00
Mario Vavti 8715f74d29 Merge branch 'dev' into 4.2RC 2019-05-23 08:44:44 +02:00
Mario Vavti 152224944b add new directory fallback server 2019-05-23 08:43:48 +02:00
Mario Vavti f86d12c8f4 Merge branch 'dev' into 4.2RC 2019-05-23 08:37:52 +02:00
Mario 94d4bc4bac Merge branch 'dev' into 'dev'
translate make-friend activities to zot6

See merge request hubzilla/core!1654
2019-05-22 12:59:41 +02:00
Mario Vavti c95488549d Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-05-22 12:41:01 +02:00
Mario Vavti 39613aa2d9 improve timezone detection for caldav and remove smart birthday feature. Force adjust birthdays until we agree on how to deal with this. 2019-05-22 12:40:37 +02:00
zotlabs 7c2aafd4ee another forum -> group wording change 2019-05-21 18:23:45 -07:00
Mario Vavti e834c7fe3e remove unused code 2019-05-21 12:31:50 +02:00
Mario Vavti f96958adf8 fix all day events for caldav calendars 2019-05-21 12:29:00 +02:00
zotlabs 776074b24f translate make-friend activities to zot6 2019-05-20 19:03:10 -07:00
Mario Vavti c9d64d75f3 move smart birthday feature to calendar settings and override the adjust flag at display time instead of import 2019-05-20 13:51:53 +02:00
Mario Vavti 9651689bb8 fix event notifications viewall url 2019-05-20 13:14:54 +02:00
Mario 75be0475ba Merge branch 'es-es' into 'dev'
Update es-es

See merge request hubzilla/core!1651
2019-05-20 13:08:37 +02:00
Mario e130b58b20 Merge branch 'es-es' into '4.2RC'
Update es-es

See merge request hubzilla/core!1652
2019-05-20 13:06:55 +02:00
Mario Vavti e44f0c497f be more precise with table selection 2019-05-20 12:34:05 +02:00
Mario Vavti 2d0f96d28b Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-05-20 12:27:00 +02:00
Mario Vavti 34d1f79777 calendar merge: initial commit for timezone support 2019-05-20 12:26:33 +02:00
Manuel Jiménez Friaza 2185ccd4ea Merge branch 'cherry-pick-350e636e' into 'es-es'
Updated Spanish translation

See merge request mjfriaza/core!7
2019-05-19 14:03:17 +02:00
Manuel Jiménez Friaza 125634759d Updated Spanish translation
(cherry picked from commit 350e636e3d)
2019-05-19 13:57:04 +02:00
Manuel Jiménez Friaza 350e636e3d Updated Spanish translation 2019-05-19 13:52:17 +02:00
Manuel Jiménez Friaza 429140df97 Merge remote-tracking branch 'upstream/dev' into dev 2019-05-19 13:25:00 +02:00
Xanthor a921deafd1 Fix a really disturbing comment
(cherry picked from commit 823c0434eb)

(cherry picked from commit af2b263bc7)
2019-05-17 12:28:41 +02:00
Mario Vavti 071fba2f71 wiki: urlencode the entire share link
(cherry picked from commit aa120e0478)
2019-05-17 12:28:13 +02:00
Mario Vavti 9de729e3e7 wiki: urlencode the entire share link
(cherry picked from commit aa120e0478)
2019-05-17 12:27:54 +02:00
Mario Vavti 7cf5bd30f2 use escape_tags() wiki headers
(cherry picked from commit e7f1f496c5)
2019-05-17 12:27:18 +02:00
Mario Vavti e6cee2965a use escape_tags() wiki headers
(cherry picked from commit e7f1f496c5)
2019-05-17 12:26:03 +02:00
Xanthor af2b263bc7 Fix a really disturbing comment
(cherry picked from commit 823c0434eb)
2019-05-17 12:25:22 +02:00
Mario Vavti aa120e0478 wiki: urlencode the entire share link 2019-05-17 12:24:25 +02:00
Mario b07c55a0d9 Merge branch 'patch-1' into 'master'
Fix a really disturbing comment

See merge request hubzilla/core!1650
2019-05-17 12:01:21 +02:00
Mario Vavti e7f1f496c5 use escape_tags() wiki headers 2019-05-17 11:57:41 +02:00
Xanthor 823c0434eb Fix a really disturbing comment 2019-05-17 05:23:12 +02:00
Mario Vavti 22162635e7 calendar merge: only export events that will not break the importer. this will probably dismiss some old experimental entries
(cherry picked from commit 8be0031602)
2019-05-15 18:25:59 +02:00
Mario Vavti 8be0031602 calendar merge: only export events that will not break the importer. this will probably dismiss some old experimental entries 2019-05-15 18:21:52 +02:00
Mario Vavti 29c5e74d31 missing backslash
(cherry picked from commit 3c8867a1e8)
2019-05-15 11:40:36 +02:00
Mario Vavti 3c8867a1e8 missing backslash 2019-05-15 11:38:23 +02:00
Mario Vavti c439fe0437 add autocomplete js to calendar and fix issue with extended likes mid
(cherry picked from commit 15a000bb45)
2019-05-14 09:14:04 +02:00
Max Kostikov b21db670b4 Fix comments scroll button CSS
(cherry picked from commit d0322f5fbd)
2019-05-14 09:13:40 +02:00
Mario Vavti 1f84aa9809 css fixes
(cherry picked from commit c1f01b7e35)
2019-05-14 09:13:19 +02:00
Mario Vavti 4ac249c26c deal with privacy mentions in event descriptions
(cherry picked from commit 71064f481b)
2019-05-14 09:13:02 +02:00
zotlabs 85a29fce94 bbcode map bypass wasn't catching all map forms.
(cherry picked from commit 436293713b)
2019-05-14 09:12:35 +02:00
Mario 71ecb470b6 Merge branch 'dev' into 'dev'
bbcode map bypass wasn't catching all map forms.

See merge request hubzilla/core!1647
2019-05-14 09:10:48 +02:00
Mario Vavti 15a000bb45 add autocomplete js to calendar and fix issue with extended likes mid 2019-05-14 09:09:48 +02:00
Max Kostikov 18e4a7ac6e Merge branch 'dev' into 'dev'
Fix comments scroll button CSS

See merge request hubzilla/core!1649
2019-05-13 23:19:19 +02:00
Max Kostikov d0322f5fbd Fix comments scroll button CSS 2019-05-13 23:16:36 +02:00
Mario Vavti c1f01b7e35 css fixes 2019-05-13 22:00:40 +02:00
Mario Vavti 71064f481b deal with privacy mentions in event descriptions 2019-05-13 15:45:05 +02:00
zotlabs 436293713b bbcode map bypass wasn't catching all map forms. 2019-05-13 05:14:43 -07:00
Mario Vavti fc726bfb4b fix button size 2019-05-13 13:11:14 +02:00
Mario Vavti b0c3780667 fix button size 2019-05-13 13:02:23 +02:00
Mario Vavti 3e431c65be bump version 2019-05-13 12:17:08 +02:00
Mario Vavti 5b0b90d1f5 bump version, update autoload cache and update strings 2019-05-13 12:13:18 +02:00
Mario Vavti d16714e84b calendar merge: cleanup 2019-05-13 11:30:13 +02:00
Mario Vavti 1d5fff9f58 upgrade jgrowl 2019-05-13 10:53:10 +02:00
Mario Vavti fbe8d6144a port db_indexes() from zap 2019-05-13 10:46:12 +02:00
Mario Vavti d5f59a57bf don't do oembed processing on naked links and smarty lib cleanup. ported from zap. 2019-05-13 10:39:40 +02:00
Mario Vavti 7465c79884 optimise oembed pdf processing so we do not actually load the content, which could cause performance issues. ported from zap. 2019-05-13 10:28:06 +02:00
Mario Vavti 769195fcff Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-05-13 10:14:06 +02:00
Mario Vavti dc786bd1cc form security token for mod register ported from zap 2019-05-13 10:13:51 +02:00
Max Kostikov 960f4ed649 Merge branch 'dev' into 'dev'
Add new Russian translations

See merge request hubzilla/core!1646
2019-05-12 17:15:01 +02:00
Max Kostikov 91ad3bf1b6 Update hstrings.php 2019-05-12 17:09:59 +02:00
Max Kostikov 91b495d526 Update hmessages.po 2019-05-12 17:09:15 +02:00
Mario Vavti 973d91d120 add btlogger to unxmlify() 2019-05-11 16:42:53 +02:00
Max Kostikov bf5deace8e Merge branch 'dev' into 'dev'
Replace photo URL for gallery on clonned channel post sync

See merge request hubzilla/core!1645
2019-05-11 15:46:16 +02:00
Max Kostikov 0e4acf6299 Replace photo URL for gallery on clonned channel post sync 2019-05-11 15:40:04 +02:00
Mario a5cd0061c5 Merge branch 'dev' into 'dev'
use 'cache' flag to bbcode() on content destined for Zot6. We've seen rendered...

See merge request hubzilla/core!1644
2019-05-11 15:39:31 +02:00
Mario Vavti 630e3903fa bump version 2019-05-10 15:44:15 +02:00
Mario Vavti 0b6a5fad70 update justified gallery lib 2019-05-10 14:55:37 +02:00
Mario Vavti 67ca1b82cc css fix for bootstrap 4.3.1 2019-05-10 14:36:11 +02:00
Mario Vavti 9866053f0c update bootstrap to version 4.3.1 2019-05-10 14:21:36 +02:00
Mario Vavti 89a2c1a09c fix issue with color selector 2019-05-10 13:56:03 +02:00
Mario Vavti 70220d8b9c typo 2019-05-10 12:21:50 +02:00
Mario Vavti 274f69526f calendar merge: implement channel calendar import in cdav/calendar 2019-05-10 12:18:37 +02:00
zotlabs d7026fe36b use 'cache' flag to bbcode() on content destined for Zot6. We've seen rendered map HTML in a couple of places and these should never be rendered for outgoing content as they will only be purified on the other end. 2019-05-09 22:06:32 -07:00
Max Kostikov b9b65d7dfb Merge branch 'dev' into 'dev'
remove the caldav and event app and make calendar the default app

See merge request hubzilla/core!1643
2019-05-09 19:40:47 +02:00
Max Kostikov 1545c78d05 Merge branch 'dev' into 'dev'
Add 'Create' button translation in CalDAV

See merge request hubzilla/core!1642
2019-05-09 14:41:12 +02:00
Mario Vavti f0c292e77b remove the caldav and event app and make calendar the default app 2019-05-09 14:39:40 +02:00
Max Kostikov 62336127e3 Add 'Create' button translation 2019-05-09 14:36:02 +02:00
Max Kostikov 5beaf8ac98 Add 'Create' button translation 2019-05-09 14:34:58 +02:00
Mario Vavti 9efd484e27 calendar merge: cleanup and comment out some unused code 2019-05-09 13:43:20 +02:00
Max Kostikov 44d5cf980a Merge branch 'dev' into 'dev'
another DB update to fix uid_mid index in item table and add xchan_photo_m index to xchan table

See merge request hubzilla/core!1641
2019-05-08 23:30:48 +02:00
Mario Vavti e53650d6c6 another DB update to fix uid_mid index in item table and add xchan_photo_m index to xchan table 2019-05-08 20:12:54 +02:00
Max Kostikov 5bf9a9828c Merge branch 'channel_update' into 'dev'
Channel update

See merge request hubzilla/core!1639
2019-05-08 19:55:21 +02:00
Mario 24f3bc9f0c Channel update 2019-05-08 19:55:21 +02:00
Mario Vavti c200e55f95 remove option which should never have slipped into dev branch 2019-05-08 16:15:26 +02:00
Max Kostikov ea19d59fca Merge branch 'dev' into 'dev'
Replace own image URL in clonned channel posts

See merge request hubzilla/core!1638
2019-05-08 10:43:06 +02:00
Max Kostikov d34d14c1f4 Replace own image URL in clonned channel posts 2019-05-08 10:40:46 +02:00
Max Kostikov 7b17306dbd Merge branch 'dev' into 'dev'
Change thumbnails processing logic on image edit

See merge request hubzilla/core!1637
2019-05-08 08:32:57 +02:00
Max Kostikov 6731564c2d Update Photos.php 2019-05-08 08:30:25 +02:00
Max Kostikov 194ba0cf8d Update PhotoDriver.php 2019-05-08 08:28:35 +02:00
Max Kostikov 6fc2429540 Merge branch 'dev' into 'dev'
Respect thumbnail storage location on image editing

See merge request hubzilla/core!1636
2019-05-08 01:54:18 +02:00
Max Kostikov bdcbe61273 Respect thumbnail storage location on image editing 2019-05-08 01:52:10 +02:00
Max Kostikov de5d7bfbd3 Add photo usage detection if not exist on thumbnail save 2019-05-08 00:49:41 +02:00
Mario 242878c45c Merge branch 'dev' into 'dev'
possible xchan confusion include/follow

See merge request hubzilla/core!1635
2019-05-06 13:49:17 +02:00
zotlabs c0911da887 review of last commit 2019-05-06 04:19:54 -07:00
zotlabs 6e0bf04276 possible xchan (protocol) confusion in include/follow 2019-05-06 04:15:34 -07:00
Max Kostikov 56c460d932 Merge branch 'dev' into 'dev'
Remove 'os_syspath' from direct 'photo' table update

See merge request hubzilla/core!1634
2019-05-06 10:46:11 +02:00
Max Kostikov f0933b66a9 Remove 'os_syspath' from direct 'photo' table update 2019-05-06 10:39:47 +02:00
Max Kostikov 422d633f89 Add system.filesystem_storage_thumbnails description 2019-05-05 20:17:32 +02:00
Max Kostikov 0537be129c More precise scroll back to initial comment in thread 2019-05-05 19:00:00 +02:00
Max Kostikov 9b947c8370 Merge branch 'dev' into 'dev'
Threaded comments usability imrovements

See merge request hubzilla/core!1633
2019-05-05 18:15:58 +02:00
Max Kostikov 14eb4326e7 Scroll back to initial low level comment 2019-05-05 18:13:00 +02:00
Max Kostikov 89a3e8fcc7 Use own variable for "Go to previous comment" hint 2019-05-05 18:10:53 +02:00
Max Kostikov 6fd5133bed Force to add "go to previous comment" hint 2019-05-05 18:09:25 +02:00
Max Kostikov e010877490 Scroll back if more than one level in thread 2019-05-05 18:07:44 +02:00
Max Kostikov f56371c79b Merge branch 'dev' into 'dev'
Threaded comments navigation elements fixes

See merge request hubzilla/core!1632
2019-05-05 15:41:17 +02:00
Max Kostikov c98f3c5d29 Threaded comments navigation elements fixes 2019-05-05 15:38:08 +02:00
Max Kostikov 5c8de9d82f Allign arrows position 2019-05-05 14:28:15 +02:00
Mario b9c8b6ba23 Merge branch 'dev' into 'dev'
Add arrows to scroll between related comments

See merge request hubzilla/core!1629
2019-05-05 14:14:07 +02:00
Max Kostikov 6cd968b53b Add arrows to scroll between related comments 2019-05-05 14:14:07 +02:00
Max Kostikov 2aa76d257c Merge branch 'db_update' into 'dev'
port db update improvements from zap

See merge request hubzilla/core!1628
2019-05-04 22:37:21 +02:00
Max Kostikov 32c0be8bde Merge branch 'dev' into 'dev'
found another case where channel_r_photos could get referenced

See merge request hubzilla/core!1631
2019-05-04 12:05:38 +02:00
zotlabs 88d283a89d found another case where channel_r_photos could get referenced 2019-05-04 02:58:57 -07:00
Max Kostikov 66b370c421 Merge branch 'dev' into 'dev'
strip obsolete channel_(rw)_photos from channel sync packets

See merge request hubzilla/core!1630
2019-05-04 10:32:31 +02:00
zotlabs 20bf139b3f strip obsolete channel_(rw)_photos from channel sync packets 2019-05-03 15:27:26 -07:00
Mario Vavti 1da4602567 port db update improvements from zap 2019-05-03 15:13:13 +02:00
Max Kostikov e7ef69e6e7 Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1627
2019-05-03 14:59:58 +02:00
Max Kostikov d55904d4db Update hstrings.php 2019-05-03 14:52:43 +02:00
Max Kostikov 740dc59255 Update hmessages.po 2019-05-03 14:52:08 +02:00
Mario 98b6362c07 Merge branch 'dev' into 'dev'
removing items from ex-connections turns out to be more complicated than originally envisioned

See merge request hubzilla/core!1626
2019-05-03 14:16:56 +02:00
Mario Vavti cd829c096b update directory on cover photo changes 2019-05-03 14:11:14 +02:00
zotlabs f127c55802 removing items from ex-connections turns out to be more complicated than originally envisioned 2019-05-03 04:09:04 -07:00
zotlabs 13247a0e00 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-05-03 04:04:02 -07:00
Max Kostikov 609752d331 Merge branch 'revert-3528610a' into 'dev'
Revert "Fix comment edit field expansion on reply on comment"

See merge request kostikov/core!1
2019-05-03 10:09:54 +02:00
Max Kostikov 413410d02d Revert "Fix comment edit field expansion on reply on comment"
This reverts commit 3528610a51
2019-05-03 10:09:54 +02:00
Max Kostikov 3528610a51 Fix comment edit field expansion on reply on comment 2019-05-03 10:03:40 +02:00
Mario Vavti 59ee045c24 parent -> id 2019-05-03 09:01:53 +02:00
zotlabs b1dec12893 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-05-03 00:00:00 -07:00
zotlabs 319b0acdd8 fix item query 2019-05-02 23:58:51 -07:00
Mario c605c46f83 Merge branch 'replyto_fixes' into 'dev'
provide xchan_url if there is no xchan_addr

See merge request hubzilla/core!1622
2019-05-03 08:41:01 +02:00
Mario 9ef692b48c Merge branch 'dev' into 'dev'
work on emoji reactions - sync with matching update to addons

See merge request hubzilla/core!1623
2019-05-03 08:39:01 +02:00
Mario 6da4dfe605 Merge branch 'unfriend_delete_posts_bug' into 'dev'
Unfriend delete posts bug

See merge request hubzilla/core!1624
2019-05-03 08:36:58 +02:00
zotlabs 7b4cb31a10 when removed items for unfriended connections, check if the parent has been retained, not just the item 2019-05-02 22:34:34 -07:00
zotlabs 03ce4d7e2b Merge branch 'dev' of ../hz into dev 2019-05-02 21:19:15 -07:00
zotlabs f55f5fa92a emojireaction compat 2019-05-02 21:18:54 -07:00
zotlabs 76757ad1f2 Merge branch 'dev' of /home/macgirvin/hz into dev 2019-05-02 20:33:45 -07:00
zotlabs 347e88dc65 move apschema to core to use for emojiReaction mapping for zot6 2019-05-02 20:32:26 -07:00
Mario Vavti 746d032e58 more provide xchan_url if there is no xchan_addr 2019-05-02 13:05:52 +02:00
Mario Vavti b6d598a001 provide xchan_url if there is no xchan_addr 2019-05-02 12:58:24 +02:00
Max Kostikov b35961c53c Merge branch 'dev' into 'dev'
Add check if threads are enabled globally

See merge request hubzilla/core!1621
2019-05-02 11:42:39 +02:00
Max Kostikov 47fba5827b Merge branch 'dev' into 'dev'
# Conflicts:
#   Zotlabs/Lib/ThreadItem.php
2019-05-02 11:33:07 +02:00
Max Kostikov 47f75ad8bf Add check if threads are enabled globally 2019-05-02 11:28:29 +02:00
Max Kostikov 516167c0f8 Revert "Merge branch 'dev' into 'dev'"
This reverts merge request !1620
2019-05-02 10:58:00 +02:00
Mario 238b3a97a8 Merge branch 'dev' into 'dev'
Check if 'reply on comment' enabled for this profile

See merge request hubzilla/core!1620
2019-05-02 10:48:55 +02:00
Max Kostikov d4ab8a5a5d Check if 'reply on comment' enabled for this profile 2019-05-02 10:40:33 +02:00
Mario Vavti 6672299f8a calendar merge: use b64 encoded mid for plink 2019-05-02 10:11:08 +02:00
Max Kostikov ea5f515f18 Merge branch 'dev' into 'dev'
Add Zap threads support

See merge request hubzilla/core!1619
2019-05-02 08:33:51 +02:00
Max Kostikov ea6293544d Add Zap threads support 2019-05-02 08:30:38 +02:00
Max Kostikov cbe35281b9 Merge branch 'dev' into 'dev'
Add AS threaded comments support

See merge request hubzilla/core!1618
2019-05-01 21:45:12 +02:00
Max Kostikov 51a0fc45e2 Add threaded comments support 2019-05-01 21:40:43 +02:00
Max Kostikov 1e7e2bd34f Update Item.php 2019-05-01 19:10:46 +02:00
Max Kostikov fa2f3d136f Merge branch 'xmlify' into 'dev'
address xmlify/unxmlify performance issue

See merge request hubzilla/core!1616
2019-05-01 16:41:19 +02:00
Max Kostikov 92b6026695 Merge branch 'dev' into 'dev'
Use thr_parent tp handle reply on comment feature

See merge request hubzilla/core!1617
2019-05-01 16:10:40 +02:00
Mario Vavti c9a5f21344 calendar merge: remove deprecated share variable 2019-05-01 15:52:17 +02:00
Max Kostikov 0174bf3722 Fix missprint 2019-05-01 15:49:17 +02:00
Max Kostikov 0d003e7450 Preserve parent_mid with threaded comments 2019-05-01 15:45:12 +02:00
Mario Vavti 8847838c43 address xmlify/unxmlify performance issue 2019-05-01 15:40:06 +02:00
Mario Vavti 9594ce9a8a calendar merge: fix event_xchan mixup 2019-05-01 15:35:20 +02:00
Max Kostikov 4a91d09c86 Use thr_parent for comment replies 2019-05-01 15:33:59 +02:00
Max Kostikov 06837bd32b Revert code to use thr_parent for comment replies 2019-05-01 15:12:01 +02:00
Mario b8d8887d5a Merge branch 'dev' into 'dev'
a couple of issues with the suggestions when viewing from the directory module

See merge request hubzilla/core!1615
2019-05-01 10:07:07 +02:00
Mario 256f8dd41b Merge branch 'dev' into 'dev'
Add 'reply on comment' feature

See merge request hubzilla/core!1614
2019-05-01 10:06:24 +02:00
zotlabs e0fdafc7e5 Merge branch 'dev' of ../hz into dev 2019-04-30 23:39:56 -07:00
zotlabs 9a55df245f disable directory options when using suggestion mode and only return one page (60 items)
so that sorting works correctly
2019-04-30 23:38:48 -07:00
zotlabs 9800d95c50 fix suggestion ordering in directory module 2019-04-30 23:19:04 -07:00
Max Kostikov c340416c94 Add 'reply on comment' code 2019-05-01 06:24:58 +02:00
Max Kostikov 9af8a1d30c Move JS to main module 2019-05-01 06:23:56 +02:00
Max Kostikov 4da96ee980 Remove 'doreply' JS function 2019-04-30 17:35:53 +02:00
Max Kostikov 21637e033c Add JS 'doreply' function 2019-04-30 17:34:56 +02:00
Max Kostikov 9ebf2dc97b Add "reply to" hint to submit button 2019-04-30 17:33:54 +02:00
Mario Vavti a04689b784 do not allow editing events that do not belong to us 2019-04-30 12:08:19 +02:00
Max Kostikov 5066945adc Fix add multiple icons on 'Submit' button when reply on comment 2019-04-30 11:17:22 +02:00
Max Kostikov e945c12856 Add displaying support for threaded comments 2019-04-30 11:00:13 +02:00
Mario Vavti 0b062d0b8a select event by event_hash instead of item_id 2019-04-30 10:47:48 +02:00
Mario Vavti 9cc1eff15c remove logging 2019-04-30 00:12:19 +02:00
Mario Vavti 327e5d06e1 calendar merge: implement single event editing UI 2019-04-30 00:09:57 +02:00
Max Kostikov a2dd0aea92 Merge branch 'cherry-pick-80ca2023' into 'dev'
Add 'reply on comment' feature

See merge request kostikov/core!1
2019-04-29 23:45:58 +02:00
Max Kostikov 39da3459c7 Add 'reply on comment' feature
(cherry picked from commit 80ca2023aa67ef7c0c43414acaf135e5748044b2)
2019-04-29 23:43:11 +02:00
Max Kostikov c0be4c36e1 Update main.js 2019-04-29 23:40:21 +02:00
Max Kostikov 31e04378cd Add 'reply to comment' processing 2019-04-29 23:30:51 +02:00
Max Kostikov e80c99ad74 Add 'reply to comment' button 2019-04-29 23:29:16 +02:00
Max Kostikov d9be443e53 Add initial threaded comments support 2019-04-29 23:26:20 +02:00
Max Kostikov 6db323b15e Add variables for threaded comments support 2019-04-29 23:24:48 +02:00
Max Kostikov 5abbfd3f19 Add initial threaded comment support 2019-04-29 23:21:17 +02:00
Mario 674215e9e6 Merge branch 'dev' into 'dev'
Add jot videos inline and with poster if possible

See merge request hubzilla/core!1613
2019-04-29 11:58:59 +02:00
Mario Vavti dce6a5763d calendar merge: d&d support and some minor cleanup and fixes 2019-04-29 11:45:55 +02:00
zotlabs d89d6e8a01 Merge branch 'dev' of ../hz into dev 2019-04-28 18:21:41 -07:00
zotlabs 6230dbed2d Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-28 18:21:28 -07:00
zotlabs 9641254443 event attachments still weren't being delivered to zot6 2019-04-28 18:20:40 -07:00
zotlabs 95871fe13c Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-28 17:47:26 -07:00
Max Kostikov 0cecfceb14 Merge branch 'sql_fixes' into 'dev'
possible sql performance improvement

See merge request hubzilla/core!1611
2019-04-28 20:59:53 +02:00
harukin b9f1cb2021 Merge branch 'origin' into 'japanese'
Update 4.0.3

See merge request harukin/core!54
2019-04-28 18:00:17 +09:00
harukin 3f208d806c Merge branch 'origin' into 'master'
Update 4.0.3

See merge request harukin/core!53
2019-04-28 17:58:16 +09:00
harukin ba9ea3f02a Merge branch 'origin' into 'develop'
Update 4.0.3

See merge request harukin/core!52
2019-04-28 17:52:03 +09:00
zotlabs 13970280d9 Merge branch 'dev' of ../hz into dev 2019-04-27 17:22:00 -07:00
zotlabs 55ce80aabe Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-27 17:21:42 -07:00
zotlabs 9536a490b3 Add jot videos inline and with poster if possible 2019-04-27 17:20:38 -07:00
Mario Vavti 405e07f0a2 improve channel date query 2019-04-27 23:01:05 +02:00
Max Kostikov d3ce91bd89 Merge branch 'dev' into 'dev'
Use goaway() base function

See merge request hubzilla/core!1612
2019-04-27 21:47:57 +02:00
Max Kostikov eb44201c5f Use goaway() base function 2019-04-27 21:38:54 +02:00
Mario Vavti 73248aadd5 possible sql performance improvement 2019-04-27 15:35:41 +02:00
Mario f6a4084f81 bump version 2019-04-26 11:30:23 +02:00
Mario Vavti d5f89c165a update changelog
(cherry picked from commit a518471a27)
2019-04-26 11:29:01 +02:00
Mario Vavti a518471a27 update changelog 2019-04-26 11:28:06 +02:00
zotlabs dce5080e53 permissions cleanup
(cherry picked from commit 2d886b65ce)
2019-04-26 10:52:35 +02:00
zotlabs 2221d4d612 add attachments to zot6 event objects, add zot6 to federated transports (webfinger)
(cherry picked from commit 0615709a7a)
2019-04-26 10:43:56 +02:00
Zot 5f73a46c05 import/export zot6 hublocs+xchans
(cherry picked from commit e2dfa1d72f)
2019-04-26 10:42:09 +02:00
Zot b782c6bd16 update fix_system_urls() to handle zot6 hublocs (recommend cherry-pick to master)
(cherry picked from commit f8c583636c)
2019-04-26 10:41:52 +02:00
Zot ab8d8aa552 hubloc confusion in magic auth
(cherry picked from commit 3c8f8b76aa)
2019-04-26 10:41:35 +02:00
Daniel Lowe f955276694 Fix infinite loop using postgres as backend
unescapebin is handed a string in some cases, and it causes an infinite
loop when it does.  This ensures that the argument is a resource before
loading its contents.


(cherry picked from commit 9a6531e2a2)
2019-04-26 10:41:04 +02:00
zotlabs 77cc60faf2 required php version not available but allowed to continue
(cherry picked from commit 6feddcbced)
2019-04-26 10:40:02 +02:00
Mario a6f50b8c85 Merge branch 'dev' into 'dev'
import/export zot6 hublocs+xchans

See merge request hubzilla/core!1610
2019-04-26 09:34:58 +02:00
Zot e2dfa1d72f import/export zot6 hublocs+xchans 2019-04-26 09:34:58 +02:00
zotlabs 9a61c0a6fc Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-26 00:28:29 -07:00
zotlabs e10b25a12c Merge branch 'dev' of ../hz into dev 2019-04-26 00:25:32 -07:00
zotlabs 0c1e803208 import/export zot6 hublocs+xchans 2019-04-26 00:24:58 -07:00
Mario b57dcc74d1 Merge branch 'dev' into 'dev'
update fix_system_urls() to handle zot6 hublocs (recommend cherry-pick to master)

See merge request hubzilla/core!1609
2019-04-26 09:12:23 +02:00
Zot f8c583636c update fix_system_urls() to handle zot6 hublocs (recommend cherry-pick to master) 2019-04-26 09:12:23 +02:00
zotlabs e6521d1cf3 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-25 21:49:18 -07:00
zotlabs 96785e8df1 update fix_system_urls() to handle zot6 hublocs 2019-04-25 21:45:04 -07:00
Mario d689778465 Merge branch 'dev' into 'dev'
hubloc confusion in magic auth

See merge request hubzilla/core!1608
2019-04-25 11:54:37 +02:00
Zot 3c8f8b76aa hubloc confusion in magic auth 2019-04-25 11:54:37 +02:00
Mario Vavti c123fa5422 update blueimp/jquery-file-upload 2019-04-25 11:50:26 +02:00
Mario Vavti 0ade8be7f7 add missing files 2019-04-25 11:47:59 +02:00
Mario Vavti a60c2f38c6 update sabre/vobject 2019-04-25 11:47:18 +02:00
Mario f1c0797780 Revert "update composer libs"
This reverts commit e779335d06
2019-04-25 11:24:09 +02:00
Mario 701167bc12 Revert "fix test"
This reverts commit c5fca0a1e7
2019-04-25 11:22:45 +02:00
Mario a39e63e324 Revert "dbunit does not work wirh phpunit v 8.1.3 - try 7.5.9"
This reverts commit 8401e9c2b4
2019-04-25 11:22:21 +02:00
Mario Vavti 8401e9c2b4 dbunit does not work wirh phpunit v 8.1.3 - try 7.5.9 2019-04-25 11:14:40 +02:00
Mario Vavti c5fca0a1e7 fix test 2019-04-25 10:52:57 +02:00
Mario Vavti e779335d06 update composer libs 2019-04-25 08:52:50 +02:00
zotlabs 26039adf5b compound name warning 2019-04-24 16:31:31 -07:00
zotlabs c88286556a hubloc confusion during magic auth where hublocs with more than one network may exist 2019-04-24 16:21:59 -07:00
zotlabs 831b9d4433 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-24 16:21:13 -07:00
Mario e937e8fff9 Merge branch 'dev' into 'dev'
Add modification date in Etag hash calculation and optimize cached photos processing

See merge request hubzilla/core!1607
2019-04-24 21:11:19 +02:00
Mario Vavti f616b2d49a calendar merge: bring back event categories 2019-04-24 14:48:30 +02:00
Max Kostikov fe84dae313 Optimize cached photos processing 2019-04-24 11:18:17 +02:00
Max Kostikov 9104933b18 Add modified date in Etag hash calculation 2019-04-24 11:13:17 +02:00
Max Kostikov 79654635d3 Merge branch 'update-docs' into 'dev'
Update docs

See merge request hubzilla/core!1606
2019-04-22 19:49:08 +02:00
Max Kostikov f0edfca75c Merge branch 'fix-infinite-loop' into 'dev'
Fix infinite loop using postgres as backend

See merge request hubzilla/core!1605
2019-04-22 19:47:49 +02:00
Daniel Lowe e845da2edc Tidy up various bits of documentation 2019-04-22 15:50:02 +00:00
Daniel Lowe 7a3050f2c0 Remove section on techlevels 2019-04-22 15:49:39 +00:00
Daniel Lowe 9a6531e2a2 Fix infinite loop using postgres as backend
unescapebin is handed a string in some cases, and it causes an infinite
loop when it does.  This ensures that the argument is a resource before
loading its contents.
2019-04-21 11:14:17 +00:00
Max Kostikov a6a17a85f3 Merge branch 'calendar_merge' into 'dev'
calendar merge - initial checkin

See merge request hubzilla/core!1599
2019-04-20 20:14:58 +02:00
Mario Vavti 9275fd16c2 resolve merge conflict 2019-04-20 10:23:11 +02:00
Max Kostikov 904ae05810 Merge branch 'dev' into 'dev'
Add anti SEO link properties in directory listing

See merge request hubzilla/core!1603
2019-04-19 23:19:38 +02:00
Max Kostikov 54f95389a8 Add anti SEO link properties in directory listing 2019-04-19 23:17:24 +02:00
Max Kostikov a8fc70a5b9 Merge branch 'dev' into 'dev'
Fix update button in cdav_calendar.tpl

See merge request hubzilla/core!1602
2019-04-19 21:26:48 +02:00
Max Kostikov c374072822 Update cdav_calendar.tpl 2019-04-19 21:22:42 +02:00
Max Kostikov 0212de68a4 Merge branch 'dev' into 'dev'
Add translation to calendar event update button

See merge request hubzilla/core!1601
2019-04-19 21:14:29 +02:00
Max Kostikov 2ea9b6d409 Add translation to update button 2019-04-19 21:11:34 +02:00
Max Kostikov 823d71df28 Merge branch 'dev' into 'dev'
Fix translation to update button

See merge request hubzilla/core!1600
2019-04-19 21:06:09 +02:00
Max Kostikov 7560918b32 Add translation to update button 2019-04-19 21:04:00 +02:00
Mario Vavti fd87faa7a6 Merge branch 'dev' into calendar_merge 2019-04-19 19:37:06 +02:00
Mario Vavti cb2d706fa1 provide location and description information 2019-04-19 19:06:01 +02:00
Mario 6b638ac896 Merge branch 'dev' into 'dev'
Add remove profile photo button

See merge request hubzilla/core!1598
2019-04-19 17:23:10 +02:00
Mario Vavti 2bd5ae3617 provide link to source and some cleanup 2019-04-19 17:21:45 +02:00
Mario Vavti 39a5311315 Merge branch 'dev' into calendar_merge 2019-04-19 15:34:02 +02:00
Mario Vavti 9b6e46dc6b calendar merge initial commit 2019-04-19 15:32:56 +02:00
Max Kostikov 7311d1182d Add remove profile photo button 2019-04-19 15:30:05 +02:00
Max Kostikov ea1d8b8104 Add remove profile photo button 2019-04-19 15:29:08 +02:00
Mario fb03e3f00e Merge branch 'dev' into 'dev'
required php version not available but allowed to continue

See merge request hubzilla/core!1597
2019-04-19 15:19:43 +02:00
Mario c9c35255e7 Merge branch 'dev' into 'dev'
Precise cache related headers processing; remove duplicated code and optimization

See merge request hubzilla/core!1596
2019-04-19 15:19:19 +02:00
Mario 99a578dbad Merge branch 'homeinstall_certbot' into 'dev'
Letsencrypt: replaced dehydrated by certbot. Backup: replaced rsnaphsot by...

See merge request hubzilla/core!1592
2019-04-19 15:18:42 +02:00
zotlabs e56c0a6251 Merge branch 'dev' of ../hm into dev 2019-04-18 13:59:06 -07:00
zotlabs 66479e2aa7 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-18 13:58:43 -07:00
zotlabs 6feddcbced required php version not available but allowed to continue 2019-04-18 13:53:39 -07:00
Max Kostikov db020ca1a3 Update Photo.php 2019-04-18 21:55:06 +02:00
Max Kostikov 6c93518ef7 Merge branch 'dev' into 'dev'
add attachments to zot6 event objects, add zot6 to federated transports (webfinger)

See merge request hubzilla/core!1593
2019-04-18 20:59:41 +02:00
Max Kostikov eb02d01eed Update Photo.php 2019-04-18 10:13:03 +02:00
Max Kostikov 7a9093f634 Implement ETag: header support for cache control 2019-04-18 09:50:37 +02:00
harukin d55f691ec0 Merge branch 'origin' into 'japanese'
Update 4.0.2

See merge request harukin/core!51
2019-04-18 06:40:08 +09:00
harukin f222030edb Merge branch 'origin' into 'master'
Update 4.0.2

See merge request harukin/core!50
2019-04-18 06:39:16 +09:00
harukin 5f691fb05c Merge branch 'origin' into 'develop'
Update 4.0.2

See merge request harukin/core!48
2019-04-18 06:33:41 +09:00
Max Kostikov 1732b2dfe3 Add 'must-revalidate' to Cache-control header for profile photos 2019-04-17 23:15:46 +02:00
Max Kostikov a62f891a60 Precise 'Modified:' header processing if no profile photo added; remove duplicated code 2019-04-17 18:30:50 +02:00
zotlabs a22ecd42ed Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-16 18:34:41 -07:00
Max Kostikov b7cb2a2951 Merge branch 'dev' into 'dev'
Fix file path with filesystem storage

See merge request hubzilla/core!1595
2019-04-16 22:26:53 +02:00
Max Kostikov c490970324 Fix file path with filesystem storage 2019-04-16 22:24:48 +02:00
Max Kostikov 5a9c8a9343 Merge branch 'dev' into 'dev'
Use base image content instead of os_path; fix base images stats

See merge request hubzilla/core!1594
2019-04-16 17:37:07 +02:00
Max Kostikov 5ba7e5d7d7 Use base image content instead of os_path; fix base images stats 2019-04-16 17:31:27 +02:00
zotlabs f7b281a65f Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-15 22:29:50 -07:00
zotlabs df5a1c59e6 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-15 20:53:44 -07:00
zotlabs 0615709a7a add attachments to zot6 event objects, add zot6 to federated transports (webfinger) 2019-04-15 20:51:57 -07:00
OJ Random d85a0130b7 Letsencrypt: replaced dehydrated by certbot. Backup: replaced rsnaphsot by rsync. Readme: changed install instructions. 2019-04-15 21:01:13 +02:00
Mario 71f17a233e Merge branch 'dev' into 'dev'
Extending GitLab CI/CD.

See merge request hubzilla/core!1589
2019-04-15 17:52:52 +02:00
Max Kostikov 25c35cbbe4 Merge branch 'dev' into 'dev'
Update INSTALL.txt

See merge request hubzilla/core!1591
2019-04-15 15:20:51 +02:00
Max Kostikov 257ba570ee Update INSTALL.txt 2019-04-15 15:18:35 +02:00
Max Kostikov 91e96b2314 Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1590
2019-04-15 12:55:34 +02:00
Max Kostikov c2ee7cbff5 Update Russian hstrings.php 2019-04-15 12:25:40 +02:00
Max Kostikov 27f813e043 Update Russian hmessages.po 2019-04-15 12:24:51 +02:00
Max Kostikov 00ed91f12e Fix space in plurals regexp 2019-04-15 12:23:55 +02:00
Max Kostikov 4cb5efc277 Add command line tool for thumbnails storage convertion 2019-04-14 20:16:16 +02:00
Klaus Weidenbach 65a453d21b Extending GitLab CI/CD.
Add PHP7.3 image and .gitlab-ci.yml restructuring.
Use YAML Anchors for job templates.
Add more DB/PHP version combinations.
2019-04-13 22:55:03 +02:00
Mario 9c8cb4dea3 Merge branch 'dev' into 'dev'
Thumbnails storage in filesystem or database implementation

See merge request hubzilla/core!1588
2019-04-13 21:19:06 +02:00
Max Kostikov ed902fdb70 Update photo usage only for thumbnails 2019-04-13 14:12:58 +02:00
Max Kostikov 509067391b Update xchan profile edited date only once 2019-04-13 14:08:44 +02:00
Max Kostikov 04b261057d Set 'os_syspath' with local path 2019-04-12 22:34:32 +02:00
Max Kostikov 852343f254 Override received 'content' if we saving thumbnail in filesystem 2019-04-12 16:27:58 +02:00
Max Kostikov 26e35344d0 Add multiple profiles support on image operations in photo driver 2019-04-12 15:53:00 +02:00
Max Kostikov d3a619659f Fix 'os_syspath' if we store thumbnails in filesystem 2019-04-12 15:38:10 +02:00
Max Kostikov 979f2415fb Save profile photo in filesystem or database; more precise modification time processing 2019-04-12 15:06:59 +02:00
Max Kostikov 28c1d219f6 Save cover photo thumbnails in filesystem or database 2019-04-12 15:03:59 +02:00
Max Kostikov 5792f4bf07 Add comment on required changes in upcoming releases 2019-04-12 15:00:56 +02:00
Max Kostikov 3a0fa5cb29 Store thumbnails in filesystem or database 2019-04-12 14:59:13 +02:00
Max Kostikov 074ee656f0 Fetch thumbnails and store it in filesystem or DB; update xchan profile edit time on fetch 2019-04-12 14:56:07 +02:00
Mario 064f93185c Merge branch 'dev' into 'dev'
Fix use UNIX socket file to connect DB

See merge request hubzilla/core!1587
2019-04-12 14:49:01 +02:00
Max Kostikov 4b5922f652 Fix wrong image resolution selection 2019-04-10 22:09:10 +02:00
Max Kostikov 85be906b68 Fix image scale on thumbnail save 2019-04-10 14:44:50 +02:00
Max Kostikov 775285cdf8 Update comment htconfig.sample.php 2019-04-10 14:14:14 +02:00
Max Kostikov 42f96dc7a6 Fix use UNIX socket file to connect DB 2019-04-10 14:13:16 +02:00
Mario e96fa64625 Merge branch 'dev' into 'dev'
Dev

See merge request hubzilla/core!1586
2019-04-10 13:25:57 +02:00
Mario 8dc495c9bc Merge branch 'dev' into 'dev'
Initial preparation to move local thumbnails in filesystem storage

See merge request hubzilla/core!1585
2019-04-10 13:25:03 +02:00
Max Kostikov 5d70d889e9 Revert "Update htconfig.sample.php"
This reverts commit f2126ef18c8b66020305d07dcefeacc4e55a3c12
2019-04-10 13:25:03 +02:00
zotlabs 999ae6eb49 typo 2019-04-08 17:03:08 -07:00
zotlabs ae1450bbcf missing endTime on Zot6 encoded events, optimise the url fetch of embedphotos 2019-04-08 16:45:07 -07:00
Mario Vavti dcd8a05809 version bump 2019-04-08 11:12:02 +02:00
Mario Vavti 62e466f774 Merge branch 'dev' 2019-04-08 11:10:10 +02:00
Mario Vavti 70777a047d Merge branch 'master' of https://framagit.org/hubzilla/core 2019-04-08 11:09:55 +02:00
Mario Vavti 47fd95db9d more changelog 2019-04-08 11:03:33 +02:00
Mario Vavti 7602d9e54b changelog and version bump 2019-04-08 11:00:21 +02:00
zotlabs 1ed0079882 Merge branch 'dev' of https://gitlab.com/macgirvin/hubzilla into dev 2019-04-07 19:23:38 -07:00
Mario Vavti b026be410c Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-04-07 22:48:33 +02:00
Mario Vavti 767a1711ff enable list views 2019-04-06 16:10:50 +02:00
zotlabs a93bd8d944 security: perms_pending not evaluated correctly
(cherry picked from commit 5a46f1229d)
2019-04-06 10:30:32 +02:00
Mario 4e12f86e90 Merge branch 'dev' into 'dev'
security: perms_pending not evaluated correctly

See merge request hubzilla/core!1583
2019-04-06 10:27:30 +02:00
Mario Vavti 3007009fab upgrade cdav calendar to version 4 2019-04-06 10:22:03 +02:00
zotlabs 2d886b65ce permissions cleanup 2019-04-05 18:06:59 -07:00
zotlabs 8700b87030 Merge branch 'dev' of ../hz into dev 2019-04-05 16:48:04 -07:00
zotlabs 5a46f1229d security: perms_pending not evaluated correctly 2019-04-05 16:46:52 -07:00
Max Kostikov 9d5f8883a7 Merge branch 'dev' into 'dev'
Prevent return wrong profile photo modification date by plugin

See merge request hubzilla/core!1582
2019-04-05 14:24:22 +02:00
Max Kostikov 8e0b9b82e9 Update Photo.php 2019-04-05 14:21:05 +02:00
Max Kostikov ea4b4ddce4 Update Photo.php 2019-04-05 14:17:39 +02:00
Max Kostikov bd95c7b82a Update Photo.php 2019-04-05 14:15:40 +02:00
Max Kostikov e20c5cf9cf Prevent return wrong profile photo modification date by plugin 2019-04-05 14:10:48 +02:00
Mario 6adb489cb3 Merge branch 'dev' into 'dev'
Sync cover photo removal with clones

See merge request hubzilla/core!1581
2019-04-04 16:46:40 +02:00
Max Kostikov 0c2db1cea5 Skip removal if no cover image found 2019-04-04 11:00:19 +02:00
Max Kostikov e33604887b Sync cover photo removal with clones 2019-04-03 12:05:22 +02:00
Max Kostikov 410f37df1b Fix sync cover photo for clonned channels 2019-04-03 00:15:34 +02:00
Mario c9f3883c8c Remove suggest channels from features 2019-04-02 15:12:32 +02:00
Mario 4346d7605d Revert "Revert "suggestion widget using feature_enabled still - upgrade to use apps.""
This reverts commit a0a2c27973
2019-04-02 14:59:35 +02:00
Mario a0a2c27973 Revert "suggestion widget using feature_enabled still - upgrade to use apps."
This reverts commit b2bdc73164
2019-04-02 14:55:03 +02:00
Max Kostikov 3fb87ee76e Merge branch 'cover_photo_fixes' into 'dev'
missing string

See merge request hubzilla/core!1580
2019-04-01 17:26:27 +02:00
Max Kostikov 242aeea24c Add text to cover remove button 2019-04-01 13:15:16 +02:00
Mario Vavti c305dc8d22 missing string 2019-04-01 12:55:36 +02:00
Mario f61b898633 Merge branch 'dev' into 'dev'
Add remove cover photo function

See merge request hubzilla/core!1577
2019-04-01 12:42:28 +02:00
Mario 2bdcd436bb Merge branch 'dev' into 'dev'
check service class limits when syncing files

See merge request hubzilla/core!1578
2019-04-01 12:42:07 +02:00
zotlabs a1bea7d7cc Merge branch 'dev' of ../hz into dev 2019-03-31 16:23:04 -07:00
zotlabs b2bdc73164 suggestion widget using feature_enabled still - upgrade to use apps. 2019-03-31 16:22:02 -07:00
zotlabs cbaf0a3864 check service class limits when syncing files 2019-03-30 15:11:13 -07:00
zotlabs 103563b375 we no longer use xchan_instance_url - this is an abook thing 2019-03-30 15:10:28 -07:00
Max Kostikov 595429fdde Add submit button styling 2019-03-30 23:08:41 +01:00
Max Kostikov b384b27546 Revert "Add submit button styling"
This reverts commit 0b996245d5
2019-03-30 23:05:37 +01:00
Max Kostikov 0b996245d5 Add submit button styling 2019-03-30 23:01:07 +01:00
Max Kostikov 1ee91dd690 Add remove cover photo processing 2019-03-30 22:55:36 +01:00
Max Kostikov f9e602c44c Add remove cover button 2019-03-30 22:54:20 +01:00
M. Dent 4fa827ddfd Merge branch 'connections_ordering' into 'dev'
add backend support for connections ordering

See merge request hubzilla/core!1576
2019-03-29 18:19:06 +01:00
Mario Vavti 1b3c73618c backslash 2019-03-29 15:51:31 +01:00
Mario Vavti 7b08f1cc8c missing use declaration 2019-03-29 15:50:10 +01:00
Max Kostikov 7d392e5adb Merge branch 'z6_discover_fixes' into 'dev'
fix various issues in z6_discover() and add zot6 hubloc creation on channel import

See merge request hubzilla/core!1575
2019-03-29 15:28:28 +01:00
Mario Vavti f44cc2b60c fix typo 2019-03-28 15:56:28 +01:00
Mario Vavti 31680898e3 another fix for z6_discover() and create a zot6 hubloc if applicable 2019-03-28 15:51:24 +01:00
Mario Vavti 318fd7c9e3 add backend support for connections ordering 2019-03-27 20:42:56 +01:00
Mario Vavti b10b8ca3f4 fix various issues in z6_discover() 2019-03-27 15:20:43 +01:00
Max Kostikov b0c33308be Fix wrong bracket 2019-03-27 00:34:38 +01:00
Max Kostikov 1421c4e9d3 Merge branch 'dev' into 'dev'
Fix wrong permissions on attached images in personal messages

See merge request hubzilla/core!1574
2019-03-27 00:26:26 +01:00
Max Kostikov f55dfc9025 Fix wrong permissions on attached images in personal messages 2019-03-27 00:17:14 +01:00
Max Kostikov c218970890 Merge branch 'duplicate_fixes_1' into 'dev'
if we have an uuid deduplicate by uuid otherwise by mid

See merge request hubzilla/core!1573
2019-03-25 12:24:36 +01:00
Mario bd27ce2520 Merge branch 'patch-20190324a' into 'dev'
Add ITEM_TYPE_CUSTOM support to Zotlabs/Module/Display.php

See merge request hubzilla/core!1572
2019-03-25 11:58:38 +01:00
Mario Vavti 44795b65f9 if we have an uuid deduplicate by uuid otherwise by mid 2019-03-25 11:33:01 +01:00
DM42.Net (Matt Dent) af84c4e6bd Add ITEM_TYPE_CUSTOM support to Zotlabs/Module/Display.php 2019-03-24 22:56:18 -04:00
Mario Vavti 0a28207200 fix wrong field name 2019-03-24 21:45:23 +01:00
Mario Vavti 8ca2a5832c Revert "item_store(): deduplicate by mid OR uuid"
This reverts commit d8ce0d0df0.
2019-03-24 21:22:20 +01:00
Max Kostikov 333534dfe7 Merge branch 'items_fixes' into 'dev'
item_store(): deduplicate by mid OR uuid possible fix for #1349

See merge request hubzilla/core!1570
2019-03-24 16:45:21 +01:00
Mario Vavti d8ce0d0df0 item_store(): deduplicate by mid OR uuid 2019-03-24 15:51:31 +01:00
Mario Vavti 28c3259449 Revert "item_store(): deduplicate by mid OR uuid"
This reverts commit 0d0ede7b14.
2019-03-24 15:49:03 +01:00
Mario Vavti 0d0ede7b14 item_store(): deduplicate by mid OR uuid 2019-03-24 15:47:57 +01:00
M. Dent 9ebf6bcc92 Merge branch 'core_fixes' into 'dev'
Core fixes

See merge request hubzilla/core!1569
2019-03-24 03:20:24 +01:00
Mario 9d186e9ba3 add punify() again 2019-03-23 22:53:29 +01:00
Mario 3c3a4526bf fix typo 2019-03-23 22:49:27 +01:00
Mario 3094c2ce17 fix subthread on sys channel items 2019-03-23 22:48:52 +01:00
Mario 393494a728 fix revert accidental moving of Features.php 2019-03-23 22:01:46 +01:00
Mario d2725c3f49 aparently we do not use underscores anymore. this fixes spaming of dreports with recipient not found entries for our own xchan 2019-03-23 21:50:50 +01:00
Mario 4d4425a5bf fix variables for xporof_locale and xprof_postcode 2019-03-23 20:57:22 +01:00
Mario c11fbe0868 revert accidental moving of Features.php 2019-03-23 20:33:43 +01:00
Mario c676689df0 fix 48 hours timeframe check and remove unused var in mod changeaddr 2019-03-23 20:32:15 +01:00
Mario 0f5625d721 revert accidental moving of Enotify.php 2019-03-23 20:22:11 +01:00
Mario 6f5e6bd0f1 fix typo 2019-03-23 20:17:35 +01:00
Mario a0af092ecb fix wrong variable in unused function 2019-03-23 20:01:20 +01:00
Mario 3a07a194ab Webfinger::zot_url() requires a string (webfinger address), empty var given in update_directory_entry() 2019-03-23 19:42:22 +01:00
Mario 682ffa7cf5 db_columns() requires a string, empty var given in process_channel_sync_delivery() 2019-03-23 19:21:28 +01:00
zotlabs dc4a4ca9d3 nomadic is not a parameter in the hz version of encode_item_collection 2019-03-21 18:00:33 -07:00
harukin 3c2b6ce112 Merge branch 'origin' into 'master'
marge from origin 4.1

See merge request harukin/core!47
2019-03-21 21:43:10 +09:00
harukin f8b3a395fb Merge branch 'origin' into 'japanese'
marge from origin 4.1

See merge request harukin/core!46
2019-03-21 21:42:57 +09:00
harukin 087b45ab90 Merge branch 'origin' into 'develop'
marge from origin 4.1

See merge request harukin/core!45
2019-03-21 21:42:45 +09:00
Mario Vavti 33ac85f637 bump version 2019-03-21 11:16:35 +01:00
Mario Vavti efd9421dc9 Merge branch 'dev' 2019-03-21 11:13:54 +01:00
Mario Vavti 9b696a872b bump version 2019-03-21 11:01:57 +01:00
Mario Vavti aab515b16c optimize autoload cache and update changelog 2019-03-21 11:01:01 +01:00
Mario f220628354 Merge branch 'dev' into 'dev'
hubzilla core issue #1356 , permissions not getting decrypted on follow

See merge request hubzilla/core!1563
2019-03-21 09:46:36 +01:00
Mario Vavti 322bc5dc87 another whitespace to trigger tests 2019-03-21 09:37:23 +01:00
zotlabs 75c3bda866 hubzilla core issue #1356 , permissions not getting decrypted on follow 2019-03-20 16:09:34 -07:00
Mario Vavti b2b776169b just whitespace to trigger a new build test 2019-03-20 14:02:18 +01:00
M. Dent 8e8d7ae614 Merge branch 'video' into 'dev'
Video

See merge request hubzilla/core!1561
2019-03-20 03:17:01 +01:00
Mario fa1af5a2cb Video 2019-03-20 03:17:01 +01:00
Max Kostikov a27e4072b4 Merge branch 'update_1231' into 'dev'
mysql: remove some unused indices and add thr_parent index. pgsql: sync...

See merge request hubzilla/core!1560
2019-03-19 11:18:23 +01:00
Mario Vavti fad26a49be mysql: remove some unused indices and add thr_parent index. pgsql: sync indices with mysql indices after testing on hub.disroot.org and add thr_parent 2019-03-19 10:52:10 +01:00
Mario 1742159345 Merge branch 'dev' into 'dev'
messagefilter enhancements and fix for advisory permissions edge case

See merge request hubzilla/core!1559
2019-03-19 09:17:39 +01:00
zotlabs ed8d2cb482 Merge branch 'dev' of https://gitlab.com/macgirvin/hubzilla into dev 2019-03-18 20:42:58 -07:00
zotlabs 8e1f022810 share encoding issue between hz and zap 2019-03-18 20:41:59 -07:00
Mike Macgirvin 4c25072c18 Merge branch 'dev' of https://gitlab.com/macgirvin/hubzilla into dev 2019-03-19 13:13:21 +11:00
Mike Macgirvin 564ec32520 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-19 13:12:39 +11:00
zotlabs a743feb040 Merge branch 'dev' of ../hz into dev 2019-03-18 19:10:38 -07:00
zotlabs b028667de1 messagefilter enhancements, fix edge case in unsupported advisory privacy 2019-03-18 19:09:12 -07:00
M. Dent 41888f84bc Merge branch 'dev' into 'dev'
composer: add phpmd and phpcs to require-dev

See merge request hubzilla/core!1557
2019-03-19 00:56:29 +01:00
Mike Macgirvin 6a918dbde9 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-19 09:05:27 +11:00
Mario Vavti 578230e32c fix typos
(cherry picked from commit d486b03089)
2019-03-18 21:59:09 +01:00
Mario Vavti d486b03089 fix typos 2019-03-18 21:58:18 +01:00
Mario Vavti 8559334339 some more xss prevention
(cherry picked from commit 968c6ed8be)
2019-03-18 21:37:02 +01:00
Mario Vavti 968c6ed8be some more xss prevention 2019-03-18 21:30:25 +01:00
Mario Vavti 8893d9edc4 use urlencode
(cherry picked from commit 2ec3e4a912)
2019-03-18 13:31:25 +01:00
Mario Vavti 43753ec113 ENT_COMPAT will only take care of double-quotes. Use double-quotes here to prevent XSS
(cherry picked from commit a086745ec0)
2019-03-18 13:31:03 +01:00
Mario Vavti 2ec3e4a912 use urlencode 2019-03-18 13:29:08 +01:00
Mario Vavti a086745ec0 ENT_COMPAT will only take care of double-quotes. Use double-quotes here to prevent XSS 2019-03-18 13:19:24 +01:00
Mario 51156d0582 Merge branch 'dev' into 'dev'
misc fixes

See merge request hubzilla/core!1558
2019-03-18 09:35:53 +01:00
Zot ea9925f489 clone systems apps to the extent possible, auto-configure imagick thumbnail binary during setup if possible 2019-03-18 09:35:53 +01:00
zotlabs 026b96b8f2 clone systems apps to the extent possible, auto-configure imagick thumbnail binary during setup if possible 2019-03-17 17:56:29 -07:00
zotlabs 136b2ae37f calling unserialize on array in util/service_class 2019-03-17 15:49:01 -07:00
Mike Macgirvin 97009a2748 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-18 08:55:54 +11:00
Mario e123f7c743 add phpmd and phpcs to require-dev 2019-03-17 21:42:14 +01:00
Max Kostikov e28bde6ccd Merge branch 'dreport_fixes' into 'dev'
fix dreport redeliver

See merge request hubzilla/core!1556
2019-03-17 12:16:20 +01:00
zotlabs a976f418e3 use php_eol for all mail header generation 2019-03-16 15:28:21 -07:00
zotlabs 3c701e780c use the php_eol constant for encoded subjects 2019-03-16 15:23:17 -07:00
Mario Vavti 769dd174bd fix dreport redeliver 2019-03-15 23:10:17 +01:00
Mario e92514ee63 Merge branch 'dev' into 'dev'
email_header_encode() producing output that is not spec compliant

See merge request hubzilla/core!1555
2019-03-15 19:12:51 +01:00
zotlabs 8ebc517b41 Merge branch 'dev' of ../hz into dev 2019-03-14 21:19:56 -07:00
zotlabs 91b03e52f1 email_header_encode() producing lines of illegal length because header field length was not considered in length calculation. 2019-03-14 21:18:17 -07:00
M. Dent a22406c9f8 Merge branch 'cleanup' into 'dev'
Cleanup and fixes

See merge request hubzilla/core!1554
2019-03-15 02:51:51 +01:00
Mario ebc3666c6f Cleanup and fixes 2019-03-15 02:51:51 +01:00
Mario Vavti f1fee1239b Merge branch 'dev' 2019-03-14 09:40:26 +01:00
Mario 8769fa0156 Merge branch 'dev' into 'dev'
two compatibility issues zot/zot6

See merge request hubzilla/core!1553
2019-03-14 09:38:46 +01:00
Mike Macgirvin f4d7338687 Merge branch 'dev' of https://gitlab.com/macgirvin/hubzilla into dev 2019-03-14 10:34:22 +11:00
zotlabs 6a8c3f82ef Merge branch 'dev' of ../hz into dev 2019-03-13 16:32:27 -07:00
zotlabs 05bcbfa28c signature issue for zot6 content imported from zotfeeds to hubzilla 2019-03-13 16:31:37 -07:00
Mike Macgirvin 6a55500c1b Merge branch 'dev' of https://gitlab.com/macgirvin/hubzilla into dev 2019-03-14 10:30:01 +11:00
zotlabs a5a5ac60ba find unregistered z6 clones on hubzilla sites (does not happen automatically since z6 is not the default protocol on hubzilla). This will need to be pushed to master for the next point release. 2019-03-13 16:27:52 -07:00
M. Dent 6ed7f47b3f Merge branch 'core_fixes_2' into 'dev'
add zot6 to clonable networks

See merge request hubzilla/core!1552
2019-03-13 18:16:33 +01:00
Mario Vavti a3e94855f9 add zot6 to clonable networks 2019-03-13 17:48:00 +01:00
Mario 503da97a79 Merge branch 'dev' into 'dev'
Dev

See merge request hubzilla/core!1551
2019-03-13 09:40:19 +01:00
Mike Macgirvin 088a93e023 limit 1 2019-03-13 13:21:04 +11:00
Mike Macgirvin 30f71ad632 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-13 10:42:25 +11:00
Mike Macgirvin 0026849821 Merge branch 'dev' of https://gitlab.com/macgirvin/hubzilla into dev 2019-03-13 10:40:23 +11:00
zotlabs cf5a310286 rework authenticated item fetches (check ACL on the parent, not on the requested item) 2019-03-12 16:17:34 -07:00
zotlabs 72384ff2cb add owner permission checks to AS item fetch 2019-03-12 15:17:25 -07:00
Mario c33ef01af8 Merge branch 'dev' into 'dev'
perform zot6 discovery in import_author_xchan

See merge request hubzilla/core!1550
2019-03-12 13:40:04 +01:00
zotlabs 11116bdcb7 typos 2019-03-12 03:40:43 -07:00
zotlabs 09a5cf4e68 Merge branch 'dev' of ../hz into dev 2019-03-11 22:24:13 -07:00
zotlabs a9172129d2 check zot6 in import_author_xchan 2019-03-11 22:17:36 -07:00
Mike Macgirvin 3ec06705ca perform zot6 discovery in import_author_xchan 2019-03-12 16:12:29 +11:00
zotlabs 5fb0d38ad8 security updates for multiple xchans 2019-03-11 16:29:12 -07:00
Mario 9ed5cddb89 Merge branch 'dev' into 'dev'
init_groups_visitor: include xchans from all zot-like networks

See merge request hubzilla/core!1549
2019-03-11 09:38:27 +01:00
zotlabs 4e97fb0e58 testing init_groups_visitor changes - also add virtual groups for both zot identities 2019-03-10 22:32:37 -07:00
zotlabs 1688e373bc Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-10 15:52:07 -07:00
zotlabs cada0b6df1 init_groups_visitor: include xchans from all zot-like networks 2019-03-10 15:50:45 -07:00
Mario 91358010a0 Merge branch 'dev' into 'dev'
non-critical: port zot_record_preferred()

See merge request hubzilla/core!1546
2019-03-10 11:40:33 +01:00
zotlabs 51024d3821 authenticated fetch fixes 2019-03-09 12:58:03 -08:00
harukin b329d998ca Merge branch 'japanese' into 'develop'
marge from origin 4.0

See merge request harukin/core!44
2019-03-09 18:03:04 +09:00
harukin 482f1dba27 Merge branch 'japanese' into 'master'
add Japanese translation

See merge request harukin/core!43
2019-03-09 18:02:35 +09:00
harukin 23fc7e65d4 Merge branch 'origin' into 'master'
marge from origin 4.0

See merge request harukin/core!42
2019-03-09 17:59:08 +09:00
harukin 8f594ad6d9 Merge branch 'origin' into 'japanese'
marge from origin 4.0

See merge request harukin/core!41
2019-03-09 17:58:02 +09:00
harukin d8d46039a2 Merge branch 'origin' into 'develop'
marge from origin 4.0

See merge request harukin/core!40
2019-03-09 17:48:31 +09:00
harukin 19e1325604 edit translation 2019-03-09 17:36:26 +09:00
zotlabs 220d6ed494 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-08 14:56:13 -08:00
zotlabs b5ed3edc8f port zot_record_preferred 2019-03-08 14:51:30 -08:00
Mario Vavti 9772726065 merge text.php and hmessages.po 2019-03-08 12:32:20 +01:00
Mario Vavti 8ecdde6cb5 Merge branch '4.0RC' 2019-03-08 11:52:57 +01:00
Mario Vavti 73c96f35c1 update changelog
(cherry picked from commit 5b3824917d)
2019-03-08 11:48:52 +01:00
Mario Vavti 5b3824917d update changelog 2019-03-08 11:48:01 +01:00
Mario Vavti ca4f10dc5e bump version 2019-03-08 11:46:36 +01:00
Mario 853fb33913 $sender is supposed to be string in libzot
(cherry picked from commit 507c71f64c)
2019-03-08 09:45:15 +01:00
zotlabs e352cfc861 fetch private objects using delivery channel credentials
(cherry picked from commit 1f7622e4c4)
2019-03-08 09:35:04 +01:00
M. Dent b8d79d9132 Merge branch 'core_fixes_1' into 'dev'
$sender is supposed to be string in libzot

See merge request hubzilla/core!1544
2019-03-08 05:45:02 +01:00
Mario 507c71f64c $sender is supposed to be string in libzot 2019-03-08 05:45:02 +01:00
zotlabs ce0067d8eb It is in fact the 'Content Import' app string that needs to be translated. A previous commit errantly included the string 'Content Filter'. But don't remove 'Content Filter'. That is actually a thing in Zap and will eventually make its way to Hubzilla. 2019-03-07 20:01:41 -08:00
M. Dent c0b238b19a Merge branch 'dev' into 'dev'
fetch private objects using delivery channel credentials

See merge request hubzilla/core!1545
2019-03-08 02:48:03 +01:00
zotlabs d961cf21fb Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-07 16:05:15 -08:00
zotlabs 1f7622e4c4 fetch private objects using delivery channel credentials 2019-03-07 15:45:42 -08:00
Mario Vavti b019ca0746 update changelog
(cherry picked from commit 04fe7e61de)
2019-03-07 09:32:39 +01:00
Mario Vavti 04fe7e61de update changelog 2019-03-07 09:32:12 +01:00
zotlabs beb4e00afb guest access tokens: xchan record not created on URL login
(cherry picked from commit 0b2213dd41)
2019-03-07 09:30:38 +01:00
Mario 3e6607585f Merge branch 'dev' into 'dev'
guest access tokens: xchan record not created on URL login

See merge request hubzilla/core!1543
2019-03-07 09:29:21 +01:00
zotlabs 0b2213dd41 guest access tokens: xchan record not created on URL login 2019-03-06 19:01:28 -08:00
Mario Vavti 9450305568 changelog
(cherry picked from commit 08725c44c6)
2019-03-06 21:10:51 +01:00
Mario Vavti 08725c44c6 changelog 2019-03-06 21:08:56 +01:00
Mario Vavti e18c64c9d9 bump version 2019-03-06 10:02:33 +01:00
Mario Vavti 7b018c60cb while in legacy zot $sender is expected to be an array, in zot6 $sender is expected to be a string (xchan_hash)
(cherry picked from commit 117a8cafca)
2019-03-06 09:58:11 +01:00
M. Dent a81286c795 Add CURLOPT_CONNECTTIMEOUT
(cherry picked from commit 0c05e6593e)
2019-03-06 09:56:01 +01:00
Mario 75a66b716e Merge branch 'patch-20190305a' into 'dev'
Add CURLOPT_CONNECTTIMEOUT

See merge request hubzilla/core!1542
2019-03-06 09:52:26 +01:00
M. Dent 0c05e6593e Add CURLOPT_CONNECTTIMEOUT 2019-03-06 09:52:26 +01:00
zotlabs 571e9bf26a channel_type is not integer
(cherry picked from commit 26e7da0b96)
2019-03-06 09:49:40 +01:00
zotlabs c4714e95b6 maintain compatibility with recent zot6 changes
(cherry picked from commit 98b1c7a38c)
2019-03-06 09:49:18 +01:00
Mario c43ab50d66 Merge branch 'dev' into 'dev'
sync recent z6 protocol change

See merge request hubzilla/core!1541
2019-03-06 09:47:40 +01:00
harukin 0d283b2666 edit translation 2019-03-06 10:32:47 +09:00
zotlabs 26e7da0b96 channel_type is not integer 2019-03-05 17:06:42 -08:00
zotlabs 98b1c7a38c maintain compatibility with recent zot6 changes 2019-03-05 16:57:32 -08:00
zotlabs d407e5556e api_router - allow parameters as final path argument
(cherry picked from commit 47001c3303)
2019-03-05 09:44:36 +01:00
zotlabs 6a3cfe54af remove clones from delivery recipients for top-level posts - they will get the post via clone sync
(cherry picked from commit 8e50fecccc)
2019-03-05 09:43:51 +01:00
zotlabs a0bffe4a78 mod_oep: photos/album/xxxxx is no longer hex2bin/bin2hex but the album hash and is throwing php warnings when trying to decode
(cherry picked from commit 938fcdd1a6)
2019-03-05 09:43:29 +01:00
zotlabs 336c716a44 translate name of content filter (addon) app.
(cherry picked from commit 29cb62af3d)
2019-03-05 09:42:58 +01:00
Mario ccdbec619c Merge branch 'dev' into 'dev'
assorted minor fixes from downstream

See merge request hubzilla/core!1540
2019-03-05 09:40:45 +01:00
zotlabs 47001c3303 api_router - allow parameters as final path argument 2019-03-04 20:11:43 -08:00
zotlabs 8e50fecccc remove clones from delivery recipients for top-level posts - they will get the post via clone sync 2019-03-04 20:09:47 -08:00
zotlabs 938fcdd1a6 mod_oep: photos/album/xxxxx is no longer hex2bin/bin2hex but the album hash and is throwing php warnings when trying to decode 2019-03-04 20:07:01 -08:00
zotlabs 9ede57b228 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-03-04 14:50:33 -08:00
mike 8810658858 Addressing new 'support@zotadel.net' support forum instead of old 'support@gravizot.de'
(cherry picked from commit e26de9c1d1)
2019-03-04 09:50:47 +01:00
Mario e074d02714 Merge branch 'dev' into 'dev'
Addressing new 'support@zotadel.net' support forum instead of old 'support@gravizot.de'

See merge request hubzilla/core!1539
2019-03-04 09:50:12 +01:00
mike e26de9c1d1 Addressing new 'support@zotadel.net' support forum instead of old 'support@gravizot.de' 2019-03-03 18:24:36 +03:00
M. Dent 7dc3835a54 Merge branch 'core_fixes' into 'dev'
while in legacy zot $sender is expected to be an array, in zot6 $sender is...

See merge request hubzilla/core!1538
2019-03-03 03:37:33 +01:00
Mario Vavti 117a8cafca while in legacy zot $sender is expected to be an array, in zot6 $sender is expected to be a string (xchan_hash) 2019-03-02 15:50:53 +01:00
mike 337dfd5ee4 Mention php-zip module dependency in administrator guide
(cherry picked from commit 747ce9b1f1)
2019-03-02 15:37:47 +01:00
DM42.Net (Matt Dent) e37c9ed0a1 Use sender hash
(cherry picked from commit 5febc3e07d)
2019-03-02 15:37:22 +01:00
Mario Vavti aa6a31eba5 iron out some kinks with scrollToItem() in combination with collapsed content and images
(cherry picked from commit 2244bf2ba2)
2019-03-02 15:32:36 +01:00
Mario 8a0a0aef5c Merge branch 'dev' into 'dev'
Mention php-zip module dependency in administrator guide

See merge request hubzilla/core!1537
2019-03-02 15:01:50 +01:00
Mario 4750e15c20 Merge branch 'patch-20190301a' into 'dev'
Use sender hash

See merge request hubzilla/core!1535
2019-03-02 15:00:20 +01:00
mike 747ce9b1f1 Mention php-zip module dependency in administrator guide 2019-03-02 12:21:59 +03:00
M. Dent 7fa874d9ef Merge branch 'js_fixes' into 'dev'
iron out some kinks with scrollToItem() in combination with collapsed content and  images

See merge request hubzilla/core!1534
2019-03-01 17:43:16 +01:00
DM42.Net (Matt Dent) 5febc3e07d Use sender hash 2019-03-01 10:50:10 -05:00
Mario Vavti 2244bf2ba2 iron out some kinks with scrollToItem() in combination with collapsed content and images 2019-03-01 14:16:19 +01:00
zotlabs 29cb62af3d translate name of content filter (addon) app. 2019-02-28 17:51:13 -08:00
harukin 027847a663 Merge branch 'develop' into 'master'
cmd+enterキー有効化

See merge request harukin/core!39
2019-02-27 11:19:32 +09:00
harukin 8134ba1faf add cmd support test 2019-02-27 10:53:11 +09:00
harukin d30748f1de edit translation 2019-02-27 10:47:05 +09:00
Mario Vavti 6aa041b193 version 2019-02-26 09:30:54 +01:00
Mario Vavti 0fdc0a01d0 Merge branch 'dev' into 4.0RC 2019-02-26 09:29:00 +01:00
Mario Vavti de7f2eef47 use $channel_id until the function is adapted to not need it 2019-02-26 09:28:16 +01:00
Mario a449ffe49d Merge branch 'fix-sync_an_item' into 'dev'
Fix sync an item

See merge request hubzilla/core!1531
2019-02-26 09:26:00 +01:00
Mario Vavti 08cacc4943 Merge branch 'dev' into 4.0RC 2019-02-26 09:06:46 +01:00
Mario 04b9216758 Merge branch 'dev' into 'dev'
zot api changes to support combined content (items+files) import addon

See merge request hubzilla/core!1533
2019-02-25 14:06:37 +01:00
zotlabs 1ff97754af issues uncovered testing combined item/file import 2019-02-24 21:43:15 -08:00
zotlabs 20e43311db zot api changes to support combined content (items+files) import addon 2019-02-24 14:46:09 -08:00
M. Dent 89bcb1de42 Merge branch 'js_fixes' into 'dev'
fix regression from commit 04ec35d9cc where...

See merge request hubzilla/core!1532
2019-02-24 03:32:39 +01:00
DM42.Net (Matt Dent) 7a1a44f802 xchan_query and fetch_post_tags uses full query results not a single row 2019-02-23 21:03:05 -05:00
harukin e9edec0875 edit translation 2019-02-24 09:19:28 +09:00
Mario Vavti 06aa32db22 fix regression from commit 04ec35d9cc where selecting multiple images from embed photos dialog broke and fix issue where items were not scrolled to there correct position if justifiedGalleryActive flag was true 2019-02-23 21:48:45 +01:00
DM42.Net (Matt Dent) 6f8593cf47 Fixes - sync item based on item's user 2019-02-23 10:24:05 -05:00
DM42.Net (Matt Dent) 3b2efb1000 Fix misspelled variable 2019-02-23 10:09:58 -05:00
Klaus Weidenbach 87482e3746 Update PHP Version check during Setup.
Hubzilla 4.0 requires PHP7. The oldest still supported PHP branch is 7.1.
So check during Setup for PHP >= 7.1.


(cherry picked from commit 3f13c85b64)
2019-02-22 12:52:25 +01:00
Mario ef6a280019 Merge branch 'php' into 'dev'
Update PHP Version check during Setup.

See merge request hubzilla/core!1530
2019-02-22 12:51:48 +01:00
Max Kostikov 326ae05b06 Merge branch 'es-es' into 'dev'
Quickfix es-es/hstrings.php

See merge request hubzilla/core!1529
2019-02-22 11:32:33 +01:00
Klaus Weidenbach 3f13c85b64 Update PHP Version check during Setup.
Hubzilla 4.0 requires PHP7. The oldest still supported PHP branch is 7.1.
So check during Setup for PHP >= 7.1.
2019-02-21 21:31:36 +01:00
Manuel Jiménez Friaza 1ae7bd6477 Merge branch 'cherry-pick-f92d2e3f' into 'es-es'
Quickfix es-es/hstrings.php

See merge request mjfriaza/core!6
2019-02-21 18:55:39 +01:00
Manuel Jiménez Friaza c91641aa83 Quickfix es-es/hstrings.php
(cherry picked from commit f92d2e3f7c)
2019-02-21 18:37:21 +01:00
Manuel Jiménez Friaza f92d2e3f7c Quickfix es-es/hstrings.php 2019-02-21 18:32:45 +01:00
Manuel Jiménez Friaza 3e2489465f Merge branch 'cherry-pick-a9b75d05' into 'es-es'
Fix es-es/hstrings.php

See merge request mjfriaza/core!5
2019-02-21 12:59:29 +01:00
Manuel Jiménez Friaza a5bf32a97d Fix es-es/hstrings.php
(cherry picked from commit a9b75d059b)
2019-02-21 12:46:48 +01:00
Manuel Jiménez Friaza 8bb2d29a8d Update Spanish translation
(cherry picked from commit e6f289deb6)

(cherry picked from commit a3a90ea09b)
2019-02-21 12:43:03 +01:00
Manuel Jiménez Friaza a9b75d059b Fix es-es/hstrings.php 2019-02-21 12:40:27 +01:00
Mario 938e8110ca Merge branch 'es-es' into 'dev'
Update es-es

See merge request hubzilla/core!1526
2019-02-21 12:34:31 +01:00
Mario Vavti 93039081d5 fix summary and use item_normal_search() for viewsrc so we can also view the source for articles, cards, etc.
(cherry picked from commit a0ad110cff)
2019-02-21 12:10:31 +01:00
M. Dent 3d253309b7 Merge branch 'core_fixes' into 'dev'
fix summary and use item_normal_search() for viewsrc so we can also view the...

See merge request hubzilla/core!1525
2019-02-21 12:03:56 +01:00
Manuel Jiménez Friaza 301c1861f3 Merge branch 'cherry-pick-e6f289de' into 'es-es'
Update Spanish translation

See merge request mjfriaza/core!4
2019-02-21 11:54:41 +01:00
Manuel Jiménez Friaza a3a90ea09b Update Spanish translation
(cherry picked from commit e6f289deb6)
2019-02-21 11:38:45 +01:00
Manuel Jiménez Friaza e6f289deb6 Update Spanish translation 2019-02-21 11:30:17 +01:00
Manuel Jiménez Friaza 0e22618d93 Merge remote-tracking branch 'upstream/dev' into dev 2019-02-21 11:18:59 +01:00
Mario Vavti a0ad110cff fix summary and use item_normal_search() for viewsrc so we can also view the source for articles, cards, etc. 2019-02-21 08:48:47 +01:00
Max Kostikov 89ee28f858 Update Russian hstrings.php
(cherry picked from commit 3a6ea57d2c)
2019-02-20 09:20:31 +01:00
Max Kostikov 5917786296 Update Russian hmessages.po
(cherry picked from commit e960bcfd1c)
2019-02-20 09:20:09 +01:00
Mario Vavti 7f1e0313a0 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-02-20 09:12:24 +01:00
Mario Vavti c89be96209 bump dev version 2019-02-20 09:12:04 +01:00
Max Kostikov fcd6c3065e Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1524
2019-02-20 09:06:12 +01:00
Mario Vavti a700ef5e24 bump version 2019-02-20 09:04:48 +01:00
Max Kostikov 3a6ea57d2c Update Russian hstrings.php 2019-02-20 09:00:05 +01:00
Max Kostikov e960bcfd1c Update Russian hmessages.po 2019-02-20 08:59:50 +01:00
Mario 65e8ed6871 Merge branch 'dev' into 'dev'
basic support for nomadic content, fix for permitted guests deleting their own files in cloud space of other channel,urlencode category widget links

See merge request hubzilla/core!1523
2019-02-20 08:52:13 +01:00
zotlabs a77d7b8442 urlencode links in category widget 2019-02-19 20:51:06 -08:00
zotlabs 51e9f302b0 hubzilla has uuid - use that instead of wildcard 2019-02-19 13:36:53 -08:00
zotlabs 72fd1cc5a6 remove extraneous logging 2019-02-19 13:23:46 -08:00
zotlabs 1a77bdd1d0 fix ability for file storage creators (visitors) to be able to delete their own content 2019-02-19 13:14:19 -08:00
zotlabs 1ea9002fe8 Merge branch 'dev' of https://framagit.org/zot/core into dev 2019-02-19 11:56:26 -08:00
zotlabs 7d1c3920fd mod_id should return object not collection 2019-02-19 11:45:42 -08:00
Manuel Jiménez Friaza c5bb074573 Merge remote-tracking branch 'upstream/dev' into dev 2019-02-19 12:15:59 +01:00
Mario Vavti cead10b9af update composer autoload cache 2019-02-19 10:24:20 +01:00
Mario Vavti 382e94e282 update strings 2019-02-19 10:21:53 +01:00
Mario 7e8434404f Merge branch 'patch-20190218a' into 'dev'
Fix: post_activity_item returns success => true even on failure.

See merge request hubzilla/core!1521
2019-02-19 08:46:03 +01:00
M.Dent cfcbaf33af Fix: post_activity_item returns success => true even on failure. 2019-02-18 22:40:19 -05:00
zotlabs 175f78fa84 support zot location independent urls 2019-02-18 18:16:50 -08:00
M. Dent c8ab2bec5e Merge branch 'js_fixes' into 'dev'
prevent page jumping on like if comments are expanded (show all x comments)

See merge request hubzilla/core!1520
2019-02-19 01:24:35 +01:00
M. Dent 136d50a7c5 Merge branch 'mod_display_fixes' into 'dev'
if local_channel() and updating the page do not query for another item if the...

See merge request hubzilla/core!1519
2019-02-19 01:23:28 +01:00
M. Dent 0fa653d580 Merge branch 'core_fixes' into 'dev'
remove zottel.net from fallback servers. it switched to directory_mode_normal from secondary

See merge request hubzilla/core!1518
2019-02-19 01:21:37 +01:00
Mario Vavti 48f2c85791 prevent page jumping on like if comments are expanded (show all x comments) 2019-02-18 14:40:41 +01:00
Mario Vavti 13ca56d380 if local_channel() and updating the page do not query for another item if the first query returned no results. we will most probably find an item from another channel (e.g. after liking a comment) and end up with multiple items with the same mid from different channels after the page update 2019-02-18 14:27:01 +01:00
Mario b5109d2a1a Merge branch 'photo_driver_refactor' into 'dev'
Photo driver refactor

See merge request hubzilla/core!1515
2019-02-18 10:02:46 +01:00
Mario Vavti 8ab532efb5 remove zottel.net from fallback servers. it switched to directory_mode_normal from secondary 2019-02-18 10:02:18 +01:00
Mario f11c17063c Merge branch 'QA' into 'dev'
Improve gitlab-ci environment.

See merge request hubzilla/core!1516
2019-02-18 09:44:26 +01:00
Mario 72eb44aebc Merge branch 'dev' into 'dev'
MySQL 8 admin summary compatibility

See merge request hubzilla/core!1517
2019-02-18 09:41:38 +01:00
Max Kostikov b070503e77 MySQL 8 admin summary compatibility 2019-02-17 22:47:08 +01:00
Klaus Weidenbach f48e1ee0ac Improve gitlab-ci environment.
Use a custom Hubzilla image to speed up pipeline.
Single test jobs were around 4:30-5:00 minutes, now ~1:30 minute.
Improve Composer cache in Gitlab CI/CD.
Add more recent databases (MySQL8, MariaDB10.3) to the pipeline.
2019-02-17 18:19:09 +01:00
M. Dent a5b7590d3a Merge branch 'exclude_addon_common' into 'dev'
exclude addon_common from addon list

See merge request hubzilla/core!1513
2019-02-15 22:03:33 +01:00
M. Dent f0955f1620 Merge branch 'rm_addon_settings' into 'dev'
Remove deprecated addon settings

See merge request hubzilla/core!1514
2019-02-15 22:02:33 +01:00
harukin 6dda2713cf edit translation 2019-02-15 23:29:31 +09:00
Mario 4769254978 deprecate addon settings 2019-02-15 12:35:19 +01:00
Mario ca917f7b9a exclude addon_common from addon list 2019-02-15 11:39:59 +01:00
Klaus Weidenbach b9df4c99cf Remove duplicate code in PhotoDriver classes.
cropImage is just a special case of cropImageRect, no need to
duplicate all the code.
2019-02-14 22:06:42 +01:00
Klaus Weidenbach e6dadb215e Refactor photo_driver to use namespaces.
Add simple UnitTest, but it is not yet very meaningful.
2019-02-14 22:06:42 +01:00
Klaus Weidenbach d70bba2806 Clean up and documentation in photo_drive. 2019-02-14 22:06:42 +01:00
Mario Vavti 3217452b02 missing use app 2019-02-14 14:48:16 +01:00
M. Dent ff0494b180 Merge branch 'affinity_fixes' into 'dev'
affinity tool fixes

See merge request hubzilla/core!1511
2019-02-14 14:06:25 +01:00
M. Dent 8be15c1b5b Merge branch 'disable_repeats' into 'dev'
disable repeats until issues are resolved

See merge request hubzilla/core!1512
2019-02-14 14:05:24 +01:00
Mario Vavti 0207b5ba8b disable repeats until issues are resolved 2019-02-14 11:32:43 +01:00
Mario Vavti 5ab917f606 affinity tool fixes 2019-02-14 11:06:52 +01:00
Mario ea541ca21b Merge branch 'aff2' into 'dev'
affinity slider as app

See merge request hubzilla/core!1449
2019-02-14 09:56:53 +01:00
phani00 fc223f5924 affinity slider as app 2019-02-14 09:56:53 +01:00
Mario 7b8eb84cb8 Merge branch 'patch-20190212a' into 'dev'
Fix: only first lock red with privacy_warning

See merge request hubzilla/core!1510
2019-02-13 20:36:33 +01:00
harukin 38443c72c3 おまえかぁぁぁぁぁぁぁぁぁあ!!!!!!!!!!!!!!!!!!!!!11 2019-02-13 23:56:49 +09:00
harukin 0cef3e67ce fix delete strings.php.... 2019-02-13 23:49:33 +09:00
harukin b98d4875da fix strings.php 2019-02-13 23:24:13 +09:00
harukin ae52db41de edit translation 2019-02-13 23:19:40 +09:00
M.Dent c3e2b463e4 Only cascade privacy warning if thread parent has privacy concerns. 2019-02-13 08:26:03 -05:00
M.Dent 5b3ea012ab Fix: only first lock red with privacy_warning 2019-02-12 22:05:57 -05:00
Max Kostikov 07df43aa2a Merge branch 'dev' into 'dev'
Update Russian translayion

See merge request hubzilla/core!1509
2019-02-12 11:55:17 +01:00
Max Kostikov 6e3bc77369 Update hstrings.php 2019-02-12 11:48:50 +01:00
Max Kostikov 24ddefe3ad Update hmessages.po 2019-02-12 11:47:53 +01:00
Mario 7db645587b Merge branch 'fix-20190211a' into 'dev'
Get all listeners

See merge request hubzilla/core!1508
2019-02-12 08:45:48 +01:00
M.Dent cbf6d53e84 Get all listeners 2019-02-11 20:24:17 -05:00
harukin 5f012c5dc9 Merge branch 'origin' into 'master'
marge from origin 3.8.9

See merge request harukin/core!38
2019-02-11 17:51:43 +09:00
harukin 5e0ce96e49 Merge branch 'origin' into 'japanese'
marge from origin 3.8.9

See merge request harukin/core!37
2019-02-11 17:51:12 +09:00
harukin 4a2228a372 Merge branch 'origin' into 'develop'
marge from origin 3.8.9

See merge request harukin/core!36
2019-02-11 17:48:25 +09:00
harukin d9a0382539 edit translation 2019-02-11 17:15:48 +09:00
Mario Vavti f52a532771 use ACTIVITY_SHARE to match the verb 2019-02-08 11:33:01 +01:00
Mario Vavti efc4c53b44 missing use App 2019-02-08 10:15:28 +01:00
zotlabs 4837f9cdad Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2019-02-07 19:54:07 -08:00
zotlabs 317c53acf6 disable repeat unless mid is a resolvable uri since this will do radically different things on different network stacks (e.g. Diaspora) and it turns out there is no possible way to make Diaspora reshares compatible with ActivityPub or Zot6 repeat/announce/boost/whatever. 2019-02-07 14:38:05 -08:00
zotlabs f02af5fe6e automatically redirect repeat to share for posts with unresolvable message-ids (diaspora, hz < 4.0, etc.). 2019-02-07 14:25:25 -08:00
zotlabs 92e6c21210 add missing zot6 conversation completion (required for message repeats) 2019-02-07 14:13:13 -08:00
zotlabs beb26e84f3 fix mid generation for shares 2019-02-07 11:18:34 -08:00
Mario Vavti 2b7a605223 exec updateInit() instead of notificationsUpdate() in jotShare() 2019-02-07 09:55:22 +01:00
Mario Vavti d70f0092f7 Merge remote-tracking branch 'mike/master' into dev 2019-02-07 09:34:22 +01:00
zotlabs 7f6e4a9744 fix verb for reshares 2019-02-06 19:59:05 -08:00
zotlabs 96a4fc7ca2 more work on share/repeat 2019-02-06 19:26:28 -08:00
zotlabs 29c1797493 work on repeat/share for Hubzilla 2019-02-06 17:26:09 -08:00
Mario Vavti 860dead985 Merge remote-tracking branch 'mike/master' into dev 2019-02-06 06:46:05 +01:00
zotlabs 518ceb53a8 allow conversation completion for new comments to expired posts, regardless of hyperdrive settings.
Note that hyperdrive conversations may still be fetched from zap/osada servers but will be ignored.
2019-02-05 14:51:01 -08:00
Max Kostikov 4bcddca1f0 Merge branch 'viewsrc_update' into 'dev'
add the actual mid for debuging reasons

See merge request hubzilla/core!1506
2019-02-04 10:38:26 +01:00
Mario Vavti cf80f03084 Merge remote-tracking branch 'mike/master' into dev 2019-02-04 10:03:38 +01:00
zotlabs 47f31eed37 update tests for changes in handle_tags() 2019-02-03 17:10:33 -08:00
zotlabs 8ff9a9ff08 fix linkify_tags() so it works with xchans across multiple protocols, also some fixes to activity parsing from upstream. 2019-02-03 16:53:49 -08:00
Mario Vavti 8dcf27ba29 add the actual mid for debuging reasons 2019-02-03 21:12:09 +01:00
Mario Vavti d97043725d update changelog 2019-02-03 15:12:38 +01:00
Mario 90fd323ac5 bump version 2019-02-03 15:03:56 +01:00
Mario Vavti b6c384a0f7 cleanup logging and return if query returns empty result
(cherry picked from commit c657d766cf)
2019-02-03 15:02:06 +01:00
Mario Vavti cda8a7be38 do not overwrite $sql_extra
(cherry picked from commit 4706ff6938)
2019-02-03 15:01:39 +01:00
Mario Vavti c657d766cf cleanup logging and return if query returns empty result 2019-02-03 14:58:19 +01:00
Mario Vavti 4706ff6938 do not overwrite $sql_extra 2019-02-03 14:52:50 +01:00
M. Dent c444af007f Merge branch 'core_fixes' into 'dev'
fix #1332

See merge request hubzilla/core!1505
2019-02-03 02:22:16 +01:00
Mario Vavti 6e80bb49fb fix #1332 2019-02-02 22:11:26 +01:00
Mario bf3d0c1274 Merge branch 'patch-20190201a' into 'dev'
Add filter hooks and the ability to add buttons to the default status editor

See merge request hubzilla/core!1502
2019-02-02 20:50:40 +01:00
M. Dent 0ded1d326c Merge branch 'dev' into 'dev'
Prevent Hubzilla usage for SEO backlinks

See merge request hubzilla/core!1501
2019-02-01 18:01:01 +01:00
DM42.Net (Matt Dent) 708d288121 Add filter hooks and the ability to add buttons to the default status editor 2019-02-01 09:49:11 -05:00
Max Kostikov 6462c83f69 Prevent Hubzilla usage for SEO backlinks 2019-02-01 15:47:51 +01:00
Mario f30bb452cc Merge branch 'patch-20190130a' into 'dev'
Set lock red and provide warning  if a forum is tagged in the post

See merge request hubzilla/core!1499
2019-02-01 09:29:59 +01:00
M. Dent ad4dd2def5 Set lock red and provide warning if a forum is tagged in the post 2019-02-01 09:29:59 +01:00
Max Kostikov 76582a60b5 Merge branch 'core_fixes' into 'dev'
starring and filing is only supported for post item type

See merge request hubzilla/core!1498
2019-01-31 18:39:07 +01:00
Mario 004246163d starring and filing is only supported for post item type 2019-01-31 18:39:07 +01:00
Max Kostikov a2cae45f00 Merge branch 'dev' into 'dev'
Fix typos in Russian translation

See merge request hubzilla/core!1500
2019-01-31 18:14:16 +01:00
Max Kostikov c1159337da Update hstrings.php 2019-01-31 18:06:19 +01:00
Max Kostikov 71adbd7c39 Update hmessages.po 2019-01-31 18:06:09 +01:00
harukin ded949052c edit translation 2019-01-31 18:44:51 +09:00
harukin 40fd6eb358 Merge branch 'develop' into 'master'
日本語の実装(暫定的)

See merge request harukin/core!35
2019-01-31 16:59:44 +09:00
harukin 48b65bf9d8 Merge branch 'develop' into 'master'
日本語の実装(暫定的)

See merge request harukin/core!34
2019-01-31 16:57:50 +09:00
harukin a761f9eb55 日本語の実装(暫定的) 2019-01-31 16:57:50 +09:00
harukin d1bf0da144 Merge branch 'japanese' into 'develop'
日本語の実装(暫定的)

See merge request harukin/core!33
2019-01-31 16:55:50 +09:00
harukin de15a1e7c8 edit translation 2019-01-31 16:50:53 +09:00
zotlabs a56bc0e1e0 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2019-01-30 18:34:44 -08:00
zotlabs 519db2aace set document title when title changes on a page update 2019-01-30 18:33:10 -08:00
Mario Vavti e64c5661da Merge remote-tracking branch 'mike/master' into dev 2019-01-30 09:48:07 +01:00
zotlabs b15421826d cache embeds in the background on initial storage rather than on first access 2019-01-29 15:14:49 -08:00
Mario Vavti 3b31dbaa16 clean up whitespace and remove superfluous semicolon 2019-01-29 22:37:30 +01:00
Mario 318957cb81 Merge branch 'dev' into 'dev'
Custom sessionhandler support, as requested

See merge request hubzilla/core!1497
2019-01-29 22:22:59 +01:00
Mark Nowiasz 4b516fdb09 Custom sessionhandler support, as requested 2019-01-29 21:41:23 +01:00
Mario 913b620c66 Revert "Make session handler pluggable"
This reverts commit 8972ca8134
2019-01-29 21:16:38 +01:00
Mario cd4d90c647 Revert "fix wrong function name and coding style"
This reverts commit 456207b4e7
2019-01-29 21:16:16 +01:00
Mario Vavti 456207b4e7 fix wrong function name and coding style 2019-01-29 10:13:49 +01:00
Mario 39604d2fdc Merge branch 'sessionhandlerhook' into 'dev'
Make session handler pluggable

See merge request hubzilla/core!1494
2019-01-29 10:06:37 +01:00
Mario 27e415e664 Merge branch 'boot' into 'dev'
Correct variable in boot.php

See merge request hubzilla/core!1495
2019-01-29 10:06:18 +01:00
Mario c57a4cf926 Merge branch 'doku' into 'dev'
Extend documentation.

See merge request hubzilla/core!1496
2019-01-29 10:06:04 +01:00
Mario Vavti 0a868b5c27 Merge remote-tracking branch 'mike/master' into dev 2019-01-29 09:49:53 +01:00
zotlabs 753f137575 disable hyperdrive in hubzilla 2019-01-28 15:29:39 -08:00
Klaus Weidenbach 728788e3b9 Extend documentation. 2019-01-28 23:58:19 +01:00
Klaus Weidenbach ec6e130eb3 Correct variable in boot.php 2019-01-28 23:10:36 +01:00
DM42.Net (Matt Dent) 8972ca8134 Make session handler pluggable 2019-01-28 14:20:46 -05:00
Mario Vavti 671b6d2eda Merge remote-tracking branch 'mike/master' into dev 2019-01-28 12:48:21 +01:00
zotlabs 043f7bf2ab Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2019-01-28 02:48:57 -08:00
zotlabs 625cdde9a4 block private reshares from zot6 due to different parents 2019-01-28 02:46:45 -08:00
M. Dent e3d39fbf3f Merge branch 'core_fixes' into 'dev'
update nginx and lighttpd sample server configs to explicit dissalow access to util

See merge request hubzilla/core!1493
2019-01-28 05:41:26 +01:00
zotlabs 94cbc8bd31 share fixes 2019-01-27 12:38:51 -08:00
Mario Vavti e262de9b2d update nginx and lighttpd sample server configs to explicit dissalow access to util 2019-01-27 18:05:46 +01:00
Mario 17d9e30be5 Merge branch 'patch-20190125a' into 'dev'
Remove extraneous sync logic

See merge request hubzilla/core!1490
2019-01-27 17:36:56 +01:00
M. Dent 37b7dc8e7c Remove extraneous sync logic 2019-01-27 17:36:56 +01:00
Mario Vavti 5c2f7a744a Merge remote-tracking branch 'mike/master' into dev 2019-01-27 17:30:10 +01:00
zotlabs 535f0f45c9 cleanup of cli admin tool 2019-01-26 12:55:12 -08:00
zotlabs b9cef2f38f command line tool for managing site admins 2019-01-26 12:17:52 -08:00
M. Dent 793d78fba6 Merge branch 'core_fixes' into 'dev'
return false if http signatue is not valid

See merge request hubzilla/core!1489
2019-01-26 00:21:09 +01:00
Max Kostikov 5ad055efb4 Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1491
2019-01-25 20:04:19 +01:00
Max Kostikov 3277595366 Update hstrings.php 2019-01-25 19:56:15 +01:00
Max Kostikov b11be32063 Update hmessages.po 2019-01-25 19:55:23 +01:00
Mario Vavti 725652006d bump version 2019-01-25 12:14:17 +01:00
Mario Vavti 10587e3a84 return false if http signatue is not valid 2019-01-25 10:49:17 +01:00
Mario 073115e7ab Merge branch 'apidocpublishing' into 'dev'
Suggestion: Publish doxygen API documentation at gitlab pages.

See merge request hubzilla/core!1488
2019-01-25 10:32:12 +01:00
Mario 45dcd987c5 Merge branch 'doku' into 'dev'
Correct and extend Doxygen comments.

See merge request hubzilla/core!1485
2019-01-25 10:31:09 +01:00
Mario Vavti 960246fbb9 Merge remote-tracking branch 'mike/master' into dev 2019-01-25 09:51:36 +01:00
zotlabs 2fa274de1e support photo items between zot and zot6 2019-01-24 19:08:57 -08:00
Klaus Weidenbach 4cc98874a0 Publish doxygen API documentation at gitlab pages.
Create the API documentation with Doxygen and
publish it through gitlab-ci as a Gitlab page at:
https://hubzilla.frama.io/core
This should only happen when master gets updated.

Update Doxyfile configuration. Correct image usage.
Replace RedMatrix with Hubzilla icon.
2019-01-24 22:03:15 +01:00
Max Kostikov fafd05afb2 Merge branch 'js_fixes' into 'dev'
possibly more  page jumping fixes

See merge request hubzilla/core!1486
2019-01-24 21:57:42 +01:00
Max Kostikov 7a3ad30bfa Merge branch 'zot6_fixes' into 'dev'
macke mod chanview aware of zot6

See merge request hubzilla/core!1487
2019-01-24 21:57:14 +01:00
Mario Vavti 32acf9cb72 macke mod chanview aware of zot6 2019-01-24 18:06:27 +01:00
Mario Vavti ddbc35181c fix page jumping when liking a collapsed/expanded post
(cherry picked from commit 54806f6ee8)
2019-01-24 13:39:49 +01:00
Mario Vavti 0946ac2ff9 possibly more page jumping fixes 2019-01-24 12:53:38 +01:00
Max Kostikov 1d314834a4 Merge branch 'js_fixes' into 'dev'
fix page jumping when liking a collapsed/expanded post

See merge request hubzilla/core!1484
2019-01-24 10:40:33 +01:00
harukin 875aecf9c6 edit translation 2019-01-24 17:43:03 +09:00
Klaus Weidenbach 13e0151cd2 Correct and extend Doxygen comments.
Correct some documentation errors for Doxygen and add
more comments.
Document some undefined variables with @FIXME.
2019-01-23 22:25:47 +01:00
Mario 51a7be29f5 Merge branch 'prepare_text' into 'dev'
Correct parameter in include/text.php prepare_text()

See merge request hubzilla/core!1483
2019-01-23 15:41:54 +01:00
Mario ef46738384 Merge branch 'dev' into 'dev'
Skip tags detection in URL

See merge request hubzilla/core!1482
2019-01-23 15:39:13 +01:00
Mario Vavti 54806f6ee8 fix page jumping when liking a collapsed/expanded post 2019-01-23 15:36:34 +01:00
Klaus Weidenbach ae538a2259 Correct parameter in include/text.php prepare_text()
Also extend documentation.
2019-01-22 23:25:30 +01:00
Max Kostikov 66f443fd00 Skip tags detection in URL 2019-01-22 16:23:44 +01:00
Mario ca9c29e2b6 Merge branch 'embedphotos' into 'dev'
Try to fix some warnings in Zotlabs\Module\Embedphotos.

See merge request hubzilla/core!1481
2019-01-22 12:23:20 +01:00
Mario 273beb016b Merge branch 'patch-20190114a' into 'dev'
Add remaining hook insertions

See merge request hubzilla/core!1471
2019-01-22 12:13:16 +01:00
M. Dent cd8a0f33b5 Add remaining hook insertions 2019-01-22 12:13:16 +01:00
Klaus Weidenbach b1e05b4832 Try to fix some warnings in Zotlabs\Module\Embedphotos.
$phototypes was undefined, hope this is correct selection
to fix it.
Correct Doxygen and clean up some variables and refactoring.
2019-01-22 00:59:00 +01:00
Mario Vavti 4c0378eeae Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2019-01-21 12:04:57 +01:00
Mario Vavti ea14398929 Merge remote-tracking branch 'mike/master' into dev 2019-01-21 12:04:01 +01:00
zotlabs 1b5dd8bbd7 comment permission fix 2019-01-20 15:09:35 -08:00
harukin c85acf8044 edit translation 2019-01-20 22:33:47 +09:00
harukin 78a587791f edit translation 2019-01-20 21:38:53 +09:00
harukin f4a3ebcb41 edit translation 2019-01-20 21:31:43 +09:00
Manuel Jiménez Friaza 4e8fc6d198 Merge remote-tracking branch 'upstream/dev' into dev 2019-01-20 12:58:27 +01:00
harukin 086dab902c edit translation 2019-01-20 17:22:38 +09:00
harukin 722c03b6c6 edit translation 2019-01-20 17:08:14 +09:00
M. Dent 39128c34cc Merge branch 'dev' into 'dev'
Some fixes in include/help.php.

See merge request hubzilla/core!1479
2019-01-19 05:21:53 +01:00
M. Dent 542d21c4e1 Merge branch 'bugfix-plugin' into 'dev'
Fix wrong variable name in include/plugin.php.

See merge request hubzilla/core!1480
2019-01-19 05:18:35 +01:00
Klaus Weidenbach 90a62405ca Fix wrong variable name in include/plugin.php. 2019-01-19 00:28:01 +01:00
Klaus Weidenbach bba20c27fe Some fixes in include/help.php.
Remove unused variables and a wrong function name.
2019-01-18 22:37:05 +01:00
Mario Vavti d355e57fa6 Merge remote-tracking branch 'mike/master' into dev 2019-01-18 10:09:16 +01:00
Mario f2d7c4091a Merge branch 'QA' into 'dev'
Add PostgreSQL to gitlab-ci setup.

See merge request hubzilla/core!1478
2019-01-18 10:05:13 +01:00
M. Dent bf879ce742 Merge branch 'dreport_fixes' into 'dev'
fix delivery report for zot6 connections

See merge request hubzilla/core!1476
2019-01-18 06:15:01 +01:00
M. Dent e89a3b05ec Merge branch 'core_fixes' into 'dev'
possible fix for #1326

See merge request hubzilla/core!1477
2019-01-18 06:13:04 +01:00
zotlabs 52305ca91b more specific network checking in several places and remove some old debugging crud 2019-01-17 14:45:53 -08:00
Klaus Weidenbach d6167636fa Add PostgreSQL to gitlab-ci setup.
Run our tests against a PostgreSQL again.
2019-01-17 22:13:12 +01:00
Mario Vavti cc1e1a525f possible fix for #1326 2019-01-17 21:42:24 +01:00
zotlabs 96deae43fa this should fix the rest of the event stuff 2019-01-17 11:47:55 -08:00
Mario Vavti 5aa0267936 add space 2019-01-17 20:09:19 +01:00
zotlabs b1b1e0eba4 channel connect issue 2019-01-17 10:47:04 -08:00
Mario Vavti 07f6465872 fix delivery report for zot6 connections 2019-01-17 11:39:52 +01:00
zotlabs eda7c5369c event attendance testing continued (now works at a basic level from one direction, more testing needed) 2019-01-16 21:09:04 -08:00
zotlabs e9f709301c more z6 event work 2019-01-16 17:32:16 -08:00
zotlabs 7e29bd10b6 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2019-01-16 16:52:21 -08:00
zotlabs 20eea2184b more work on z6 events 2019-01-16 16:50:44 -08:00
zotlabs eaa375936f more z6 compatibility fixes 2019-01-16 15:28:30 -08:00
Mario Vavti de8582ec07 Merge branch 'fix_dreport_issue' into dev 2019-01-16 21:52:16 +01:00
M. Dent e6ccdc2378 Merge branch 'queue_fixes_1' into 'dev'
do not return if delivery report could not bedecrypted

See merge request hubzilla/core!1475
2019-01-16 15:58:13 +01:00
Mario Vavti 4450a01014 do not return if delivery report could not bedecrypted 2019-01-16 15:09:18 +01:00
harukin bb962b90cc edit translation 2019-01-16 21:19:38 +09:00
Mario Vavti a1ac507a94 change logic for consistency 2019-01-16 10:02:13 +01:00
Mario Vavti ad6eb15eac fix legacy zot dreport not passing the is_storable check 2019-01-15 22:36:01 +01:00
Mario 2e94e4cd67 Merge branch 'core_fixes' into 'dev'
Core fixes

See merge request hubzilla/core!1470
2019-01-15 11:38:41 +01:00
harukin 44f75d94e1 edit translation 2019-01-15 18:07:33 +09:00
harukin ad89310c45 edit translation 2019-01-15 17:36:43 +09:00
Mario Vavti c26e112bee whitespace 2019-01-14 15:06:21 +01:00
Mario Vavti 7daf18b077 fix a new instance of autocomplete created on each conversation update 2019-01-14 14:07:56 +01:00
Mario a8a5d2fc4e Merge branch 'patch-20190113c' into 'dev'
Hooks to allow addons to add "extras" to privacy group settings edit page.

See merge request hubzilla/core!1469
2019-01-14 10:29:48 +01:00
Mario 90f6abfa7c Merge branch 'patch-20190113a' into 'dev'
Add collect_public_recipients hook

See merge request hubzilla/core!1467
2019-01-14 10:29:19 +01:00
Mario Vavti 65f2d7fd66 Merge branch 'dev' into core_fixes 2019-01-14 10:14:44 +01:00
Mario Vavti f3554804bf only load new content onpopstate if the mid has actually changed 2019-01-14 10:14:37 +01:00
DM42.Net (Matt Dent) f5e571ba40 Remove stray $ 2019-01-13 20:04:12 -05:00
DM42.Net (Matt Dent) e43331b7a2 Add privacygroup_extras_post/drop hooks 2019-01-13 15:43:25 -05:00
Max Kostikov e78fd09e07 Merge branch 'patch-20190113b' into 'dev'
FIX: aggregated query error in MYSQL

See merge request hubzilla/core!1468
2019-01-13 20:49:03 +01:00
DM42.Net (Matt Dent) b4c1ca88f3 move order by and rewrite similar in update_queue_item() 2019-01-13 14:41:44 -05:00
DM42.Net (Matt Dent) dba9c2fbb0 Add pgrp_extras hook & display 2019-01-13 14:34:04 -05:00
DM42.Net (Matt Dent) ab074f52fe outq_created not outq_scheduled 2019-01-13 14:10:35 -05:00
DM42.Net (Matt Dent) 121fa834d5 FIX: aggregated query error in MYSQL 2019-01-13 14:06:36 -05:00
DM42.Net (Matt Dent) 598cbf2210 Add collect_public_recipients hook 2019-01-12 22:37:44 -05:00
harukin f481ba1c1c edit translation 2019-01-13 10:39:40 +09:00
Mario 9e42dfd094 Merge branch 'patch-20190111a' into 'dev'
FIX: memory exhaustion on zot message pickup with large message queue

See merge request hubzilla/core!1466
2019-01-12 09:22:37 +01:00
M. Dent 8aa117e4ae FIX: memory exhaustion on zot message pickup with large message queue 2019-01-12 09:22:37 +01:00
Mario f6f4e40a64 Merge branch 'patch-20190110a' into 'dev'
FIX: memory exhaustion on exceptionally large message queues & multiple...

See merge request hubzilla/core!1465
2019-01-11 20:03:34 +01:00
DM42.Net (Matt Dent) caf2c0a6c4 Use dba_driver.php::db_getfunc() 2019-01-11 07:35:12 -05:00
zotlabs 57dde3e980 failure to import mail
(cherry picked from commit 7b30fc4b82)
2019-01-11 12:20:50 +01:00
Mario Vavti dc8da4717f Merge remote-tracking branch 'mike/master' into dev 2019-01-11 10:14:06 +01:00
zotlabs 7b30fc4b82 failure to import mail 2019-01-10 15:02:58 -08:00
DM42.Net (Matt Dent) 6791b05a40 Fix for PGSQL/MYSQL difference 2019-01-10 15:29:24 -05:00
ZotSocial Admin b54ddccd7b FIX: memory exhaustion on exceptionally large message queues & multiple Queue.php invocations duplicate work 2019-01-10 13:15:00 -05:00
Max Kostikov d32360cb3e Merge branch 'core_fixes' into 'dev'
we must sslify all possible content variables

See merge request hubzilla/core!1464
2019-01-10 14:12:16 +01:00
Mario Vavti 3eba0c2297 do not count removed channels
(cherry picked from commit 01f4ce96f1)
2019-01-10 13:36:31 +01:00
Mario Vavti 01f4ce96f1 do not count removed channels 2019-01-10 13:35:27 +01:00
Mario Vavti 90b6afe06b we must sslify all possible content variables 2019-01-10 00:29:05 +01:00
M. Dent b22caef65f Merge branch 'composer_updates' into 'dev'
update composer libs

See merge request hubzilla/core!1455
2019-01-09 19:09:20 +01:00
M. Dent db4281164c Merge branch 'core_gallery_05' into 'dev'
core changes for gallery 05

See merge request hubzilla/core!1463
2019-01-09 19:04:52 +01:00
Mario Vavti 217c2cacaf Merge branch 'dev' into core_gallery_05 2019-01-09 10:30:44 +01:00
Mario Vavti df4b6f0376 Merge remote-tracking branch 'mike/master' into dev 2019-01-09 10:25:04 +01:00
Mario 6ec1bfebec Merge branch 'patch-20190106a' into 'dev'
Remove Experimental Worker Queue from CORE - add hook 'daemon_master_release'

See merge request hubzilla/core!1461
2019-01-09 10:16:53 +01:00
M. Dent 5d88326915 Remove Experimental Worker Queue from CORE - add hook 'daemon_master_release' 2019-01-09 10:16:53 +01:00
Mario 24354b9dcc Merge branch 'patch-20190107a' into 'dev'
Tweak to deal with changes that may happen within the same second.

See merge request hubzilla/core!1462
2019-01-09 10:16:05 +01:00
zotlabs 39de8e28da make Apps::get_base_apps() pluggable 2019-01-08 14:14:55 -08:00
Mario Vavti 06beb59628 slightly improve item.is_new rendering 2019-01-08 15:23:08 +01:00
harukin 2dbe567e3b edit translation 2019-01-08 21:48:31 +09:00
DM42.Net (Matt Dent) 563a5088be Tweak to deal with changes that may happen within the same second. 2019-01-07 19:48:14 -05:00
M. Dent c10c59db4b Merge branch 'browser_compatibility' into 'dev'
fix issue with IE

See merge request hubzilla/core!1460
2019-01-07 17:09:26 +01:00
M. Dent 463f084b3e Merge branch 'update_bbcode' into 'dev'
Update bbcode

See merge request hubzilla/core!1459
2019-01-07 17:09:00 +01:00
Mario 312e0dcbc8 Update bbcode 2019-01-07 17:09:00 +01:00
Mario Vavti 6f93001658 fix issue with IE 2019-01-07 09:47:08 +01:00
Max Kostikov 48821a6da5 Merge branch 'check_content_type-1' into 'dev'
fix content type check

See merge request hubzilla/core!1458
2019-01-03 19:41:00 +01:00
Mario Vavti b93bc142d3 missing closing parenthesis 2019-01-03 19:18:49 +01:00
Mario Vavti ab9b8b8b0a fix content type check 2019-01-03 19:13:56 +01:00
Max Kostikov 1c4a90626a Merge branch 'revert-3f61d24d' into 'dev'
Revert "Merge branch 'check_content_type' into 'dev'"

See merge request hubzilla/core!1456
2019-01-03 17:18:52 +01:00
Max Kostikov 3bf1866f4a Revert "Merge branch 'check_content_type' into 'dev'"
This reverts merge request !1453
2019-01-03 17:13:40 +01:00
Max Kostikov 1a652b555f Merge branch 'update_boot' into 'dev'
add zotsite.net to directory fallback servers

See merge request hubzilla/core!1454
2019-01-03 16:32:31 +01:00
Max Kostikov 3f61d24d0a Merge branch 'check_content_type' into 'dev'
check suppported type if we get content type from header

See merge request hubzilla/core!1453
2019-01-03 16:31:48 +01:00
Max Kostikov 16064d5614 Merge branch 'fix_pconfig' into 'dev'
fix preg_match(): Delimiter must not be alphanumeric or backslash warning

See merge request hubzilla/core!1452
2019-01-03 16:30:14 +01:00
Mario Vavti d9f21db623 Merge remote-tracking branch 'mike/master' into dev 2019-01-03 14:05:08 +01:00
zotlabs 8ac541e634 better handling of notification updates while commenting 2019-01-02 23:33:33 -08:00
Mario Vavti da2688403e Merge remote-tracking branch 'mike/master' into dev 2019-01-02 23:07:37 +01:00
Mario Vavti dbd230da74 update composer libs 2019-01-02 22:41:03 +01:00
zotlabs f660530ef5 allow notification updates when composing comments. This was disabled when it was possible to have liveUpdate run automatically while composing comments, but it seems that live update is no longer possible (however the setting still remains - this should probably be removed). 2019-01-02 12:49:04 -08:00
Mario a19563e139 Revert "Use subselect"
This reverts commit a50433dd95
2019-01-02 19:56:11 +01:00
Mario c4400cf72a Merge branch 'patch-20181230a' into 'dev'
Use subselect

See merge request hubzilla/core!1451
2019-01-02 19:47:39 +01:00
Mario Vavti aae4943e64 add zotsite.net to directory fallback servers 2019-01-02 19:43:52 +01:00
Mario Vavti b0339b848f fix preg_match(): Delimiter must not be alphanumeric or backslash warning 2019-01-02 17:53:28 +01:00
Mario Vavti f3f106c21f check suppported type if we get content type from header 2019-01-02 17:49:21 +01:00
harukin 7fbff885dd edit translation 2019-01-01 15:22:09 +09:00
harukin 60b0e652df edit translation 2018-12-31 12:04:53 +09:00
harukin bb3405ef60 edit translation 2018-12-31 11:57:32 +09:00
harukin 9ef0883011 edit translation 2018-12-31 10:36:15 +09:00
DM42.Net (Matt Dent) a50433dd95 Use subselect 2018-12-30 15:05:45 -05:00
Max Kostikov 37d7d18bb7 Faster image processing with photo cache addon 2018-12-24 09:22:58 +01:00
harukin fa0176c1e6 Merge branch 'develop' into 'japanese'
merge upstream/master for 3.8.8

See merge request harukin/core!32
2018-12-24 01:00:50 +09:00
harukin 695c60c3fe Merge branch 'develop' into 'master'
merge upstream/master for 3.8.8

See merge request harukin/core!31
2018-12-24 01:00:22 +09:00
harukin ffadb70d81 Merge branch 'origin' into 'develop'
merge upstream/master for 3.8.8

See merge request harukin/core!30
2018-12-24 00:54:15 +09:00
Mario 414b7e28d3 bump version 2018-12-22 21:02:49 +01:00
Mario Vavti fca464071f update changelog
(cherry picked from commit cdb85f1309)
2018-12-22 21:01:50 +01:00
Mario Vavti cdb85f1309 update changelog 2018-12-22 21:00:01 +01:00
Mario Vavti 4f08f4b84c use count() instead of sizeof()
(cherry picked from commit 774dd6d5e3)
2018-12-22 20:20:58 +01:00
Mario Vavti 1b5175d018 check if we deal with an array before sizeof()
(cherry picked from commit 339c9cceec)
2018-12-22 20:20:13 +01:00
Mario 6d7fba6758 Merge branch 'fix_linkinfo_warning' into 'dev'
check if we deal with an array before sizeof()

See merge request hubzilla/core!1444
2018-12-22 20:18:41 +01:00
Mario Vavti 0bfda6d4c8 revert padding for text highlight. It is messing with indent punctuation and decreases legibility of the highlighted text.
(cherry picked from commit fac3579fb0)
2018-12-22 20:18:12 +01:00
Mario 880b22604b manualy Fix cURL with HTTP/2 due to merge conflicts 2018-12-22 20:17:20 +01:00
Mario 04a2dc075f manualy remove scale_external_images() due to merge conflicts 2018-12-22 20:08:44 +01:00
Max Kostikov 01448c152c Remove scale_external_images()
(cherry picked from commit 1541f67eab)
2018-12-22 20:04:09 +01:00
Max Kostikov a09beb3833 Remove scale_external_images()
(cherry picked from commit a2959c6e9e)
2018-12-22 20:03:49 +01:00
phani00 feda1e6d84 remove color from style.css (default) but add a little padding; add color & border radius to dark.css.
(cherry picked from commit 2354bb5427)
2018-12-22 19:54:48 +01:00
phani00 4256bea418 change hl text color to the default text color in non-dark schema. looks good, except in dark, where i can change it in dark.css.
(cherry picked from commit b97143e9db)
2018-12-22 19:54:31 +01:00
phani00 4d47b098e5 remove some fancy formatting.
(cherry picked from commit aaab905e72)
2018-12-22 19:54:11 +01:00
Mario Vavti 163754a46c make mod channel deal with b64 encoded mid\s
;


(cherry picked from commit bc6d384ca9)
2018-12-22 19:53:37 +01:00
phani00 66b56416b6 new fix for dark theme
change implementation of hl-tags in include/bbcode.php
insert class='default-highlight' instead of background-color: 'yellow' into span
add span.default-highlight definition to view/theme/redbasic/css/style.css

this works for all schemas incl. dark.


(cherry picked from commit aace8a14ce)
2018-12-22 19:52:39 +01:00
phani00 c855346358 remove my dark theme fixes.
(cherry picked from commit 70a7661711)
2018-12-22 19:52:09 +01:00
Pascal Deklerck 0e32c86c3d Update OAuth2Storage.php - fix email retrieval in getUser
(cherry picked from commit 6a825cc504)
2018-12-22 19:51:16 +01:00
Mario Vavti fac3579fb0 revert padding for text highlight. It is messing with indent punctuation and decreases legibility of the highlighted text. 2018-12-22 19:47:46 +01:00
M. Dent 19952264c8 Add reload to util/addons
(cherry picked from commit 0e5d76e735)
2018-12-22 19:43:16 +01:00
Mario Vavti 5ec1e97cae do not add timestamp to the photo src. caching is handled in mod photo now.
(cherry picked from commit e34853e19e)
2018-12-21 21:45:33 +01:00
zotlabs 5f5746a2f6 like permission issue
(cherry picked from commit 389b4beba4)
2018-12-21 21:44:33 +01:00
Mario 458b023204 Merge branch 'dev' into 'dev'
Fix for cURL with default HTTP/2

See merge request hubzilla/core!1447
2018-12-21 21:35:54 +01:00
Max Kostikov 4bad4ec632 Merge branch 'remove-legacy-photo-cache-prevention' into 'dev'
do not add timestamp to the photo src. caching is handled in mod photo now.

See merge request hubzilla/core!1448
2018-12-21 15:19:36 +01:00
Mario Vavti e34853e19e do not add timestamp to the photo src. caching is handled in mod photo now. 2018-12-21 12:51:19 +01:00
Mario Vavti 6cbdb1b4c3 Merge remote-tracking branch 'mike/master' into dev 2018-12-21 12:19:52 +01:00
Max Kostikov 60f890ce0d Fix for cURL with default HTTP/2 2018-12-20 21:13:05 +01:00
Max Kostikov c82c0a9812 Merge branch 'dev' into 'dev'
Dev

See merge request kostikov/core!2
2018-12-20 21:09:16 +01:00
Max Kostikov 123b1d4002 Merge branch 'revert-090fe394' into 'dev'
Revert "Fix cURL with HTTP/2"

See merge request hubzilla/core!1446
2018-12-20 21:04:12 +01:00
Max Kostikov e4958d5bb9 Revert "Fix cURL with HTTP/2"
This reverts commit 090fe394e4
2018-12-20 20:58:48 +01:00
Max Kostikov 89e734dcca Merge branch 'dev' into 'dev'
Sync dev

See merge request kostikov/core!1
2018-12-20 20:51:26 +01:00
Max Kostikov 090fe394e4 Fix cURL with HTTP/2 2018-12-20 20:38:35 +01:00
zotlabs 389b4beba4 like permission issue 2018-12-20 11:06:52 -08:00
Mario Vavti d0ee6d1ad2 missing observer check
(cherry picked from commit ec769bc9f9)
2018-12-20 19:45:59 +01:00
Mario Vavti ec769bc9f9 missing observer check 2018-12-20 19:45:11 +01:00
Mario Vavti 6b259070f0 Merge remote-tracking branch 'mike/master' into dev 2018-12-20 12:59:04 +01:00
harukin 651ea8cc2f edit translation 2018-12-20 20:34:39 +09:00
harukin 3f0e948981 edit translation 2018-12-20 17:07:24 +09:00
harukin 24ed7fbf3f edit translation 2018-12-20 17:04:54 +09:00
harukin b13c3979c2 edit translation 2018-12-20 16:59:24 +09:00
zotlabs 7a55dd512a reverse activity mapping improvements 2018-12-19 20:03:31 -08:00
harukin fdd0dbd973 edit translation 2018-12-19 20:48:05 +09:00
Mario Vavti 774dd6d5e3 use count() instead of sizeof() 2018-12-19 11:08:28 +01:00
Mario 4cbaddf4c4 Merge branch 'dark-fix-dev' into 'dev'
fix for dark theme; includes one changes to bbcode.php and redbasic/css/style.css

See merge request hubzilla/core!1442
2018-12-19 10:14:29 +01:00
Mario 10f1da2736 Merge branch 'util-reload_addons' into 'dev'
Add reload to util/addons

See merge request hubzilla/core!1434
2018-12-19 10:12:59 +01:00
M. Dent 0e5d76e735 Add reload to util/addons 2018-12-19 10:12:59 +01:00
Mario Vavti 339c9cceec check if we deal with an array before sizeof() 2018-12-19 10:05:18 +01:00
phani00 2354bb5427 remove color from style.css (default) but add a little padding; add color & border radius to dark.css. 2018-12-18 17:54:39 +01:00
Max Kostikov fe80f8179c Merge branch 'channel_b64_enc_mid' into 'dev'
make mod channel deal with b64 encoded mid's

See merge request hubzilla/core!1443
2018-12-18 15:10:58 +01:00
phani00 b97143e9db change hl text color to the default text color in non-dark schema. looks good, except in dark, where i can change it in dark.css. 2018-12-18 14:02:50 +01:00
phani00 aaab905e72 remove some fancy formatting. 2018-12-18 12:37:51 +01:00
Mario Vavti bc6d384ca9 make mod channel deal with b64 encoded mid\s
;
2018-12-18 10:43:06 +01:00
Mario 6fc8c174f9 Merge branch 'dev' into 'dev'
Remove scale_external_images()

See merge request hubzilla/core!1441
2018-12-18 10:17:57 +01:00
Mario Vavti 63b205c601 Merge remote-tracking branch 'mike/master' into dev 2018-12-18 09:59:34 +01:00
harukin f0a834f7e8 edit translation 2018-12-18 15:05:36 +09:00
harukin fdb2cf09c7 edit translation 2018-12-18 14:26:16 +09:00
harukin a67738380c edit translation 2018-12-18 14:19:34 +09:00
zotlabs 15ce8bc79b Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-12-17 18:45:42 -08:00
zotlabs 8d70b91955 regression: mail from dev to core not delivering 2018-12-17 18:14:32 -08:00
zotlabs a33ed05bec fix default values for affinity tool and other information which could be lost when approving a connection without the entire form provided by connedit. 2018-12-17 11:32:59 -08:00
phani00 aace8a14ce new fix for dark theme
change implementation of hl-tags in include/bbcode.php
insert class='default-highlight' instead of background-color: 'yellow' into span
add span.default-highlight definition to view/theme/redbasic/css/style.css

this works for all schemas incl. dark.
2018-12-17 15:28:15 +00:00
phani00 d80b8ff30f Merge branch 'dev' into dark-fix-dev 2018-12-17 15:18:24 +00:00
Max Kostikov 3a66255576 Remove scale_external_images() 2018-12-17 13:29:37 +01:00
Max Kostikov 1541f67eab Remove scale_external_images() 2018-12-17 13:28:58 +01:00
Max Kostikov a2959c6e9e Remove scale_external_images() 2018-12-17 13:28:18 +01:00
zotlabs 06c71eec65 default curl to http/1.1
(cherry picked from commit 04a45a407e)
2018-12-17 12:17:44 +01:00
phani00 70a7661711 remove my dark theme fixes. 2018-12-17 10:08:45 +00:00
Mario d190b1995b Merge branch 'dev' into 'dev'
Keep remote site headers to respect caching policy

See merge request hubzilla/core!1440
2018-12-17 10:55:53 +01:00
Mario a6f8230063 Merge branch 'memory-warn2' into 'dev'
add warning if upload_filesize < 4MB.

See merge request hubzilla/core!1438
2018-12-17 10:55:29 +01:00
DM42.Net (Matt Dent) aabc6c2825 Add return if no local_channel()
(cherry picked from commit 5bcc379530)
2018-12-17 10:46:43 +01:00
DM42.Net (Matt Dent) 8323458da9 ARTICLES MODULE: Default to local_channel() user when no argv(1) is passed.
(cherry picked from commit 3f06a857c2)
2018-12-17 10:46:24 +01:00
Mario Vavti e4c60d70b0 Merge remote-tracking branch 'mike/master' into dev 2018-12-17 10:12:53 +01:00
Max Kostikov 4d8a815932 Keep remote site headers for caching 2018-12-17 09:34:30 +01:00
Max Kostikov b0e5f5973a Merge branch 'dev' into 'dev'
Move SSLify code from Photo cache addon

See merge request hubzilla/core!1439
2018-12-17 09:19:08 +01:00
Max Kostikov 05cb4fd897 Move SSLify code from Photo cache addon 2018-12-17 09:13:03 +01:00
Max Kostikov 72dc6ea77c Revert Photos.php code 2018-12-17 01:16:08 +01:00
Max Kostikov 1b0a6fe9eb SSLify cached URL on redirect if needed 2018-12-17 00:58:46 +01:00
Max Kostikov 363ad01bce SSLify cached URL on redirect if needed 2018-12-17 00:30:36 +01:00
zotlabs 04a45a407e default curl to http/1.1 2018-12-16 14:38:58 -08:00
phani00 14735e0a48 Update Zotlabs/Module/Setup.php 2018-12-16 22:04:28 +01:00
phani00 1c07428f89 add warning if upload_filesize < 4MB. 2018-12-16 20:35:20 +00:00
Max Kostikov e0d68664c4 Remove photo_cache_enable variable 2018-12-16 20:48:36 +01:00
Mario 6c72c3d4a5 Merge branch 'patch-20181214a' into 'dev'
ARTICLES MODULE: Default to local_channel() user when no argv(1) is passed.

See merge request hubzilla/core!1427
2018-12-16 20:08:52 +01:00
harukin 9df8dbee08 Merge branch 'develop' into 'japanese'
add harukin- picture

See merge request harukin/core!29
2018-12-16 18:44:51 +09:00
harukin 140af45bb0 Merge branch 'add-harukin--future' into 'develop'
add harukin- picture

See merge request harukin/core!28
2018-12-16 18:43:41 +09:00
harukin 2bf2f2518c add harukin- picture 2018-12-16 18:35:45 +09:00
DM42.Net (Matt Dent) 5bcc379530 Add return if no local_channel() 2018-12-15 19:49:59 -05:00
M. Dent c854ec0686 Merge branch 'dev' into 'dev'
Update OAuth2Storage.php - fix email retrieval in getUser

See merge request hubzilla/core!1436
2018-12-15 22:33:03 +01:00
Pascal Deklerck 6a825cc504 Update OAuth2Storage.php - fix email retrieval in getUser 2018-12-15 22:19:18 +01:00
Mario 3ed6763da9 Merge branch 'custom-item-types' into 'dev'
Add ITEM_TYPE_CUSTOM and hooks for processing custom item types

See merge request hubzilla/core!1431
2018-12-15 20:55:28 +01:00
Mario dbeabb8ff0 Merge branch 'patch-20181214f' into 'dev'
Set min/maxversion for plugins to STD_VERSION unless otherwise specified

See merge request hubzilla/core!1430
2018-12-15 20:32:01 +01:00
Mario cc66e1d966 Merge branch 'patch-20181214d' into 'dev'
Make Affinity Slider (optionally) 'sticky' across page loads.

See merge request hubzilla/core!1429
2018-12-15 20:31:06 +01:00
Mario Vavti d7c7ff1c12 fix wiki preview issue with hyperlinks
(cherry picked from commit 919ea9f750)
2018-12-15 18:20:21 +01:00
Mario Vavti 919ea9f750 fix wiki preview issue with hyperlinks 2018-12-15 18:19:29 +01:00
harukin 5816ee9f9a Merge branch 'develop' into 'japanese'
merge again upstream/master for 3.8.7

See merge request harukin/core!27
2018-12-15 17:20:44 +09:00
harukin bcb258bcbb Merge branch 'develop' into 'master'
merge again upstream/master for 3.8.7

See merge request harukin/core!26
2018-12-15 17:20:18 +09:00
harukin e02c09d361 merge again upstream/master for 3.8.7 2018-12-15 17:17:00 +09:00
DM42.Net (Matt Dent) 09b2cdd618 Add ITEM_TYPE_CUSTOM and hooks for processing custom item types 2018-12-14 20:20:26 -05:00
Max Kostikov 1e526e68ab Merge branch 'patch-20181214b' into 'dev'
Recreate MR#1419 for dev branch

See merge request hubzilla/core!1428
2018-12-14 22:58:22 +01:00
Mario Vavti d77c7d51e3 update changelog
(cherry picked from commit 4ff3c57976)
2018-12-14 21:47:20 +01:00
Mario Vavti 4ff3c57976 update changelog 2018-12-14 21:46:48 +01:00
Mario Vavti d51d0160d3 fix issue with linkdropper
(cherry picked from commit f81a3ba45d)
2018-12-14 21:32:23 +01:00
zotlabs c2ad9d4996 regression: the ability to order apps messed up since adding pinned apps to the ordering
(cherry picked from commit 6464099364)
2018-12-14 21:31:02 +01:00
DM42.Net (Matt Dent) 3416190e4b Set min/maxversion for plugins to STD_VERSION unless otherwise specified 2018-12-14 14:22:28 -05:00
DM42.Net (Matt Dent) de7cb6d6ad Fix syntax error 2018-12-14 13:59:41 -05:00
DM42.Net (Matt Dent) eb297104de Make Affinity Slider (optionally) 'sticky' across page loads. (default is current behavior: reset slider with each page load) 2018-12-14 12:55:49 -05:00
harukin dfa6463e5b Merge branch 'develop' into 'japanese'
merge from upsream

See merge request harukin/core!25
2018-12-15 00:48:21 +09:00
harukin 9cd9776b7d Merge branch 'develop' into 'master'
merge from upsream

See merge request harukin/core!24
2018-12-15 00:47:46 +09:00
harukin 097afab9f4 merge from upsream 2018-12-15 00:40:38 +09:00
DM42.Net (Matt Dent) 03a214c8b9 Recreate MR#1419 for dev branch 2018-12-14 10:05:41 -05:00
DM42.Net (Matt Dent) 3f06a857c2 ARTICLES MODULE: Default to local_channel() user when no argv(1) is passed. 2018-12-14 09:55:27 -05:00
Mario 79f828125d version bump 2018-12-14 11:47:02 +01:00
Mario Vavti ad4b18cbbe return on readImageBlob() exception
(cherry picked from commit 993db01400)
2018-12-14 11:31:11 +01:00
Mario Vavti 1bd49671b7 add photo_view_filter hook and fix minor issue with unset auto_save_draft variable which resultet in a javascript error
(cherry picked from commit 7894fed741)
2018-12-14 11:30:57 +01:00
zotlabs 9896057549 home notifications won't expand if there are more than 300 unseen network notifications ahead of them.
(cherry picked from commit 30efeb5bec)
2018-12-14 11:30:25 +01:00
phani00 44832bbacb change redbasic dark schema to make categories and highlights readable
additions to /view/theme/redbasic/schema/dark.css to change the appearance of category
badges and highlighted text ([hl]...[/hl]).

hl text changed from master: it's not 'strong' anymore. commented out the pseudo-class
selector that works in master but not in dev anymore.


(cherry picked from commit 18caf0273f)
2018-12-14 11:30:05 +01:00
zotlabs f20a923dd7 total_identities restriction off by one
(cherry picked from commit e60fb17524)
2018-12-14 11:29:33 +01:00
zotlabs 30403da326 reset page title if article has no title.
(cherry picked from commit 8ab1f31058)
2018-12-14 11:29:06 +01:00
Mario Vavti f81a3ba45d fix issue with linkdropper 2018-12-14 11:23:08 +01:00
harukin 018fa052f2 edit translation 2018-12-14 19:21:10 +09:00
Mario Vavti c771d2809f Merge remote-tracking branch 'mike/master' into dev 2018-12-14 10:28:55 +01:00
zotlabs fc78206049 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-12-13 16:13:13 -08:00
Manuel Jiménez Friaza 618d673947 Merge remote-tracking branch 'upstream/dev' into dev 2018-12-13 12:34:04 +01:00
zotlabs 6464099364 regression: the ability to order apps messed up since adding pinned apps to the ordering 2018-12-12 19:11:30 -08:00
harukin 7c19f0cca7 edit translation 2018-12-12 11:42:46 +09:00
harukin c2181c23ef edit translation 2018-12-12 11:31:05 +09:00
harukin 3cf145aa6a edit translation 2018-12-11 23:01:28 +09:00
Max Kostikov 6bea3d6bfc Merge branch 'fix_photo_imagick' into 'dev'
return on readImageBlob() exception

See merge request hubzilla/core!1426
2018-12-11 13:31:34 +01:00
Mario Vavti 993db01400 return on readImageBlob() exception 2018-12-11 12:21:09 +01:00
harukin f2d078e3cd edit translation 2018-12-11 10:02:20 +09:00
M. Dent 4cb4f17500 Merge branch 'photo-hook' into 'dev'
add photo_view_filter hook and fix minor issue with unset auto_save_draft…

See merge request hubzilla/core!1425
2018-12-10 21:49:12 +01:00
Mario Vavti 15a689c6f5 Merge remote-tracking branch 'mike/master' into dev 2018-12-10 10:38:06 +01:00
Mario Vavti 7894fed741 add photo_view_filter hook and fix minor issue with unset auto_save_draft variable which resultet in a javascript error 2018-12-10 10:37:29 +01:00
M. Dent 61f7c1e7d7 Merge branch 'dark-theme-dev' into 'dev'
change redbasic dark schema to make categories and highlights readable

See merge request hubzilla/core!1424
2018-12-10 05:36:58 +01:00
zotlabs 30efeb5bec home notifications won't expand if there are more than 300 unseen network notifications ahead of them. 2018-12-09 20:24:04 -08:00
phani00 18caf0273f change redbasic dark schema to make categories and highlights readable
additions to /view/theme/redbasic/schema/dark.css to change the appearance of category
badges and highlighted text ([hl]...[/hl]).

hl text changed from master: it's not 'strong' anymore. commented out the pseudo-class
selector that works in master but not in dev anymore.
2018-12-10 03:03:28 +00:00
zotlabs 214b81e491 rmagic discovery for z6 networks 2018-12-09 16:37:15 -08:00
zotlabs e60fb17524 total_identities restriction off by one 2018-12-09 11:20:57 -08:00
harukin 4f1fdf85c8 edit translation 2018-12-09 13:31:34 +09:00
harukin 33865993db edit translation 2018-12-09 13:29:24 +09:00
harukin 5a27aaef24 edit translation 2018-12-06 22:10:55 +09:00
Mario Vavti 7f65d82a74 Merge remote-tracking branch 'mike/master' into dev 2018-12-06 12:50:23 +01:00
zotlabs 8ab1f31058 reset page title if article has no title. 2018-12-05 16:24:30 -08:00
Manuel Jiménez Friaza 4cd5529027 Merge remote-tracking branch 'upstream/dev' into dev 2018-12-05 12:32:33 +01:00
harukin 770036c5a8 Merge branch 'develop' into 'japanese'
merge from upsream 3.8.6 release

See merge request harukin/core!23
2018-12-04 23:55:59 +09:00
harukin d38b75900a Merge branch 'develop' into 'master'
merge from upsream 3.8.6 release

See merge request harukin/core!22
2018-12-04 23:55:47 +09:00
harukin e8acf7e87a merge from upsream 3.8.6 release 2018-12-04 23:52:59 +09:00
harukin 2a4aea67b8 edit translation 2018-12-04 23:47:09 +09:00
Max Kostikov d12744011a Merge branch 'dev' into 'dev'
Add strings to Russian translation

See merge request hubzilla/core!1418
2018-12-04 11:50:04 +01:00
Max Kostikov c0e4c92d47 Update hstrings.php 2018-12-04 11:41:59 +01:00
Max Kostikov cc3e910194 Update hmessages.po 2018-12-04 11:41:42 +01:00
Mario Vavti 5d9f993352 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-12-04 11:39:14 +01:00
Mario eaa52c19a8 Merge branch 'photocache' into 'dev'
Less dependence on cache logic

See merge request hubzilla/core!1417
2018-12-04 11:38:58 +01:00
zotlabs 42aeb19562 partial solution for obj|tgt multiple (zot and zot6) encodings; the zot6 version will be stored under $item['obj']['asld'] 2018-12-03 20:09:57 -08:00
zotlabs ffc3dba682 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-12-03 19:19:31 -08:00
zotlabs 1acc5ceb5f more merging 2018-12-03 19:18:20 -08:00
zotlabs 7d694dca07 more work on z6 commenting 2018-12-03 18:50:45 -08:00
zotlabs 7a693500c4 fix generated plink 2018-12-03 14:21:33 -08:00
Max Kostikov 1c44912aff Update Photo.php 2018-12-03 21:33:32 +01:00
Mario Vavti 5e14da67e1 quickfix for es-es language
(cherry picked from commit 6b68a76bbe)
2018-12-03 21:24:29 +01:00
Mario Vavti 6b68a76bbe quickfix for es-es language 2018-12-03 21:22:02 +01:00
Max Kostikov b586fcebab Update Photo.php 2018-12-03 21:21:23 +01:00
Max Kostikov 244c0d828a Update Photo.php 2018-12-03 13:29:27 +01:00
Max Kostikov 57ebd7e170 New logic for less dependence on cache logic 2018-12-03 13:10:55 +01:00
Mario Vavti 8f10b58cb1 version 3.8.6 2018-12-03 12:23:55 +01:00
Mario Vavti f8bc408abc update strings 2018-12-03 12:07:56 +01:00
Mario Vavti f581f6163a optimize autoload cache 2018-12-03 11:52:38 +01:00
Mario Vavti 5776471547 changelog
(cherry picked from commit 88486a1278)
2018-12-03 11:48:30 +01:00
Mario Vavti 88486a1278 changelog 2018-12-03 11:47:28 +01:00
Mario Vavti 9fcadc2d7c prevent incompatible export files (osada/zap) from being imported (manual patch from dev) 2018-12-03 11:08:39 +01:00
Mario Vavti c50e3a702a more notifications fixes
(cherry picked from commit 9ef6c57ca5)
2018-12-03 10:49:08 +01:00
Mario Vavti 2173ef5fb6 catch exception if readImageBlob() receives bogus data
(cherry picked from commit 443d7684db)
2018-12-03 10:48:39 +01:00
Mario Vavti 9ef6c57ca5 more notifications fixes 2018-12-03 10:46:49 +01:00
Mario Vavti 443d7684db catch exception if readImageBlob() receives bogus data 2018-12-03 10:45:43 +01:00
Max Kostikov 1f6da1c653 Merge branch 'photocache' into 'dev'
Add flag to allow to save image without validation

See merge request hubzilla/core!1416
2018-12-03 00:57:52 +01:00
Max Kostikov c165894ce9 Add Expires field support 2018-12-03 00:51:09 +01:00
Max Kostikov 19903ea3c1 Add flag to allow to save image without validation 2018-12-02 21:59:08 +01:00
M. Dent 0b38ab259c Merge branch 'photocache' into 'dev'
Add Photo Cache addon support

See merge request hubzilla/core!1412
2018-12-02 19:33:54 +01:00
harukin 5d82037ffb edit translation 2018-12-02 20:36:14 +09:00
harukin a41713febb edit translation 2018-12-02 20:29:11 +09:00
harukin 5002d8e1fa edit translation 2018-12-02 19:59:58 +09:00
Mario Vavti 237c6eed50 fallback to url if we have not got an addr
(cherry picked from commit a3ba7f0788)
2018-12-02 11:39:04 +01:00
Mario Vavti a3ba7f0788 fallback to url if we have not got an addr 2018-12-02 11:38:13 +01:00
Mario Vavti f13b1e8604 fix filtering by addr in handleNotificationsItems()
(cherry picked from commit f083c0cba1)
2018-12-02 10:59:33 +01:00
Mario Vavti f083c0cba1 fix filtering by addr in handleNotificationsItems() 2018-12-02 10:58:54 +01:00
Mario Vavti defa2d9df1 make pdf preview 100% width and 300px height to match it openstreetmaps preview
(cherry picked from commit df84352385)
2018-12-02 10:18:37 +01:00
Mario Vavti 05c422ef23 redbasic sticky aside fixes
(cherry picked from commit 8d4f6a7865)
2018-12-02 10:18:20 +01:00
zotlabs 51d274961b typo
(cherry picked from commit 6f22e47feb)
2018-12-02 10:18:05 +01:00
zotlabs 4b4cc04897 allow notification filtering by name or addr
(cherry picked from commit c6acb6191c)
2018-12-02 10:17:45 +01:00
zotlabs 4bf3d4d87a attached photo permissions regression
(cherry picked from commit 6cade7d935)
2018-12-02 10:17:29 +01:00
Manuel Jiménez Friaza 71cc980e96 Revision 1 doc/es-es/about/about.bb
(cherry picked from commit 5ac08ec3aa)

(cherry picked from commit 37d563c30e)
2018-12-02 10:16:50 +01:00
Mario 58c0b81908 use flex for the default template
(cherry picked from commit 3775be4ce9)
2018-12-02 10:16:24 +01:00
M. Dent 3b42bd43ab Do not store serialized pconfig value received via to Module/Pconfig.php
(cherry picked from commit 6b02c664fb)
2018-12-02 10:15:55 +01:00
Mario a151532ffa update jquery-file-upload and psr-log via composer
(cherry picked from commit c7ae3fdc9a)
2018-12-02 10:14:58 +01:00
Mario a0d1ce77dc update imagesloaded to version 4.1.4 via composer
(cherry picked from commit c667572d3e)
2018-12-02 10:14:37 +01:00
Manuel Jiménez Friaza 863cae1bab Update es-es
(cherry picked from commit ca98a566ee)
2018-12-02 10:13:43 +01:00
zotlabs 4010ea814a fix mastodon tag notifications (again)
(cherry picked from commit 8e71324514)
2018-12-02 10:13:12 +01:00
zotlabs 8e25c091f4 no mention notifications from mastodon (and pleroma)
(cherry picked from commit ea235c0c67)
2018-12-02 10:12:44 +01:00
Max Kostikov 2a57e00cb4 Remove local_channel() check on cache_body_hook call 2018-12-02 10:07:12 +01:00
M. Dent 52424b0f9c Merge branch 'pdf_embed_fixes' into 'dev'
make pdf preview 100% width and 300px height to match it openstreetmaps preview

See merge request hubzilla/core!1414
2018-12-02 05:09:45 +01:00
M. Dent 132547a9d9 Merge branch 'sticky_aside_fixes' into 'dev'
redbasic sticky aside fixes

See merge request hubzilla/core!1415
2018-12-02 05:07:59 +01:00
Mario Vavti fdb0459288 Merge remote-tracking branch 'mike/master' into dev 2018-12-01 21:43:54 +01:00
Mario Vavti df84352385 make pdf preview 100% width and 300px height to match it openstreetmaps preview 2018-12-01 21:37:33 +01:00
Mario Vavti 8d4f6a7865 redbasic sticky aside fixes 2018-12-01 21:30:18 +01:00
harukin d72276df94 edit translation 2018-12-01 23:15:39 +09:00
harukin 450bb1c2cb edit translation 2018-12-01 22:54:51 +09:00
zotlabs 6f22e47feb typo 2018-11-30 22:39:10 -08:00
zotlabs c6acb6191c allow notification filtering by name or addr 2018-11-30 19:03:14 -08:00
zotlabs 6cade7d935 attached photo permissions regression 2018-11-30 13:54:17 -08:00
Max Kostikov c857ecab46 Create plink depending on message id format 2018-11-30 19:56:49 +01:00
Max Kostikov 53d9cbc69c Check local_channel() before cache call 2018-11-30 11:38:47 +01:00
Max Kostikov 0ee403eab3 Move cache code to addon 2018-11-30 10:50:00 +01:00
Max Kostikov 6f2d09eb20 Fix wrong parameter 2018-11-29 23:28:45 +01:00
Max Kostikov d6442ec991 Update text.php 2018-11-29 23:07:39 +01:00
Max Kostikov f3831fa77f Better cache settings logic 2018-11-29 21:27:06 +01:00
Max Kostikov 3265c2e543 Skip sslify for images if it already were cached with https enabled 2018-11-29 20:36:21 +01:00
Max Kostikov 1a9ea64523 Update text.php 2018-11-29 19:28:54 +01:00
Max Kostikov 9de650e175 Cache for viewer channel 2018-11-29 19:13:43 +01:00
Max Kostikov d8b5f383f5 Disable links to cached photos for non logged viewers 2018-11-29 16:21:50 +01:00
harukin 658c0734e2 edit translation 2018-11-30 00:19:54 +09:00
harukin 5c7f01140a edit translation 2018-11-29 22:53:13 +09:00
harukin 12767746ca edit translation 2018-11-29 22:50:12 +09:00
harukin ffa86b25db edit translation 2018-11-29 22:46:14 +09:00
harukin 2763c0f40e edit translation 2018-11-29 22:42:28 +09:00
Max Kostikov 6aa99a903f Code cleanup 2018-11-29 11:56:56 +01:00
Max Kostikov d9faf6c4bb Update text.php 2018-11-29 11:48:12 +01:00
Max Kostikov 48cd5855fe Add photo cache support using sslify() 2018-11-29 11:06:14 +01:00
Max Kostikov bd0fc8a2d7 Add photo cache hooks 2018-11-29 10:38:25 +01:00
Max Kostikov 476bd7400d Add photo cache cleanup 2018-11-29 10:37:39 +01:00
Max Kostikov bd10d48338 Update database with expires field for photo 2018-11-29 10:36:56 +01:00
Max Kostikov bb91064416 Add expires for photo 2018-11-29 10:35:56 +01:00
Max Kostikov 72d2fe2fd4 Add expires for photo 2018-11-29 10:35:11 +01:00
Max Kostikov 92a5b9ac41 Add PHOTO_CACHE photo type 2018-11-29 10:34:18 +01:00
M. Dent cded6b1136 Merge branch 'es-es' into 'dev'
Revision 1 doc/es-es/about/about.bb

See merge request hubzilla/core!1410
2018-11-28 05:32:10 +01:00
M. Dent 19f0ce7e37 Merge branch 'default2flex-conversion' into 'dev'
use flex for the default template

See merge request hubzilla/core!1409
2018-11-28 04:03:39 +01:00
M. Dent a88a515fa0 Merge branch 'composer-updates' into 'dev'
update jquery-file-upload and psr-log via composer

See merge request hubzilla/core!1408
2018-11-28 03:55:13 +01:00
M. Dent a4b2eac0f0 Merge branch 'update-imagesloaded' into 'dev'
update imagesloaded to version 4.1.4 via composer

See merge request hubzilla/core!1407
2018-11-28 03:52:53 +01:00
M. Dent 0bd38290e6 Merge branch 'pg-fixes' into 'dev'
fix db upgrade 1228 for postgres

See merge request hubzilla/core!1403
2018-11-28 03:49:22 +01:00
zotlabs 19e4f3c2f0 prevent incompatible export files (osada/zap) from being imported. This is to keep your DB from getting trashed. We probably need a similar thing for item import since the object formats aren't compatible 2018-11-27 11:53:02 -08:00
harukin e6edac1589 edit translation 2018-11-28 00:29:24 +09:00
harukin 781d0c0fe0 edit translation 2018-11-27 23:26:03 +09:00
harukin b48cb47f41 edit translation 2018-11-27 19:38:00 +09:00
harukin 1ece7caa57 edit translation 2018-11-27 19:35:54 +09:00
harukin 0c1a3b1a61 edit translation 2018-11-27 19:10:07 +09:00
harukin 2b5d4ef346 edit translation 2018-11-27 19:07:33 +09:00
harukin 2dbd990017 edit translate 2018-11-27 18:59:50 +09:00
harukin 34961b39fe edit translation 2018-11-27 18:53:26 +09:00
harukin 088a54dacb edit translation 2018-11-27 18:47:25 +09:00
harukin bc9d4a7643 edit translation 2018-11-27 18:32:55 +09:00
harukin e0ee14d5b0 edit translation 2018-11-27 16:19:46 +09:00
harukin e88db3d609 edit translation 2018-11-27 15:45:10 +09:00
harukin f7d3550122 edit translation 2018-11-27 15:35:48 +09:00
harukin 896681b671 edit translation 2018-11-27 14:47:19 +09:00
harukin fbdbd440d2 edit translation 2018-11-27 14:40:32 +09:00
harukin c0af854cb6 fixed translation 2018-11-27 14:37:10 +09:00
harukin 92889397e6 edit translation 2018-11-27 14:29:43 +09:00
harukin 7c10b53209 えぢ らんぁちおん 2018-11-27 14:19:23 +09:00
harukin a154fedbfb edit translation 2018-11-27 14:13:47 +09:00
harukin 7c43f5b554 edit translation 2018-11-27 14:09:58 +09:00
harukin d19769115c edit translation 2018-11-27 14:03:06 +09:00
harukin 561ffce031 edit translation & add OSUSHI!.svg 2018-11-27 11:48:06 +09:00
harukin 61e2190f98 edit translation 2018-11-27 03:14:59 +09:00
harukin c56abbf7df fixed translation 2018-11-27 03:11:16 +09:00
harukin 1cd2f7e0f4 edit translation 2018-11-27 03:08:22 +09:00
harukin 516ad23aa5 fix translation miss 2018-11-27 03:05:27 +09:00
harukin 0599d27463 edit translation 2018-11-27 03:04:07 +09:00
harukin f56107c84d edit translation 2018-11-27 02:59:08 +09:00
harukin dd61824df5 edit translation 2018-11-27 02:54:15 +09:00
harukin 531b4d955c edit translation 2018-11-27 02:00:16 +09:00
Manuel Jiménez Friaza 8bede7b81f Merge branch 'cherry-pick-5ac08ec3' into 'es-es'
Revision 1 doc/es-es/about/about.bb

See merge request mjfriaza/core!3
2018-11-26 12:59:03 +01:00
Manuel Jiménez Friaza 37d563c30e Revision 1 doc/es-es/about/about.bb
(cherry picked from commit 5ac08ec3aa)
2018-11-26 12:53:24 +01:00
Mario 3775be4ce9 use flex for the default template 2018-11-26 12:44:10 +01:00
Manuel Jiménez Friaza 5ac08ec3aa Revision 1 doc/es-es/about/about.bb 2018-11-26 12:43:24 +01:00
harukin 87e2aa42b8 edit translation 2018-11-26 13:23:18 +09:00
harukin d9560ad124 edit translation 2018-11-26 13:19:32 +09:00
harukin b93397e415 edit translation 2018-11-26 13:14:51 +09:00
harukin 44d89c7209 edit translation 2018-11-26 12:49:12 +09:00
harukin 5bb9890660 edit translation 2018-11-26 12:33:13 +09:00
harukin f22d589c49 edit translation 2018-11-26 10:55:54 +09:00
harukin 17f873db70 edit translation /settings/display fin 2018-11-26 10:43:55 +09:00
harukin 1647c39bf2 Merge branch 'develop' into 'japanese'
merge from master/upstream

See merge request harukin/core!21
2018-11-26 10:22:21 +09:00
harukin 026d6d4a70 edit translation /settings/display 2018-11-26 03:44:07 +09:00
harukin 93113e0f00 edit translation /settings/channel fin 2018-11-26 03:29:31 +09:00
harukin 236692908a edit translation /settings/channel 2018-11-26 03:22:27 +09:00
harukin 6eea7c7e50 edit translation /settings/channel 2018-11-26 00:48:51 +09:00
harukin 31516acec2 edit translation /settings/editor/ fin 2018-11-26 00:32:55 +09:00
harukin c9728961bf edit settings/editor/ launguage 2018-11-26 00:12:46 +09:00
harukin 7bd89a9ab1 2018-11-26 00:00:41 +09:00
harukin 39b553529d add manifest.json 2018-11-25 23:36:59 +09:00
Mario e5883dd605 Merge branch 'patch-20181120a' into 'dev'
Do not store serialized pconfig value received via  to Module/Pconfig.php

See merge request hubzilla/core!1402
2018-11-25 10:22:09 +01:00
M. Dent 6b02c664fb Do not store serialized pconfig value received via to Module/Pconfig.php 2018-11-25 10:22:09 +01:00
Mario c7ae3fdc9a update jquery-file-upload and psr-log via composer 2018-11-25 10:18:26 +01:00
Mario c667572d3e update imagesloaded to version 4.1.4 via composer 2018-11-25 10:09:26 +01:00
Mario 9bbd6ff67d Merge branch 'es-es' into 'dev'
Update es-es

See merge request hubzilla/core!1406
2018-11-24 21:16:59 +01:00
Manuel Jiménez Friaza ca98a566ee Update es-es 2018-11-24 13:23:20 +01:00
Manuel Jiménez Friaza f865d6e5da Resolved merge conflicts 2018-11-24 13:01:01 +01:00
Mario bc9f2922e0 Merge remote-tracking branch 'mike/master' into dev 2018-11-23 22:04:51 +01:00
zotlabs c5a9b00eae Organization actor type was missing 2018-11-23 12:25:05 -08:00
Mario f408ff982c Merge remote-tracking branch 'mike/master' into dev 2018-11-23 15:42:40 +01:00
zotlabs 9a8d1200ec use uuid in file storage 2018-11-22 18:39:38 -08:00
Mario 16c7aa2813 fix db upgrade 1228 for postgres 2018-11-22 12:52:08 +01:00
Mario 85f52d2aed Merge remote-tracking branch 'mike/master' into dev 2018-11-22 10:17:18 +01:00
zotlabs 8e71324514 fix mastodon tag notifications (again) 2018-11-21 20:25:59 -08:00
zotlabs ea235c0c67 no mention notifications from mastodon (and pleroma) 2018-11-21 20:03:58 -08:00
harukin ea995d017b Merge branch 'develop' into 'master'
merge from master/upstream

See merge request harukin/core!20
2018-11-21 21:54:12 +09:00
harukin 1aecbbece5 merge from master 2018-11-21 21:49:47 +09:00
Mario Vavti e30be643c9 fix call to undefined function
(cherry picked from commit 0bba9482df)
2018-11-21 13:27:21 +01:00
Mario Vavti 0bba9482df fix call to undefined function 2018-11-21 13:21:29 +01:00
Mario 07fd2dbc99 Merge branch 'dev' into 'dev'
Update Russian translation

See merge request hubzilla/core!1400
2018-11-20 11:08:27 +01:00
Mario Vavti f8a8559523 fix typo which prevented propagation of comments
(cherry picked from commit 0c94747ab1)
2018-11-20 10:09:46 +01:00
zotlabs 6481c9dca1 use this form instead 2018-11-19 15:20:28 -08:00
zotlabs 7aaa1973f4 push recent changes 2018-11-19 15:04:08 -08:00
harukin a12abaac9d 規約誤植修正 2018-11-19 22:30:10 +09:00
Max Kostikov 4dea1b5a0d Replace hmessages.po 2018-11-19 13:52:31 +01:00
Max Kostikov da44ab0529 Replace hstrings.php 2018-11-19 13:51:54 +01:00
harukin 1a1e8463cc Merge branch 'develop' into 'japanese'
merge from upsream 3.8.5 release

See merge request harukin/core!19
2018-11-19 21:44:09 +09:00
harukin 343fccd7fd Merge branch 'develop' into 'master'
merge from upsream 3.8.5 release

See merge request harukin/core!18
2018-11-19 21:40:07 +09:00
harukin 577102c4ec merge from upsream 3.8.5 release 2018-11-19 21:40:07 +09:00
Mario 73b836c73d Revert "Fix return on wrong sotred in Content-Length size for full size photos"
This reverts commit 6010b5c619
2018-11-19 13:11:18 +01:00
Mario af0c2f59cc Revert "Add filesize for streaming content"
This reverts commit 238a616292
2018-11-19 13:11:04 +01:00
harukin f5faa053bf merge from upsream 3.8.5 release 2018-11-19 20:40:12 +09:00
Mario Vavti 1044e8e91a version 3.8.5 2018-11-19 11:12:32 +01:00
Mario Vavti dffc0a4ed8 changelog
(cherry picked from commit 5cb4cdaa5e)
2018-11-19 11:11:47 +01:00
Mario Vavti ba4b1cb5af Merge branch 'master' of https://framagit.org/hubzilla/core 2018-11-19 11:10:36 +01:00
Mario Vavti 5cb4cdaa5e changelog 2018-11-19 11:10:22 +01:00
Mario Vavti 0525eb2d29 update sql schemas to include update column in pconfig table
(cherry picked from commit ae97649948)
2018-11-19 10:45:33 +01:00
Mario 7be1d9e45a Merge branch 'patch-20181118a' into 'dev'
Patch 20181118a - fix delayed publication of posts

See merge request hubzilla/core!1398

(cherry picked from commit f34af496ec)

3787c490 Fix: delayed items propagate before publication on cloned channels
2018-11-19 10:45:01 +01:00
Mario f34af496ec Merge branch 'patch-20181118a' into 'dev'
Patch 20181118a - fix delayed publication of posts

See merge request hubzilla/core!1398
2018-11-19 10:44:41 +01:00
Mario Vavti ae97649948 update sql schemas to include update column in pconfig table 2018-11-19 10:42:18 +01:00
DM42.Net (Matt Dent) 3787c490d4 Fix: delayed items propagate before publication on cloned channels 2018-11-18 07:00:06 -05:00
Max Kostikov c3f1aae570 Merge branch 'mod-zot-fix' into 'dev'
fix typo which prevented propagation of comments

See merge request hubzilla/core!1399
2018-11-18 11:21:07 +01:00
Mario Vavti 0c94747ab1 fix typo which prevented propagation of comments 2018-11-18 11:02:01 +01:00
Mario Vavti 783cca1e13 recalculate photo filesize when rotating an image
(cherry picked from commit f15e32d063)
2018-11-17 09:51:28 +01:00
Mario Vavti f15e32d063 recalculate photo filesize when rotating an image 2018-11-17 09:41:26 +01:00
Max Kostikov 238a616292 Add filesize for streaming content 2018-11-16 23:33:45 +01:00
Max Kostikov 6010b5c619 Fix return on wrong sotred in Content-Length size for full size photos 2018-11-16 23:14:10 +01:00
Mario Vavti 4812c5486d strlen($this->imageString()) does not return the correct size when dealing with os_storage images. use filesize() instead.
(cherry picked from commit afc75af62f)
2018-11-16 22:19:01 +01:00
Mario Vavti afc75af62f strlen($this->imageString()) does not return the correct size when dealing with os_storage images. use filesize() instead. 2018-11-16 22:14:11 +01:00
Mario 23b30fdd10 Merge branch 'dev_homeinstall_raspihub' into 'dev'
localhost, URLs, version updates

See merge request hubzilla/core!1396
2018-11-16 11:30:53 +01:00
Mario 2778a7220f Merge branch 'master' into 'master'
delivery issue

See merge request hubzilla/core!1397
2018-11-16 10:29:45 +01:00
Mario Vavti c69556f2ff Merge remote-tracking branch 'mike/master' into dev 2018-11-16 10:11:46 +01:00
zotlabs b0689614bf datetime_convert wrong args 2018-11-15 21:14:14 -08:00
zotlabs e42a401987 more work on the mid/uuid conversion 2018-11-15 20:50:47 -08:00
zotlabs 5162459e4a delivery report issue 2018-11-15 18:07:58 -08:00
zotlabs 39d914c9df add item.uuid to relevant places 2018-11-15 16:34:09 -08:00
zotlabs 8d2f4d9dfd mid -> uuid conversions for basic reactions 2018-11-15 16:02:29 -08:00
zotlabs a7d2f9b530 remove checkjs and nojs 2018-11-15 15:35:06 -08:00
zotlabs 26f593afaa delivery issue 2018-11-15 13:52:25 -08:00
Mario Vavti ca4e7f9b4f fix update 1228 2018-11-15 10:11:04 +01:00
zotlabs b11858bcac separate by network 2018-11-14 20:34:00 -08:00
zotlabs 034f23b47e update httpsig unit test which is failing 2018-11-14 19:09:18 -08:00
zotlabs 9c25f300cf fixes to old z6 delivery 2018-11-14 18:56:38 -08:00
zotlabs db4ff56f0b more logging 2018-11-14 18:41:36 -08:00
zotlabs 830c2472cb more logging 2018-11-14 18:39:23 -08:00
zotlabs 079e2af0c0 check keyid 2018-11-14 18:33:00 -08:00
zotlabs 5f166158c3 filter by network 2018-11-14 18:25:02 -08:00
zotlabs 4a06378d67 crypto fix 2018-11-14 18:19:35 -08:00
zotlabs d0f0a74df8 encrypted header issue 2018-11-14 18:14:47 -08:00
zotlabs 65a8965e85 extra logging 2018-11-14 18:07:39 -08:00
zotlabs ab2376f8d8 fix dreport link 2018-11-14 17:42:02 -08:00
zotlabs 48717dff00 change db update counter 2018-11-14 16:56:07 -08:00
zotlabs b64dd7ab57 Merge branch 'master' into zvi 2018-11-14 16:42:03 -08:00
zotlabs bf013ecf00 db updates for zot6 2018-11-14 16:40:30 -08:00
OJ Random 22b744fa23 Merge remote-tracking branch 'official/dev' into dev_homeinstall_raspihub 2018-11-14 17:32:24 +01:00
harukin f560fe3b37 Merge branch 'develop' into 'master'
利用規約追加

See merge request harukin/core!16
2018-11-15 00:34:04 +09:00
harukin 839a29a2a6 Merge branch 'develop' into 'japanese'
利用規約追加

See merge request harukin/core!17
2018-11-15 00:33:51 +09:00
harukin 81bc44b30f 利用規約追加 2018-11-15 00:33:51 +09:00
harukin 58083ccb0c 2018-11-15 00:28:19 +09:00
OJ Random 71cc2d7d5d localhost, URLs, version updates 2018-11-14 16:27:27 +01:00
harukin 976a4da0a1 2018-11-15 00:25:55 +09:00
harukin 74c48e5906 利用規約追加 2018-11-15 00:24:20 +09:00
harukin d7f0b130ce Merge branch 'develop' into 'master'
Merge Upstream to here. 3.8.4

See merge request harukin/core!15
2018-11-14 19:53:29 +09:00
harukin 1d0ad72800 Merge branch 'develop' into 'japanese'
Merge Upstream to here. 3.8.4

See merge request harukin/core!14
2018-11-14 19:51:21 +09:00
harukin 23b65c8e6e Merge Upstream to here. 3.8.4 2018-11-14 19:45:51 +09:00
Mario Vavti 62b367fa81 version 3.9.5 2018-11-14 11:22:41 +01:00
Mario Vavti beac45b075 more changelog 2018-11-14 11:20:39 +01:00
Mario Vavti dfc5159aa3 Merge branch 'dev' 2018-11-14 11:12:20 +01:00
Mario Vavti 886cdb440b changelog and version 2018-11-14 11:08:25 +01:00
Mario 6ed9443972 Merge branch 'patch-20181113b' into 'dev'
Patch 20181113b

See merge request hubzilla/core!1395
2018-11-14 09:30:54 +01:00
Mario 08e0f172de Merge branch 'dev' into 'dev'
Remove unneccessary fetch_image_from_url() function

See merge request hubzilla/core!1393
2018-11-14 09:30:28 +01:00
zotlabs cfc43f6dea Merge branch 'master' into zvi 2018-11-13 20:37:52 -08:00
DM42.Net (Matt Dent) f1d168f781 Fix double escaping after xss fix 2018-11-13 23:06:00 -05:00
DM42.Net (Matt Dent) 302d9796c4 Revert "Filter search box before display"
This reverts commit 35e66770be.
2018-11-13 22:59:36 -05:00
zotlabs ee85784be1 stay ahead of the game 2018-11-13 19:55:43 -08:00
M. Dent 1260887fa7 Merge branch 'patch-20181113a' into 'dev'
Patch 20181113a

See merge request hubzilla/core!1394
2018-11-14 03:21:32 +01:00
DM42.Net (Matt Dent) ce8073d25e Merge remote-tracking branch red/master into patch-20181113a. Add Mike's fix to search xss and Superblock fix. 2018-11-13 20:19:12 -05:00
zotlabs 31f4d9066b xss in search 2018-11-13 14:23:56 -08:00
DM42.Net (Matt Dent) 35e66770be Filter search box before display 2018-11-13 17:20:21 -05:00
Max Kostikov cf2f7f2132 Update Photo.php 2018-11-13 12:52:35 +01:00
Max Kostikov a145559662 Remove uneccessary include/photos.php 2018-11-13 11:45:18 +01:00
Max Kostikov d029e3dc16 Text formatting in Photo.php 2018-11-13 11:39:42 +01:00
Max Kostikov 286326a98e Replace fetch_image_from_url() with z_fetch_url() 2018-11-13 11:38:49 +01:00
Max Kostikov 2f59d78737 Remove fetch_image_from_url() because of functions duplicate 2018-11-13 11:37:32 +01:00
Max Kostikov adf4782076 Merge branch 'revert-6375f2d7' into 'dev'
Revert "Replace fetch_image_from_url() with z_fetch_url()"

See merge request hubzilla/core!1392
2018-11-13 11:36:02 +01:00
Max Kostikov b38ffef2be Revert "Replace fetch_image_from_url() with z_fetch_url()"
This reverts commit 6375f2d73a
2018-11-13 11:25:46 +01:00
Max Kostikov 6375f2d73a Replace fetch_image_from_url() with z_fetch_url() 2018-11-13 11:25:14 +01:00
zotlabs 1a2df9c51c item uuid changes 2018-11-12 18:25:55 -08:00
zotlabs 770fdb2b7d dreport updates 2018-11-12 16:08:22 -08:00
M. Dent a7d3a49171 Merge branch 'fix-activity-filter-widget' into 'dev'
use the correct javascript function for this case

See merge request hubzilla/core!1390
2018-11-12 21:50:08 +01:00
M. Dent 920e7db709 Merge branch 'css-fixes' into 'dev'
css fixes

See merge request hubzilla/core!1391
2018-11-12 21:49:07 +01:00
zotlabs 4a6b45cf04 enotify::format hook for superblock 2018-11-12 11:13:36 -08:00
Mario Vavti 7bd60adfbe fix css issues in bbcode conversion and focus-light schema 2018-11-12 09:35:12 +01:00
zotlabs 171ff54ea4 translate zot message packets to zot6 for delivery 2018-11-11 21:55:10 -08:00
zotlabs da452decf6 more z6 debugging 2018-11-11 15:12:01 -08:00
Mario Vavti c335719e8f use the correct javascript function for this case 2018-11-11 14:46:35 +01:00
Mario Vavti d57cdf645e Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-11-11 14:01:25 +01:00
Mario e47a96bf24 Merge branch 'dev' into 'dev'
Preserve photo modification date on edit

See merge request hubzilla/core!1389
2018-11-11 13:49:29 +01:00
Mario daad607c7c Merge branch 'dev' into 'dev'
fix shared_header img expanding to 100% width when sharing a share

See merge request hubzilla/core!1387
2018-11-11 13:47:03 +01:00
Max Kostikov 29f1f9c872 Merge branch 'dev' into 'dev'
# Conflicts:
#   include/photo/photo_driver.php
2018-11-10 20:47:35 +01:00
Max Kostikov a49cfa8142 Update photo_driver.php 2018-11-10 20:45:20 +01:00
Max Kostikov b57d296adc Preserve photo modification date 2018-11-10 20:35:14 +01:00
Mario 01d8bd445e Merge branch 'dev' into 'dev'
Remove DNS check for database connection during installation...

See merge request hubzilla/core!1384
2018-11-10 15:02:27 +01:00
harukin 04e220cc4b Merge branch 'develop' into 'japanese'
ctrl+enter適用

See merge request harukin/core!13
2018-11-10 21:34:03 +09:00
harukin cb70c48b36 Merge branch 'develop' into 'master'
コメントのctl+enter投稿の完成(iOS未対応)

See merge request harukin/core!12
2018-11-10 21:31:11 +09:00
Mario Vavti 750d6f4be9 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-11-10 12:22:09 +01:00
Max Kostikov c6e14a696e Fixed wrong value assign on compare with 0 2018-11-10 11:56:34 +01:00
Max Kostikov d34423fce9 Fixed wrong value assign on compare with 0 2018-11-10 11:53:49 +01:00
Mario 4999547f87 Merge branch 'dev' into 'dev'
Preserve received image modification date on caching

See merge request hubzilla/core!1386
2018-11-10 11:47:20 +01:00
Mario Vavti fc5dc9717a fix shared_header img expanding to 100% width when sharing a share 2018-11-10 11:31:06 +01:00
Max Kostikov d20759c141 Do not return default images from vCard 2018-11-10 11:11:23 +01:00
Max Kostikov f7b00c62a4 Remove unnecessary Zulu timezone mention 2018-11-10 10:05:28 +01:00
Max Kostikov 32873ce70d Preserve received image modification date on caching 2018-11-09 22:20:41 +01:00
Max Kostikov dc59561a95 Fixed timezone conversion 2018-11-09 22:17:11 +01:00
Mario 4bf3fdd898 Merge branch 'patch-1' into 'dev'
Return image modification date on remote fetch for caching

See merge request hubzilla/core!1383
2018-11-09 16:51:36 +01:00
harukin d87eece1d2 コメント欄ctl+enter対応化 2018-11-09 22:22:36 +09:00
harukin 4fe4eacc00 ctl+enter試験実装 2018-11-09 22:11:12 +09:00
Andrew Manning 108a892a11 Remove DNS check for database connection during installation. Causes friction with Docker deployment. 2018-11-09 05:31:55 -05:00
Max Kostikov 2c4bd9a3fe Workaround for local resource path to photo from Diaspora 2018-11-09 10:03:58 +01:00
zotlabs c80ac58eff add zot6 delivery method 2018-11-08 20:42:09 -08:00
zotlabs d56e1f6285 begin native summary support 2018-11-08 19:49:57 -08:00
zotlabs 22b3ddab66 refresh packets 2018-11-08 19:24:02 -08:00
zotlabs 3fe2491b73 didn't need xchan_portable_id 2018-11-08 15:53:48 -08:00
zotlabs 4e6758e31d item db updates 2018-11-08 15:51:52 -08:00
Max Kostikov 098ec1abb4 remove image type double guess by checking HTTP headers 2018-11-08 22:43:17 +01:00
Max Kostikov 17cf824545 Return image modification date using HTTP 'Last-Modified' and '304 Not Modified' on remote fetch for caching 2018-11-08 18:00:18 +01:00
M. Dent e35f5d3c93 Merge branch 'fix-photo' into 'dev'
Fix photo

See merge request hubzilla/core!1382
2018-11-08 13:09:05 +01:00
Mario f4f98e5856 Merge branch 'patch-1' into 'fix-photo'
Correct "Content-Length:" calculation added

See merge request mario/core!1
2018-11-08 12:13:00 +01:00
Max Kostikov dc0335d1d5 Correct "Content-Length:" calculation added 2018-11-08 11:53:27 +01:00
M. Dent 6013814cf4 Merge branch 'fix-photo' into 'dev'
$data only contains the link to the image if the image is in os storage. The…

See merge request hubzilla/core!1379
2018-11-08 11:25:36 +01:00
Mario Vavti e0a0570cc4 $data only contains the link to the image if the image is in os storage. The size is calculatet wrong in this case and the download fails. rely on filesize from the db for content-length 2018-11-08 11:06:44 +01:00
Mario 61deb4fcfd Merge branch 'patch-1' into 'dev'
Disable image caching if personal or group permissions enabled

See merge request hubzilla/core!1377
2018-11-08 10:25:11 +01:00
Mario Vavti 7c4c60425b Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-11-08 10:16:17 +01:00
Mario Vavti 302f49baf2 provide a function to log to syslog 2018-11-08 10:12:33 +01:00
Max Kostikov 3f6cd5a663 Disable image caching if personal or group permissions enabled 2018-11-07 19:52:38 +01:00
M. Dent 1b232041c9 Merge branch 'patch-1' into 'dev'
Added `If-Modified-Since` header support for better image caching and fixed absent 404 for photos

See merge request hubzilla/core!1375
2018-11-07 18:22:55 +01:00
Max Kostikov eaf117cce1 Added If-Modified-Since header support for better image caching and fixed absent 404 for photos 2018-11-07 18:22:55 +01:00
harukin 88d49c7c3e 2018-11-07 22:13:29 +09:00
harukin db8bd30dcd 2018-11-07 20:46:58 +09:00
harukin 9e3ec63637 2018-11-07 20:43:31 +09:00
zotlabs d2aa2c080f Merge branch 'master' into zvi 2018-11-07 01:43:43 -08:00
zotlabs 7148311953 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-11-07 01:43:26 -08:00
Mario Vavti c23dfa0d23 Merge remote-tracking branch 'mike/master' into dev 2018-11-07 10:15:40 +01:00
Mario Vavti b08de33b0b fix es-es hstrings.php 2018-11-07 10:02:24 +01:00
Mario fc1d8c0138 Merge branch 'revert-40d9277e' into 'dev'
Revert "remove 'Expiries' HTTP header"

See merge request hubzilla/core!1372
2018-11-07 09:36:30 +01:00
Max Kostikov a5a77d1e7c Revert "remove 'Expiries' HTTP header"
This reverts commit 40d9277ef3
2018-11-07 08:41:32 +01:00
zotlabs f57fcefe6b signature issue 2018-11-06 21:45:43 -08:00
zotlabs a5483a03c9 fix signatures 2018-11-06 21:44:57 -08:00
zotlabs bb8b3b9291 this is brutal 2018-11-06 20:44:40 -08:00
M. Dent 6c6dca05e7 Merge branch 'patch-25' into 'dev'
'Last-Modified' and 'Content-Length' HTTP headers added for better image caching

See merge request hubzilla/core!1369
2018-11-06 19:25:38 +01:00
M. Dent 97b4a31b16 Merge branch 'patch-26' into 'dev'
New plural functions for JavaScript compatibility

See merge request hubzilla/core!1370
2018-11-06 18:26:58 +01:00
Max Kostikov 40d9277ef3 remove 'Expiries' HTTP header 2018-11-06 16:22:34 +01:00
Max Kostikov 009044b71e Update hmessages.po 2018-11-06 14:58:06 +01:00
Max Kostikov 4760a3f3e8 Update hmessages.po 2018-11-06 14:57:12 +01:00
Max Kostikov 3302012c02 New pt-br plural function for JavaScript compatibility 2018-11-06 14:55:58 +01:00
Max Kostikov 812c5a314f New nl plural function for JavaScript compatibility 2018-11-06 14:55:21 +01:00
Max Kostikov c2da8c3fd4 New nb-no plural function for JavaScript compatibility 2018-11-06 14:54:49 +01:00
Max Kostikov aa78640491 New it plural function for JavaScript compatibility 2018-11-06 14:54:06 +01:00
Max Kostikov 7c49688e1b New he plural function for JavaScript compatibility 2018-11-06 14:53:29 +01:00
Max Kostikov dbe10c7965 New fi plural function for JavaScript compatibility 2018-11-06 14:52:58 +01:00
Max Kostikov f1f5107282 New es plural function for JavaScript compatibility 2018-11-06 14:52:23 +01:00
Max Kostikov cc06250bf8 New fr plural function for JavaScript compatibility 2018-11-06 14:50:37 +01:00
Max Kostikov af1ea7f495 New plural function for JavaScript compatibility 2018-11-06 14:48:58 +01:00
Max Kostikov 3491c488d3 Update Photo.php 2018-11-06 13:51:01 +01:00
Max Kostikov 1828b6daab Update Photo.php 2018-11-06 13:41:41 +01:00
Max Kostikov c26f45b7c2 Update Photo.php 2018-11-06 13:39:36 +01:00
Max Kostikov e116b90116 'Last-Modified' and 'Content-Length' HTTP headers added for better image caching 2018-11-06 13:37:50 +01:00
harukin fff14fca50 2018-11-06 18:41:31 +09:00
harukin 1c0290df2d 2018-11-06 18:13:19 +09:00
harukin c72b7a8830 2018-11-06 18:10:38 +09:00
harukin a31ea72ced 2018-11-06 18:09:03 +09:00
harukin 487e415de5 2018-11-06 17:55:29 +09:00
harukin 825709870d 2018-11-06 17:42:22 +09:00
harukin 970ef5e51c 2018-11-06 17:12:20 +09:00
harukin 04aa58d920 2018-11-06 17:00:59 +09:00
zotlabs e7f1d350c9 more zot6 work 2018-11-05 21:29:26 -08:00
harukin cb4a1d51c1 2018-11-06 14:24:46 +09:00
harukin 352d110622 2018-11-06 12:53:15 +09:00
zotlabs 3b9aedec5f populate new fields 2018-11-05 19:52:30 -08:00
zotlabs fabcf841c9 z6 work 2018-11-05 19:34:10 -08:00
zotlabs 43a5f928ba these changes needed to ensure cloning/syncing works in the future to non-zot6 enabled servers after the (coming) zot6 schema updates. This should probably be on a fast track to master branch 2018-11-05 16:57:32 -08:00
M. Dent 873fa16517 Merge branch 'patch-23' into 'dev'
Use modern get_config() syntax

See merge request hubzilla/core!1368
2018-11-06 01:27:06 +01:00
Max Kostikov f7ce374a28 Update Photo.php 2018-11-05 21:26:10 +01:00
Max Kostikov 2dd124d09e Use modern get_config() syntax 2018-11-05 21:25:08 +01:00
harukin bd6c1b06c1 2018-11-05 22:41:39 +09:00
harukin 116915890d Merge branch 'master' into 'japanese'
Ver.3.8.3 release merge

See merge request harukin/core!11
2018-11-05 21:41:30 +09:00
harukin 0e9347efa5 Merge branch 'master' into 'develop'
Ver.3.8.3 release merge

See merge request harukin/core!10
2018-11-05 21:39:29 +09:00
harukin d3bd55e628 commit 2018-11-05 21:33:01 +09:00
harukin 6901a37cd2 merge master 2018-11-05 21:31:21 +09:00
harukin c52a5a2974 2018-11-05 21:25:43 +09:00
Mario d6523c67a6 Merge branch 'patch-20181028a' into 'dev'
Add timestamp to pconfig

See merge request hubzilla/core!1355
2018-11-05 10:40:29 +01:00
Mario Vavti a9fd3608ea version 3.8.3 2018-11-05 10:26:59 +01:00
Mario Vavti b25cace3ea update changelog 2018-11-05 10:25:57 +01:00
Mario Vavti 4320f047db update changelog and bump version 2018-11-05 10:22:56 +01:00
Mario Vavti b4b3e7b9a4 update linkinfo from dev 2018-11-05 09:59:25 +01:00
Mario Vavti b6938da552 Merge remote-tracking branch 'mike/master' into dev 2018-11-05 09:56:52 +01:00
Mario Vavti 4830a1559d Merge branch 'dev' 2018-11-05 09:55:23 +01:00
Mario 92ea3ef720 Merge branch 'dev' into 'dev'
more fixes for forum notifications handling: do not count likes/dislikes if…

See merge request hubzilla/core!1367
2018-11-05 09:42:07 +01:00
zotlabs 73d2719330 debug zot6 discovery 2018-11-04 19:35:55 -08:00
zotlabs af82aab3a6 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-11-04 13:58:02 -08:00
zotlabs 51b4b6216f z6 updates to owa, linkinfo improved image detection 2018-11-04 13:56:32 -08:00
harukin 3eb6748578 2018-11-04 16:18:36 +09:00
Mario Vavti de32b0bba5 more fixes for forum notifications handling: do not count likes/dislikes if likes notifications are disabled and also do not show like activities when clicking a forum notification and like notifications are disabled 2018-11-03 20:53:23 +01:00
Mario de0fab78ed Merge branch 'dev' into 'dev'
Fixed typo at view/es-es/hstrings.php

See merge request hubzilla/core!1366
2018-11-03 20:11:14 +01:00
Manuel Jiménez Friaza 71425c3b23 Fixed typo at view/es-es/hstrings.php 2018-11-03 19:19:01 +01:00
Mario 75f7b1e261 Merge branch 'patch-3' into 'dev'
Update hmessages.po

See merge request hubzilla/core!1365
2018-11-03 13:22:34 +01:00
Mario 9af35d998f Merge branch 'patch-2' into 'dev'
Update hstrings.php

See merge request hubzilla/core!1364
2018-11-03 13:21:53 +01:00
Mario 34e3f3907a Merge branch 'patch-22' into 'dev'
More precise content encoding detection on conversion

See merge request hubzilla/core!1363
2018-11-03 13:21:22 +01:00
Max Kostikov 46b0510b99 Update Linkinfo.php 2018-11-03 10:41:31 +01:00
Max Kostikov a7624ea48b Update Linkinfo.php 2018-11-03 00:10:05 +01:00
Max Kostikov 2f3b4a7aaf Update Linkinfo.php 2018-11-03 00:01:15 +01:00
Max Kostikov a9bbe0b128 Update Linkinfo.php 2018-11-02 22:40:48 +01:00
Max Kostikov 0d9d0a4b70 more precise codepage detection 2018-11-02 22:37:53 +01:00
gia vec 8235d0bd50 Update hmessages.po 2018-11-02 19:41:07 +01:00
gia vec c2e01bedc5 Update hstrings.php 2018-11-02 19:27:11 +01:00
Max Kostikov 32c4614a32 Workaround for incorrect ISO-8859-5 encoded content conversion 2018-11-02 10:52:52 +01:00
Mario 24ae6c91ea Merge branch 'patch-21' into 'dev'
Fix wrong image resize for some external images

See merge request hubzilla/core!1362
2018-11-02 10:20:18 +01:00
M.Dent 346a4f5933 strpos needs to test with ===0 not ==0 2018-11-01 20:23:22 -04:00
Max Kostikov c6551336c8 Fix wrong image resize for some external images 2018-11-01 21:50:36 +01:00
harukin a240e1de75 Merge branch 'develop' into 'japanese'
5000兆円欲しい!!

See merge request harukin/core!9
2018-11-01 23:03:58 +09:00
harukin a776210aa7 Merge branch 'develop' into 'master'
5000兆円欲しい!!

See merge request harukin/core!8
2018-11-01 23:03:07 +09:00
harukin 88a6a2d1de 2018-11-01 23:01:27 +09:00
harukin e022a7edee 2018-11-01 22:59:08 +09:00
harukin 5d912efb32 2018-11-01 22:58:08 +09:00
harukin 5243af975c 2018-11-01 22:56:50 +09:00
harukin 43486e7137 2018-11-01 22:55:18 +09:00
harukin b2430495f5 修正 2018-11-01 22:53:44 +09:00
harukin 1b1a6e357a 修正 2018-11-01 22:50:16 +09:00
harukin 626b5f36ad 修正 2018-11-01 22:46:40 +09:00
harukin 746ceebcdc 5000兆円欲しい!! 2018-11-01 22:39:28 +09:00
harukin 2a40051475 Merge branch 'develop' into 'japanese'
archkinux絵文字の追加

See merge request harukin/core!7
2018-11-01 22:06:04 +09:00
harukin 2406574041 Merge branch 'develop' into 'master'
archlinux絵文字の追加

See merge request harukin/core!6
2018-11-01 22:04:54 +09:00
harukin 23c40b9618 2018-11-01 21:53:18 +09:00
harukin 95e4dca38a 2018-11-01 21:41:46 +09:00
harukin 66e562af72 2018-11-01 14:21:12 +09:00
harukin 1f70331a12 2018-11-01 12:04:21 +09:00
harukin 38e3369566 2018-11-01 10:40:58 +09:00
harukin 7303cdbe08 2018-11-01 10:32:16 +09:00
harukin 4677e34ea6 2018-11-01 10:20:22 +09:00
harukin a48dc3ddf6 2018-11-01 10:13:48 +09:00
harukin c548969877 2018-11-01 09:55:26 +09:00
harukin 68150edbb9 2018-11-01 09:50:24 +09:00
harukin 8e347e1b2e 2018-11-01 09:47:43 +09:00
harukin b26989f594 2018-11-01 09:08:25 +09:00
harukin 0a3259d77c 2018-11-01 09:07:30 +09:00
harukin d95492c5d0 2018-11-01 09:03:09 +09:00
harukin 3555c7f0c5 2018-10-31 22:04:50 +09:00
harukin 272e2d5654 2018-10-31 21:31:56 +09:00
Mario Vavti 3dab0d365d css fix for reshared-content images and whitespace 2018-10-31 13:20:09 +01:00
harukin 3abd110d45 2018-10-31 21:19:37 +09:00
harukin cebb406277 2018-10-31 20:58:18 +09:00
harukin 71e4f1c8a7 2018-10-31 20:01:59 +09:00
harukin 403e42b662 2018-10-31 19:20:29 +09:00
harukin a5598c33f3 2018-10-31 17:54:29 +09:00
harukin 0c1cc32017 2018-10-31 17:52:29 +09:00
harukin 994fb6c043 2018-10-31 17:43:50 +09:00
Mario Vavti 0252bac4ba Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-10-31 09:39:10 +01:00
Mario b468069875 Merge branch 'patch-20' into 'dev'
Beautiful embedding for Hubzilla links

See merge request hubzilla/core!1360
2018-10-31 09:36:09 +01:00
harukin a1842491ad 2018-10-31 17:30:40 +09:00
harukin 241e449564 2018-10-31 16:31:28 +09:00
harukin ad8848f96a 2018-10-31 16:23:56 +09:00
harukin 7f3c1a89c3 2018-10-31 16:20:09 +09:00
Mike Macgirvin 7e1f431eca yet another blueimp vulnerability. Move to composer. 2018-10-31 15:56:08 +11:00
zotlabs 70c55da1df Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-10-30 18:11:49 -07:00
M. Dent f9ab7647dd Merge branch 'composer-updates' into 'dev'
update html_to_markdown, smarty and sabredav libs via composer

See merge request hubzilla/core!1361
2018-10-31 01:32:44 +01:00
zotlabs 623aa7ea48 remove primary/clone counts from admin summary. The last checkins should fix this count "eventually" but the information has little direct value and may require location information for a local channel to change before it is actually corrected. 2018-10-30 17:30:59 -07:00
M. Dent 046d264688 Merge branch 'forum-ping' into 'dev'
fix forum ping results - the term query requires xchan_name instead of…

See merge request hubzilla/core!1358
2018-10-31 01:25:41 +01:00
M. Dent 944e168120 Merge branch 'wikilist-widget' into 'dev'
allow wiki_list widget to be used in any page

See merge request hubzilla/core!1359
2018-10-31 01:24:32 +01:00
zotlabs 9594105e57 typo 2018-10-30 17:21:39 -07:00
zotlabs 675343f575 issue syncing the channel_primary setting which shows up as a wrong count on the admin summary page 2018-10-30 17:18:15 -07:00
Mario Vavti fc6ff45c49 fix another markdown test 2018-10-30 22:51:52 +01:00
Mario Vavti b4bac88c39 fix markdown tests 2018-10-30 22:37:41 +01:00
Mario Vavti c622ba84b9 really fix html2markdown() - when using environment, we must set the defaults 2018-10-30 22:16:37 +01:00
Max Kostikov 339f95c647 Update oembed.php 2018-10-30 16:49:48 +01:00
Max Kostikov ec67e0ab22 Beautiful embedding for Hubzilla links 2018-10-30 15:38:19 +01:00
Mario Vavti 0b371c8103 fix html2markdown() and re-enable previously failing tests 2018-10-30 13:55:08 +01:00
Mario Vavti 2192ea6fdf update html_to_markdown, smarty and sabredav libs via composer 2018-10-30 12:12:07 +01:00
M.Dent 0060f88c45 Add tracking of deleted pconfig variables 2018-10-29 23:04:13 -04:00
Mario Vavti 1eac4db491 fix forum ping results - the term query requires xchan_name instead of xchan_hash. also improve the query itself - item_permission_sql() is redundant here since we always deal with local_channel() and use count(id) instead of sum(item_unseen) to get the unseen count 2018-10-29 23:01:13 +01:00
Mario Vavti 0d2c3be367 allow wiki_list widget to be used in any page 2018-10-29 22:55:24 +01:00
Your Name d12c6ccb72 2018-10-29 21:44:52 +09:00
Your Name 1eb63fd8b9 2018-10-29 21:41:43 +09:00
Your Name 2cf2171ac2 test 2018-10-29 21:25:16 +09:00
Mario Vavti c8dd516d6c Merge branch 'dev' 2018-10-29 11:02:51 +01:00
Mario Vavti 0f19627407 changelog 2018-10-29 10:59:54 +01:00
Mario Vavti 3eb71fe7b5 merge Zotlabs/Access/PermissionLimits.php from dev 2018-10-29 10:21:10 +01:00
Mario Vavti 0035584d91 merge view/fr/hmessages.po from dev 2018-10-29 10:20:36 +01:00
Mario Vavti 8cbd2e3e9e merge view/ru/hstrings.php from dev 2018-10-29 10:19:55 +01:00
Mario Vavti b0f5c7f36f merge view/ru/hmessages.po from dev 2018-10-29 10:19:31 +01:00
Mario Vavti 412eb0a90b merge view/it/hstrings.php from dev 2018-10-29 10:18:21 +01:00
Mario Vavti f8e816629d merge view/it/hmessages.po from dev 2018-10-29 10:17:54 +01:00
Mario Vavti 3d0138569d merge view/es-es/hstrings.php from dev 2018-10-29 10:17:04 +01:00
Mario Vavti 7bb7d736a2 merge view/es-es/hmessages.po from dev 2018-10-29 10:16:29 +01:00
Mario Vavti 7910f39613 merge util/zotsh/zotsh.py from dev 2018-10-29 10:16:01 +01:00
Mario Vavti bf6ef2a588 merge util/update_theme_repo from dev 2018-10-29 10:15:18 +01:00
Mario Vavti a11d89daa3 merge util/update_autoloader from dev 2018-10-29 10:14:43 +01:00
Mario Vavti b8a4a6b959 merge util/hmessages.po from dev 2018-10-29 10:10:03 +01:00
Mario Vavti dd6045d9f8 merge install/schema_postgres.sql from dev 2018-10-29 10:08:37 +01:00
Mario Vavti e1c3a19420 merge include/zot.php from dev 2018-10-29 10:08:12 +01:00
Mario Vavti cc586685e6 merge include/nav.php from dev 2018-10-29 10:07:54 +01:00
Mario Vavti 31883f603c merge include/import.php from dev 2018-10-29 10:07:15 +01:00
Mario Vavti f377c81c8a merge include/connections.php from dev 2018-10-29 10:06:44 +01:00
Mario Vavti 32384eaf07 merge Zotlabs/Widget/Wiki_pages.php from dev 2018-10-29 10:06:01 +01:00
Mario Vavti 7c2efa697c merge Zotlabs/Module/Photo.php from dev 2018-10-29 10:04:34 +01:00
Mario Vavti e1df69dfcb Merge branch 'dev' 2018-10-29 07:43:40 +01:00
Your Name 6dd84fde33 すきまテスト 2018-10-29 14:12:56 +09:00
Your Name 60eaedc67f test 2018-10-29 14:11:09 +09:00
Your Name ce908b31c1 再共有メッセージ修復 2018-10-29 14:05:57 +09:00
harukin f687739cfe Merge branch 'develop' into 'master'
harukin絵文字の追加

See merge request harukin/core!4
2018-10-29 13:40:10 +09:00
harukin 56d1e3792a Merge branch 'develop' into 'japanese'
harukin絵文字追加

See merge request harukin/core!3
2018-10-29 13:39:02 +09:00
Your Name ce8215ec6c 2018-10-29 13:34:25 +09:00
Your Name db5b86dbac テストコミット 2018-10-29 11:46:37 +09:00
Your Name ecab83264c harukinの表示サイズ変更 2018-10-29 11:26:30 +09:00
Your Name 81194b2caa 画像サイズ変更 2018-10-29 11:21:56 +09:00
Your Name ce185c14d3 画像のディレクトリ情報情報修正 2018-10-29 11:19:31 +09:00
Your Name ff1db9a055 harukin絵文字追加テスト 2018-10-29 10:45:45 +09:00
Your Name f928f17bb5 日本語追加 2018-10-29 10:39:11 +09:00
M.Dent 1241e778f9 Fix to set update time in pconfig on update 2018-10-28 17:30:22 -04:00
M.Dent 3ab0ef1902 Add timestamp and associated logic to pconfig 2018-10-28 17:23:31 -04:00
M.Dent c7c35b8b5a DB Updates to prep for pconfig timestamps. 2018-10-28 17:20:29 -04:00
M. Dent 3d9b1fd343 Merge branch 'dev' into 'dev'
fix issues with forum handling in mod network and ping. also some code cleanup.

See merge request hubzilla/core!1354
2018-10-28 03:22:22 +01:00
Mario Vavti 96bed3a623 fix issues with forum handling in mod network and ping. also some code cleanup. 2018-10-27 22:34:18 +02:00
Mario Vavti e72b0edce2 Merge remote-tracking branch 'mike/master' into dev 2018-10-27 13:50:30 +02:00
zotlabs ae4aeb4b1e delivery chain linkage messed up if original post was edited 2018-10-26 13:00:26 -07:00
M. Dent 302abc2a60 Merge branch 'dev' into 'dev'
notifications: fix unseen forum count

See merge request hubzilla/core!1351
2018-10-26 17:10:10 +02:00
Mario Vavti 2b3cbc638b notifications: fix unseen forum count 2018-10-26 09:53:56 +02:00
Mario 3de055bf65 Merge branch 'dev' into 'dev'
New strings in Spanish translation

See merge request hubzilla/core!1349

(cherry picked from commit df449e7bfe)

802a7ff3 New strings in Spanish translation
2018-10-26 08:16:54 +02:00
Mario df449e7bfe Merge branch 'dev' into 'dev'
New strings in Spanish translation

See merge request hubzilla/core!1349
2018-10-26 08:16:16 +02:00
Mario 6326a50d20 Merge branch 'patch-20181025a' into 'dev'
Add entropy to queue worker - and fix requeuing of expired tasks

See merge request hubzilla/core!1350
2018-10-26 08:15:11 +02:00
M.Dent aef212ada9 Add entropy to queue worker - and fix requeuing of expired tasks 2018-10-25 10:12:03 -04:00
Manuel Jiménez Friaza 802a7ff3a8 New strings in Spanish translation 2018-10-25 11:37:06 +02:00
M. Dent 9cedc864c2 Merge branch 'dev' into 'dev'
Editor contact autocomplete performance & refine stream filter and forum notification behaviour (mostly for performance)

See merge request hubzilla/core!1348
2018-10-25 03:38:05 +02:00
Mario Vavti ee804cd6b1 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-10-24 23:08:22 +02:00
Mario Vavti 25c7e64ded fix get on {1} 2018-10-24 23:06:32 +02:00
Mario Vavti 5c4fbbebe1 refine stream filter and forum notification behaviour (mostly for performance). personal posts will be displayed in unthreaded mode and clicking a forum notification will show only the unseen items of the forum in unthreaded mode. group the filters in the widget - threaded at the top, unthreaded beneath. 2018-10-24 20:58:25 +02:00
Mario Vavti 615402ea83 wrong var 2018-10-24 20:34:15 +02:00
Mario a0a72a9f6d Merge branch 'patch-19' into 'dev'
Convert non UTF-8 content on link embeding

See merge request hubzilla/core!1347
2018-10-24 20:26:32 +02:00
Mario Vavti 8b9acf750b autocomplete performance: this slightly changes the editor contact autocomplete behaviour. queries using *like* with a prepended % to the query string do not make use of indices. this is no big issue when we query abook but can get really slow when xchan table is involved. this commit changes the xchan table only queries to use the *str%* format. this means that the result set for channels we are not connected with will change in a way that xchan_name and xchan_addr will bematched only from the beginning of the name or address. this commit also changes textcomplete to only start the query after the 3rd character. the result set between 2 and 3 characters is mostly very different and only from 3 chars on there is a high possibility the channel we look for is already in the result. 2018-10-24 20:22:27 +02:00
Max Kostikov 24d68a7f09 Update Linkinfo.php 2018-10-24 10:28:18 +02:00
Max Kostikov 781eeff021 Update Linkinfo.php 2018-10-23 20:36:30 +02:00
Max Kostikov 3e6c2c6024 Update Linkinfo.php 2018-10-23 19:57:21 +02:00
Max Kostikov f180558041 Convert non UTF-8 content on link embeding 2018-10-23 19:32:36 +02:00
zotlabs 506ea71302 for whatever reason there were two of these
(cherry picked from commit 7ed197f46b)
2018-10-23 13:23:18 +02:00
Mario Vavti 01e11e9043 Merge remote-tracking branch 'mike/master' into dev 2018-10-23 13:18:04 +02:00
zotlabs 7ed197f46b for whatever reason there were two of these 2018-10-22 17:12:36 -07:00
Mario Vavti 5c36eef039 textcomplete: return up to 100 items and look for for matches in the entire string (not just the beginning) when suggesting emojis 2018-10-22 15:36:02 +02:00
Mario Vavti 26e20f9999 add summary to bbcode autocomplete list 2018-10-22 14:04:09 +02:00
Mario Vavti 71195895ba update blueimp_upload to version 9.23 2018-10-22 09:45:20 +02:00
Mario c7ebb4b009 version 3.8.1 2018-10-21 09:25:37 +02:00
Mario Vavti c0cef8dd12 changelog for 3.8.1
(cherry picked from commit ea850e58d2)
2018-10-21 09:23:37 +02:00
Mario Vavti ea850e58d2 changelog for 3.8.1 2018-10-21 09:22:42 +02:00
Mario Vavti dcdd97a985 fix ellipsis for too long nav banner
(cherry picked from commit a61ce45a32)
2018-10-21 09:10:45 +02:00
Mario Vavti a61ce45a32 fix ellipsis for too long nav banner 2018-10-21 09:10:02 +02:00
mike 1326c4e71e fix wrong value being used for menu_id
(cherry picked from commit fdb7c115a7)
2018-10-21 09:02:17 +02:00
Mario ad5f3877f1 Merge branch 'edit-menu-contents-fix' into 'dev'
fix wrong value being used for menu_id

See merge request hubzilla/core!1345
2018-10-21 09:00:48 +02:00
zotlabs 9cbbc80f7a disable blueimp demo server
(cherry picked from commit 7c49f22702)
2018-10-21 08:49:43 +02:00
Mario Vavti 8a02e967d3 Merge remote-tracking branch 'mike/master' into dev 2018-10-21 08:42:37 +02:00
zotlabs 7c49f22702 disable blueimp demo server 2018-10-20 15:27:35 -07:00
mike fdb7c115a7 fix wrong value being used for menu_id 2018-10-20 16:55:54 -04:00
Mario Vavti fa9e9510e5 Merge branch '3.8RC' 2018-10-19 11:18:28 +02:00
Mario Vavti 06b3ad1071 version 3.8 2018-10-19 11:16:44 +02:00
Mario Vavti d96a731e93 bump version 2018-10-19 11:14:20 +02:00
Mario Vavti 847ff77a81 optimize autoload
(cherry picked from commit 2583270774)
2018-10-19 11:13:33 +02:00
Mario Vavti df746c7911 strings and bump apd versions to version 2
(cherry picked from commit 4aed866d69)
2018-10-19 11:12:33 +02:00
Mario Vavti 2583270774 optimize autoload 2018-10-19 11:12:07 +02:00
Mario Vavti 5393d674f9 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-10-19 11:07:40 +02:00
Mario Vavti 4aed866d69 strings and bump apd versions to version 2 2018-10-19 11:07:06 +02:00
Mario d775a7ee21 Merge branch 'patch-18' into 'dev'
Russian translation for upgrade plugin added

See merge request hubzilla/core!1344

(cherry picked from commit c044ff3444)

ac2b6bcc Russian translation for upgrade plugin added
6e758423 Update hstrings.php
2018-10-19 10:56:55 +02:00
Mario c044ff3444 Merge branch 'patch-18' into 'dev'
Russian translation for upgrade plugin added

See merge request hubzilla/core!1344
2018-10-19 10:56:46 +02:00
Max Kostikov 6e75842354 Update hstrings.php 2018-10-18 11:19:02 +02:00
Max Kostikov ac2b6bcc33 Russian translation for upgrade plugin added 2018-10-18 11:18:14 +02:00
Mario c440b758a3 Merge branch 'dev' into 'dev'
Fix template root redirection

See merge request hubzilla/core!1343

(cherry picked from commit e9471124c0)

442d1cb4 Fix template root redirection
2018-10-18 09:12:38 +02:00
Mario e9471124c0 Merge branch 'dev' into 'dev'
Fix template root redirection

See merge request hubzilla/core!1343
2018-10-18 09:12:30 +02:00
M.Dent 442d1cb48f Fix template root redirection 2018-10-17 22:21:31 -04:00
Mario Vavti 5030c55b1e complete changelog
(cherry picked from commit fa91e2a60c)
2018-10-17 12:51:36 +02:00
Mario Vavti fa91e2a60c complete changelog 2018-10-17 12:25:46 +02:00
Mario 32de123db0 fix sql error 2018-10-17 11:05:28 +02:00
Mario Vavti 90e9c37d35 improve posting to mod pconfig via ajax
(cherry picked from commit ae875734e2)
2018-10-16 21:20:47 +02:00
Mario 84d4036117 Merge branch 'fix-master-rate-limiter' into 'dev'
Fix master rate limiter

See merge request hubzilla/core!1341

(cherry picked from commit e38e85572e)

49eff772 Fix worker age calculation
be30dc9e Move logger to debug/all
b6a9be88 Delete duplicate queue items
2018-10-16 21:19:28 +02:00
Mario e38e85572e Merge branch 'fix-master-rate-limiter' into 'dev'
Fix master rate limiter

See merge request hubzilla/core!1341
2018-10-16 21:19:16 +02:00
M. Dent f50d6208c8 Fix master rate limiter 2018-10-16 21:19:16 +02:00
M. Dent 34d189c02e Merge branch 'dev' into 'dev'
improve posting to mod pconfig via ajax

See merge request hubzilla/core!1340
2018-10-16 21:08:19 +02:00
Mario ba9b49bc83 Merge branch 'patch-17' into 'dev'
Add Russian translations to Newmember widget

See merge request hubzilla/core!1339

(cherry picked from commit ed08eb07c6)

04edb741 Add Russian translations to Newmember widget
d2d6f8c9 Update hstrings.php
2018-10-16 14:08:02 +02:00
Mario ed08eb07c6 Merge branch 'patch-17' into 'dev'
Add Russian translations to Newmember widget

See merge request hubzilla/core!1339
2018-10-16 14:07:52 +02:00
Mario Vavti ae875734e2 improve posting to mod pconfig via ajax 2018-10-16 13:46:03 +02:00
Max Kostikov d2d6f8c970 Update hstrings.php 2018-10-15 21:28:54 +02:00
Max Kostikov 04edb741a6 Add Russian translations to Newmember widget 2018-10-15 21:28:01 +02:00
Mario Vavti 34b4b65865 add missing features section to newmember widget
(cherry picked from commit 25a74f3664)
2018-10-15 20:33:28 +02:00
Mario Vavti 25a74f3664 add missing features section to newmember widget 2018-10-15 20:18:25 +02:00
Mario Vavti fa5537bfc0 allow to undelete deleted base apps
(cherry picked from commit 3588c4ab99)
2018-10-15 15:45:51 +02:00
Mario Vavti 3588c4ab99 allow to undelete deleted base apps 2018-10-15 15:43:55 +02:00
Mario Vavti 5a9b1f769d some changelog work
(cherry picked from commit 782ec06f2b)
2018-10-15 14:24:54 +02:00
Mario Vavti 782ec06f2b some changelog work 2018-10-15 14:23:58 +02:00
Mario Vavti 5b43db7171 fix wiki issue with wiki page links when using bbcode
(cherry picked from commit df62037c4a)
2018-10-15 13:14:30 +02:00
Mario Vavti df62037c4a fix wiki issue with wiki page links when using bbcode 2018-10-15 13:13:04 +02:00
Mario Vavti ad1cc82b38 update readme for master and dev branch buildstatus
(cherry picked from commit 05b8c53ff7)
2018-10-15 10:38:57 +02:00
Mario Vavti 05b8c53ff7 update readme for master and dev branch buildstatus 2018-10-15 10:37:14 +02:00
Mario 7268426248 Merge branch 'dev' into 'dev'
Bring back some basic automated testing for PHP7.1 and mysql via gitlab-ci.

See merge request hubzilla/core!1332

(cherry picked from commit c39de966df)

b77acb3e add gitlab-ci.yml and phpunit.xml
22275f30 fix dba_pdoTest
0db047e5 fix phpunit error with html2markdown test and temporary disable failing markdown…
2018-10-15 10:00:06 +02:00
Mario c39de966df Merge branch 'dev' into 'dev'
Bring back some basic automated testing for PHP7.1 and mysql via gitlab-ci.

See merge request hubzilla/core!1332
2018-10-15 09:59:52 +02:00
Mario eb133ef9a7 Merge branch 'patch-16' into 'dev'
JS plurals displaying code cleanup

See merge request hubzilla/core!1338

(cherry picked from commit 721461dd3e)

b7280a44 JS plurals displaying code cleanup
ab0e2f52 Update language.php
f9c3b807 Update main.js
ce52c27a Update main.js
2018-10-15 09:59:25 +02:00
Mario 721461dd3e Merge branch 'patch-16' into 'dev'
JS plurals displaying code cleanup

See merge request hubzilla/core!1338
2018-10-15 09:59:17 +02:00
Mario 337e25ad43 Merge branch 'patch-15' into 'dev'
Add JS function code for plurals translation in Russian

See merge request hubzilla/core!1337

(cherry picked from commit 7042528d26)

ee4a2629 Add JS function code for plurals translation
8af91b02 Update hstrings.php
2018-10-15 09:58:24 +02:00
Mario 7042528d26 Merge branch 'patch-15' into 'dev'
Add JS function code for plurals translation in Russian

See merge request hubzilla/core!1337
2018-10-15 09:58:09 +02:00
Max Kostikov ce52c27a8a Update main.js 2018-10-14 22:45:11 +02:00
Max Kostikov f9c3b80780 Update main.js 2018-10-14 22:28:47 +02:00
Max Kostikov ab0e2f5236 Update language.php 2018-10-14 22:28:14 +02:00
Max Kostikov b7280a442e JS plurals displaying code cleanup 2018-10-14 22:26:56 +02:00
Max Kostikov 8af91b0209 Update hstrings.php 2018-10-14 22:24:36 +02:00
Max Kostikov ee4a262953 Add JS function code for plurals translation 2018-10-14 15:21:00 +02:00
Mario Vavti d584293cde min version bump 2018-10-13 20:28:24 +02:00
Mario c60c9b323b another min version change to mitigate caching issues. we are now at 3.8RC2.2 2018-10-13 20:22:04 +02:00
Mario eaee27c9e4 Merge branch 'patch-14' into 'dev'
Add date/time plurals translation in JavaScript

See merge request hubzilla/core!1336

(cherry picked from commit a2575059e2)

5c0d3187 Add date/time plurals translation in JavaScript
729d0d53 Update language.php
f68674b3 Update js_strings.tpl
3ac4337a Update main.js
e96e3dc6 Update po2php.php
54bdf59d Update js_strings.php
2018-10-13 20:17:14 +02:00
Mario a2575059e2 Merge branch 'patch-14' into 'dev'
Add date/time plurals translation in JavaScript

See merge request hubzilla/core!1336
2018-10-13 20:16:56 +02:00
Max Kostikov 54bdf59dde Update js_strings.php 2018-10-13 19:56:07 +02:00
Max Kostikov e96e3dc6e6 Update po2php.php 2018-10-13 19:54:13 +02:00
Max Kostikov 3ac4337aec Update main.js 2018-10-13 19:52:59 +02:00
Max Kostikov f68674b35a Update js_strings.tpl 2018-10-13 19:51:33 +02:00
Max Kostikov 729d0d5368 Update language.php 2018-10-13 19:50:09 +02:00
Max Kostikov 5c0d31873a Add date/time plurals translation in JavaScript 2018-10-13 19:48:45 +02:00
Mario 5310f4e310 bump version to 3.8RC2.1 due to javascript changes 2018-10-13 17:32:08 +02:00
Mario Vavti 2c961328f1 Merge branch 'dev' into 3.8RC 2018-10-13 17:21:12 +02:00
Mario Vavti c36773674e Revert "Merge branch 'patch-11' into 'dev'"
This reverts commit e518445853, reversing
changes made to 8ce240b95c.
2018-10-13 17:18:42 +02:00
Max Kostikov 54c615dbc2 Update hmessages.po
(cherry picked from commit 451ee5a593)
2018-10-13 14:55:25 +02:00
Max Kostikov 483ef09890 Update hstrings.php
(cherry picked from commit ba3811a284)
2018-10-13 14:54:57 +02:00
Max Kostikov 81a741e760 Update hstrings.php
(cherry picked from commit e2241b9365)
2018-10-13 14:54:29 +02:00
Max Kostikov 278f2a6cac New russian plurals for JavaScript
(cherry picked from commit fe2bb84403)
2018-10-13 14:54:05 +02:00
Mario cf277261dc Merge branch 'patch-12' into 'dev'
New russian plurals for JavaScript

See merge request hubzilla/core!1333
2018-10-13 14:51:59 +02:00
Max Kostikov 451ee5a593 Update hmessages.po 2018-10-13 14:22:58 +02:00
Max Kostikov ba3811a284 Update hstrings.php 2018-10-13 14:22:13 +02:00
Max Kostikov e2241b9365 Update hstrings.php 2018-10-13 14:20:48 +02:00
Max Kostikov fe2bb84403 New russian plurals for JavaScript 2018-10-13 14:20:10 +02:00
Mario Vavti 6f1067a889 version 3.8RC2 2018-10-13 14:12:09 +02:00
Mario Vavti f0cdbd0f52 Merge branch 'dev' into 3.8RC 2018-10-13 14:11:08 +02:00
Mario Vavti 9632cafa95 bump version 2018-10-13 14:05:44 +02:00
ZotSocial Admin 321b2b9b49 Fix order of assignment and get template file before return
(cherry picked from commit 8ebcc4439b)
2018-10-13 14:01:43 +02:00
Mario fb3dd5eee6 Merge branch 'dev' into 'dev'
Fix order of assignment and get template file before return

See merge request hubzilla/core!1329
2018-10-13 14:01:01 +02:00
Mario e518445853 Merge branch 'patch-11' into 'dev'
Add date/time plurals translation in JavaScript

See merge request hubzilla/core!1331
2018-10-13 14:00:12 +02:00
Mario 8ce240b95c Merge branch 'patch-10' into 'dev'
Missed strings added to Russian translation

See merge request hubzilla/core!1328
2018-10-13 13:57:48 +02:00
git-marijus 0db047e572 fix phpunit error with html2markdown test and temporary disable failing markdown test in connection with **bold** and _italic_ (it is not clear why they fail and the code appears to work as expected) 2018-10-13 13:39:22 +02:00
git-marijus 22275f3077 fix dba_pdoTest 2018-10-13 13:26:59 +02:00
git-marijus b77acb3e53 add gitlab-ci.yml and phpunit.xml 2018-10-13 13:19:17 +02:00
Max Kostikov 6ae9ef571e Update language.php 2018-10-13 02:14:19 +02:00
Max Kostikov 8e5189464e Update language.php 2018-10-13 01:36:24 +02:00
Max Kostikov 0de713ff36 Update language.php 2018-10-13 01:08:06 +02:00
Max Kostikov 137bee9d27 Update language.php 2018-10-13 00:40:06 +02:00
Max Kostikov 3641ab8c7d Update language.php 2018-10-13 00:28:12 +02:00
Max Kostikov 16b6b76507 Update language.php 2018-10-13 00:25:57 +02:00
Max Kostikov 5cd9540d5f Update language.php 2018-10-13 00:24:04 +02:00
Max Kostikov ae7873260e Update language.php 2018-10-13 00:20:23 +02:00
Max Kostikov 3dfe604ba0 Update main.js 2018-10-13 00:15:48 +02:00
Max Kostikov 3e19c4ddae Update language.php 2018-10-13 00:12:17 +02:00
Max Kostikov de59300aaf Update js_strings.tpl 2018-10-12 23:51:01 +02:00
Max Kostikov 8cb05a91ab Update language.php 2018-10-12 23:45:52 +02:00
Max Kostikov 5f2c3f607e Add plurals translation at browser side (JS) 2018-10-12 23:43:38 +02:00
ZotSocial Admin 8ebcc4439b Fix order of assignment and get template file before return 2018-10-12 15:20:57 -04:00
Max Kostikov b65ee01aef Update hmessages.po 2018-10-12 16:39:03 +02:00
Max Kostikov 2b311bd860 Update hstrings.php 2018-10-12 16:38:58 +02:00
Max Kostikov a841b75b98 Update hstrings.php 2018-10-12 11:50:21 +02:00
Max Kostikov 9b3b7dc098 Update hmessages.po 2018-10-12 11:49:48 +02:00
zotlabs f783454774 verify some edge case http signatures
(cherry picked from commit c6bfd5e7be)
2018-10-12 10:56:28 +02:00
Mario Vavti 81d9258e80 Merge remote-tracking branch 'mike/master' into dev 2018-10-12 09:42:57 +02:00
zotlabs c6bfd5e7be verify some edge case http signatures 2018-10-11 21:28:47 -07:00
Max Kostikov 3c5cfd465b Update hstrings.php 2018-10-11 23:39:58 +02:00
Max Kostikov f61f9bdc5f Missed strings added to Russian translation 2018-10-11 23:39:13 +02:00
Manuel Jiménez Friaza 2ab6e0843d Typos in Spanish translation
(cherry picked from commit c54ba1fb86)
2018-10-11 16:06:45 +02:00
Mario d21bf41b6c Merge branch 'dev' into 'dev'
Typos  in Spanish translation

See merge request hubzilla/core!1327
2018-10-11 16:06:25 +02:00
Manuel Jiménez Friaza c54ba1fb86 Typos in Spanish translation 2018-10-11 12:23:00 +02:00
M.Dent 4d86a199f0 Add wiki_preprocess hook and documentation
(cherry picked from commit bad4ea6e65)
2018-10-11 11:42:29 +02:00
Mario 4756826054 Merge branch 'dev' into 'dev'
Add wiki_preprocess hook and documentation

See merge request hubzilla/core!1326
2018-10-11 11:42:00 +02:00
Mario ea309aa19e Merge branch 'patch-9' into 'dev'
Formatting fix in russian translation

See merge request hubzilla/core!1325
2018-10-11 11:40:11 +02:00
M.Dent bad4ea6e65 Add wiki_preprocess hook and documentation 2018-10-10 22:46:00 -04:00
Mario Vavti cf4288767a fix issue in zot finger
(cherry picked from commit 802ccdff4a)
2018-10-10 23:08:58 +02:00
Mario Vavti 802ccdff4a fix issue in zot finger 2018-10-10 23:00:59 +02:00
Mario Vavti ba50de15ea revert gitlab-ci until we have a working configuration 2018-10-10 20:15:35 +02:00
Max Kostikov 73e30e8085 Update hstrings.php 2018-10-10 17:45:03 +02:00
Max Kostikov a53912cc19 Formatting fix in russian translation 2018-10-10 17:43:41 +02:00
Mario Vavti f105f70ded missing install 2018-10-10 15:47:55 +02:00
Mario Vavti f0cd084738 one last try for now 2018-10-10 15:45:54 +02:00
Mario Vavti ae5158b676 sigh... 2018-10-10 15:36:16 +02:00
Mario Vavti bfd45a0017 lets try this 2018-10-10 15:27:43 +02:00
Mario Vavti 78be0c66da add some dependencies for gd 2018-10-10 15:21:54 +02:00
Mario Vavti 562cde37f4 probably that is the way to do it 2018-10-10 15:15:09 +02:00
Mario Vavti 263dea0e36 wrong package name 2018-10-10 15:06:19 +02:00
Mario Vavti de743e35d0 add php-gd and use php7 image 2018-10-10 15:01:42 +02:00
Mario Vavti 09a46d0c74 gitlab-ci example file 2018-10-10 14:54:13 +02:00
Mario Vavti ca5a1d0853 fix minor issue in dark and light schemas
(cherry picked from commit 97fcc495f2)
2018-10-10 14:03:12 +02:00
Mario Vavti 97fcc495f2 fix minor issue in dark and light schemas 2018-10-10 14:01:03 +02:00
zotlabs 4e69467b14 SECURITY: signature issue
(cherry picked from commit c6f3298f78)
2018-10-10 13:34:54 +02:00
Mario Vavti d2e366a46f Merge remote-tracking branch 'mike/master' into dev 2018-10-10 13:33:15 +02:00
Mario Vavti 94905a71ac fix even more wiki issues
(cherry picked from commit c06b37b798)
2018-10-10 11:07:00 +02:00
Mario Vavti c7644ad29d fix some more wiki issues
(cherry picked from commit d29caa099a)
2018-10-10 11:06:39 +02:00
M.Dent 0daa462207 Fix escaping quote for wiki_delete_page
(cherry picked from commit 1ccca9863c)
2018-10-10 11:06:07 +02:00
M.Dent d8f79f48e9 Rework Wiki encoding scheme.
(cherry picked from commit 709665846e)
2018-10-10 11:05:34 +02:00
M.Dent bf878dc446 Implement custom escaping
(cherry picked from commit 93a310582f)
2018-10-10 11:04:58 +02:00
Mario Vavti c06b37b798 fix even more wiki issues 2018-10-10 11:01:13 +02:00
Mario Vavti 30e3580856 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-10-10 10:39:42 +02:00
Mario Vavti d29caa099a fix some more wiki issues 2018-10-10 10:39:28 +02:00
Manuel Jiménez Friaza d1270aab4d Fixed some errors in Spanish translation
(cherry picked from commit a7b03c1cea)
2018-10-10 09:23:32 +02:00
Mario cd55298616 Merge branch 'dev' into 'dev'
Fixed some errors in Spanish translation

See merge request hubzilla/core!1323
2018-10-10 09:22:32 +02:00
zotlabs c6f3298f78 SECURITY: signature issue 2018-10-09 22:37:53 -07:00
M. Dent 350db4ed9f Merge branch 'fix-wiki-escaping' into 'dev'
Fix escaping quote for wiki_delete_page

See merge request hubzilla/core!1324
2018-10-10 03:04:31 +02:00
M.Dent 1ccca9863c Fix escaping quote for wiki_delete_page 2018-10-09 21:01:05 -04:00
Manuel Jiménez Friaza a7b03c1cea Fixed some errors in Spanish translation 2018-10-09 11:48:08 +02:00
zotlabs 2cb52f8875 Merge branch 'dev' 2018-10-08 20:58:16 -07:00
zotlabs 2c797807cd whitespace 2018-10-08 20:56:20 -07:00
Mario 37b94bf5fa Merge branch 'fix-wiki-escaping' into 'dev'
Fix wiki escaping (Regression tests needed)

See merge request hubzilla/core!1321
2018-10-08 21:20:17 +02:00
Manuel Jiménez Friaza cbbe4b33a3 Update Spanish translation
(cherry picked from commit e877a001ab)
2018-10-08 21:10:04 +02:00
Mario a00a849952 Merge branch 'dev' into 'dev'
Update Spanish translation

See merge request hubzilla/core!1322
2018-10-08 21:08:39 +02:00
Manuel Jiménez Friaza e877a001ab Update Spanish translation 2018-10-08 19:57:11 +02:00
M.Dent 709665846e Rework Wiki encoding scheme. 2018-10-08 13:35:18 -04:00
M.Dent 93a310582f Implement custom escaping 2018-10-08 13:35:18 -04:00
Mario Vavti 9f4219773e typo
(cherry picked from commit f0b7a7e5d3)
2018-10-08 11:39:25 +02:00
Mario Vavti f0b7a7e5d3 typo 2018-10-08 11:38:45 +02:00
Mario Vavti 97502f4c04 the root cause for doubled entries is fixed now
(cherry picked from commit e0568f33e8)
2018-10-08 11:27:06 +02:00
Mario Vavti 737f660011 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-10-08 11:26:14 +02:00
Mario Vavti e0568f33e8 the root cause for doubled entries is fixed now 2018-10-08 11:25:49 +02:00
Max Kostikov 2ba95758eb Prevent links damage on foreign channel repost for cloned
(cherry picked from commit d9efb037e3)
2018-10-08 11:20:34 +02:00
Mario fc3d0233af Merge branch 'patch-8' into 'dev'
New russian translation

See merge request hubzilla/core!1319
2018-10-08 11:19:14 +02:00
Mario 13c08f9660 Merge branch 'patch-2' into 'dev'
Prevent links damage on foreign channel repost for cloned

See merge request hubzilla/core!1307
2018-10-08 11:18:28 +02:00
zotlabs 82528e2f38 hubzilla core issue #1278 - page update always reloads if noscript content is enabled
(cherry picked from commit 69584f541d)
2018-10-08 11:14:37 +02:00
M.Dent 90a983a7e5 Fix too many arguments
(cherry picked from commit 60d5443f00)
2018-10-08 11:12:28 +02:00
M. Dent 58a9cde61d Fix (potential) runaway cron
(cherry picked from commit 108855aca2)
2018-10-08 11:12:09 +02:00
Mario Vavti a00aae702d Merge remote-tracking branch 'mike/master' into dev 2018-10-08 11:05:53 +02:00
zotlabs 69584f541d hubzilla core issue #1278 - page update always reloads if noscript content is enabled 2018-10-07 22:12:49 -07:00
M. Dent 855f4b869a Merge branch 'fix-runaway-cron' into 'dev'
Fix too many arguments in ClearQueue() queries

See merge request hubzilla/core!1320
2018-10-08 01:30:20 +02:00
M.Dent 60d5443f00 Fix too many arguments 2018-10-07 19:18:35 -04:00
Max Kostikov 527b0a7065 Update hstrings.php 2018-10-08 00:31:32 +02:00
Max Kostikov 22a7c21886 New russian translation 2018-10-08 00:30:35 +02:00
M. Dent 484d240e7e Merge branch 'fix-runaway-cron' into 'dev'
Fix (potential) runaway cron

See merge request hubzilla/core!1318
2018-10-07 19:43:03 +02:00
M. Dent 108855aca2 Fix (potential) runaway cron 2018-10-07 19:43:03 +02:00
M.Dent 8ca321df7c Add missing else clause
(cherry picked from commit 259db3778c)
2018-10-07 08:43:58 +02:00
zotlabs ed97800c80 use hubloc_store_lowlevel to ensure all hubloc columns are initialised
(cherry picked from commit 52be5c1660)
2018-10-07 08:43:28 +02:00
zotlabs 78c6f40093 minor app cleanup
(cherry picked from commit 835e222af0)
2018-10-07 08:43:03 +02:00
Mario Vavti 5acd166d18 Merge remote-tracking branch 'mike/master' into dev 2018-10-07 08:39:29 +02:00
M. Dent 3efeeecace Merge branch 'dev' into 'dev'
Add missing else clause

See merge request hubzilla/core!1317
2018-10-07 05:05:27 +02:00
M.Dent 259db3778c Add missing else clause 2018-10-06 23:02:22 -04:00
zotlabs 52be5c1660 use hubloc_store_lowlevel to ensure all hubloc columns are initialised 2018-10-06 14:47:40 -07:00
Mario Vavti f85cce714f return success for postgres
(cherry picked from commit 2d9fe72215)
2018-10-06 23:13:01 +02:00
Mario Vavti 2eb93387c2 fix issue #1281 - hubloc default values
(cherry picked from commit dd3ec468f6)
2018-10-06 23:12:38 +02:00
Mario Vavti 2d9fe72215 return success for postgres 2018-10-06 23:10:52 +02:00
Mario Vavti dd3ec468f6 fix issue #1281 - hubloc default values 2018-10-06 23:05:45 +02:00
Mario 88d28cd6fe minor version 2018-10-06 21:02:11 +02:00
Mario Vavti b4035c2d19 those 3px make a difference on medium sized screens
(cherry picked from commit 65dcb39bac)
2018-10-06 21:01:27 +02:00
Mario Vavti 65dcb39bac those 3px make a difference on medium sized screens 2018-10-06 21:01:00 +02:00
Mario Vavti b92bb0bd28 give apps some more space and prevent linebreaks in app names. Add ellipsis to too long names.
(cherry picked from commit 62433b5f05)
2018-10-06 20:56:47 +02:00
Mario Vavti 0a840c02f7 another db update to get rid of the old view bookmarks entries
(cherry picked from commit 6ffdf3880f)
2018-10-06 20:56:23 +02:00
Mario Vavti 62433b5f05 give apps some more space and prevent linebreaks in app names. Add ellipsis to too long names. 2018-10-06 20:55:28 +02:00
Mario Vavti 6ffdf3880f another db update to get rid of the old view bookmarks entries 2018-10-06 20:48:29 +02:00
Mario Vavti 9bfa5c82d1 move profile assign selector to profile settings and personal menu selector to channel_home settings and get rid of misc channel settings section.
(cherry picked from commit 66cf085272)
2018-10-06 20:34:57 +02:00
Mario Vavti 66cf085272 move profile assign selector to profile settings and personal menu selector to channel_home settings and get rid of misc channel settings section. 2018-10-06 20:29:32 +02:00
Mario Vavti 567448e2fd this did not actually make sense
(cherry picked from commit d174531931)
2018-10-06 17:44:53 +02:00
Mario Vavti d174531931 this did not actually make sense 2018-10-06 17:43:37 +02:00
Mario Vavti a38ded702f strings and force import_system_apps() on std_version change
(cherry picked from commit cd5f255966)
2018-10-06 17:21:49 +02:00
Mario Vavti cd5f255966 strings and force import_system_apps() on std_version change 2018-10-06 17:20:23 +02:00
Mario Vavti d1a3561585 rename widget titles
(cherry picked from commit da8b276699)
2018-10-06 16:53:59 +02:00
Mario Vavti da8b276699 rename widget titles 2018-10-06 16:52:42 +02:00
Mario Vavti 5aa0304149 version RC1 2018-10-06 16:43:28 +02:00
Mario Vavti 7877e2467e rename grid to network (for consistency) and activity to stream (as seen in osada) because it makes much more sense.
(cherry picked from commit 96277372d5)
2018-10-06 16:41:19 +02:00
Mario Vavti 96277372d5 rename grid to network (for consistency) and activity to stream (as seen in osada) because it makes much more sense. 2018-10-06 16:40:30 +02:00
Mario Vavti 98ee99071c pubstream app
(cherry picked from commit b8991750c5)
2018-10-06 16:09:05 +02:00
Mario Vavti b8991750c5 pubstream app 2018-10-06 16:08:15 +02:00
Mario Vavti 97acfd23fb randprof app
(cherry picked from commit 18726737d0)
2018-10-06 15:28:17 +02:00
Mario Vavti 18726737d0 randprof app 2018-10-06 15:27:46 +02:00
Mario Vavti af05fa3e85 remote diagnostics app
(cherry picked from commit 6a297a8f3d)
2018-10-06 15:22:27 +02:00
Mario Vavti 6a297a8f3d remote diagnostics app 2018-10-06 15:21:22 +02:00
Mario Vavti 309904b15a admin should not be an app imho - we can not install/delete admin abilities. Remove suggest channels from base apps.
(cherry picked from commit 453ce4df3b)
2018-10-06 15:12:56 +02:00
Mario Vavti 453ce4df3b admin should not be an app imho - we can not install/delete admin abilities. Remove suggest channels from base apps. 2018-10-06 15:12:13 +02:00
Mario Vavti 02537b80b2 gallery is not a core app
(cherry picked from commit 9850d18420)
2018-10-06 15:02:29 +02:00
Mario Vavti 62730366ee bookmarks: change wording
(cherry picked from commit a522a66715)
2018-10-06 15:02:07 +02:00
Mario Vavti 0558a25141 bookmark app
(cherry picked from commit c2c891723f)
2018-10-06 15:01:45 +02:00
Mario Vavti 3f57609b75 merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-10-06 15:00:40 +02:00
Mario Vavti 9850d18420 gallery is not a core app 2018-10-06 15:00:28 +02:00
Mario 05ae18d74e Merge branch 'patch-6' into 'dev'
Add new table names in docs

See merge request hubzilla/core!1315

(cherry picked from commit 778086ce19)

4f70fd3e Add new table names in docs
2e4772ac Update db_groups.bb
4cb46c12 Update intro_for_developers.bb
c087aaf5 Update database.bb
2018-10-06 14:54:38 +02:00
Mario 778086ce19 Merge branch 'patch-6' into 'dev'
Add new table names in docs

See merge request hubzilla/core!1315
2018-10-06 14:54:21 +02:00
Mario 63ba72331f Merge branch 'patch-5' into 'dev'
Respect new table names on import

See merge request hubzilla/core!1314

(cherry picked from commit 3e231e7c13)

ebb4811a Respect new table names on import
2018-10-06 14:53:37 +02:00
Mario 3e231e7c13 Merge branch 'patch-5' into 'dev'
Respect new table names on import

See merge request hubzilla/core!1314
2018-10-06 14:53:18 +02:00
Mario Vavti a522a66715 bookmarks: change wording 2018-10-06 14:50:17 +02:00
Mario Vavti c2c891723f bookmark app 2018-10-06 14:48:12 +02:00
Max Kostikov c087aaf5be Update database.bb 2018-10-06 14:48:04 +02:00
Max Kostikov 4cb46c124a Update intro_for_developers.bb 2018-10-06 14:43:40 +02:00
Max Kostikov 2e4772ac0e Update db_groups.bb 2018-10-06 14:40:48 +02:00
Max Kostikov 4f70fd3e71 Add new table names in docs 2018-10-06 14:39:54 +02:00
Max Kostikov ebb4811a75 Respect new table names on import 2018-10-06 14:06:24 +02:00
zotlabs 835e222af0 minor app cleanup 2018-10-05 16:27:50 -07:00
M. Dent a5e63aa90a Merge branch 'revert-f5acbccb' into 'dev'
Revert Fix: for hook registration.  Needs more testing.

See merge request hubzilla/core!1311
2018-10-05 19:32:42 +02:00
M. Dent 1922a2139d Revert "Merge branch 'dev' into 'dev'"
This reverts merge request !1310
2018-10-05 19:30:49 +02:00
M. Dent f5acbccb79 Merge branch 'dev' into 'dev'
Fix: hooks not added to App::$hooks[] at the time of registration

See merge request hubzilla/core!1310
2018-10-05 19:27:30 +02:00
M.Dent d39ebebc9d Fix: hooks not added to App::[] at the time of registration 2018-10-05 13:25:16 -04:00
Max Kostikov b5ed1de31e New russian translations hmessages.po
(cherry picked from commit ff53da5b0a)
2018-10-05 14:54:53 +02:00
Max Kostikov 5cf156f698 New russian translations hstrings.php
(cherry picked from commit 9520123f6d)
2018-10-05 14:54:22 +02:00
Mario dcd99c2d30 Merge branch 'undefined' into '3.8RC'
New russian translations

See merge request hubzilla/core!1308
2018-10-05 14:53:23 +02:00
Mario a29e5521cc Merge branch 'patch-3' into 'dev'
Add 'Channel Export' in Apps list

See merge request hubzilla/core!1309
2018-10-05 14:52:46 +02:00
Max Kostikov 59bd90b967 Add 'Channel Export' in Apps list 2018-10-05 13:31:54 +02:00
Max Kostikov ff53da5b0a New russian translations hmessages.po 2018-10-05 13:25:40 +02:00
Max Kostikov 9520123f6d New russian translations hstrings.php 2018-10-05 13:23:37 +02:00
Max Kostikov d9efb037e3 Prevent links damage on foreign channel repost for cloned 2018-10-05 13:16:29 +02:00
Mario Vavti c403c9aece Merge branch '3.8RC' of https://framagit.org/hubzilla/core into 3.8RC 2018-10-05 12:10:15 +02:00
Mario Vavti df5115e7b8 force major version system apps import for 3.8RC - remove this at a later point 2018-10-05 12:09:54 +02:00
zotlabs 22fbb512d5 do not propagate channel deletion for an already deleted channel.
(cherry picked from commit 7c1e99884c)
2018-10-05 11:45:09 +02:00
zotlabs 2acfa7e525 regression: double linebreaks in viewsrc output
(cherry picked from commit d33c331abd)
2018-10-05 11:44:32 +02:00
Mario Vavti 69659e9bd5 Merge remote-tracking branch 'mike/master' into dev 2018-10-05 11:40:50 +02:00
Mario Vavti 6c066f6107 bump version 2018-10-05 11:33:52 +02:00
Mario Vavti b96a05494b optimize autoloader 2018-10-05 11:28:14 +02:00
Mario Vavti 0d42b4cf8a strings 2018-10-05 11:26:26 +02:00
Mario Vavti df0c77ccd3 bump version 2018-10-05 11:17:00 +02:00
zotlabs 3a0a611f15 Merge branch 'dev' 2018-10-04 19:20:10 -07:00
Mario Vavti 1eaf6df842 fix issues with bs accordions 2018-10-04 22:21:20 +02:00
Mario Vavti 9fe9137c96 fix displaying of perm cats selector 2018-10-04 22:01:34 +02:00
Mario Vavti 363fc5c72b whitespace 2018-10-04 21:49:00 +02:00
Mario Vavti d4af745fc8 move *_divmore_height setting to the module extra_settings, and fix issue where feature settings were not synced if rpath was provided 2018-10-04 21:38:39 +02:00
Mario Vavti 6e03104e3e move *_list_mode to features 2018-10-04 20:48:22 +02:00
Mario e89a84608f Merge branch 'patch-1' into 'dev'
Incorrect block wrapping fixed

See merge request hubzilla/core!1306
2018-10-04 14:57:03 +02:00
Max Kostikov 1dbd83a582 Update settings.tpl 2018-10-04 14:35:32 +02:00
Mario c1002557cf Merge branch 'patch-1' into 'dev'
button sticking fixed

See merge request hubzilla/core!1305
2018-10-04 13:53:00 +02:00
Mario Vavti cccea911fa remove redundant var 2018-10-04 13:44:26 +02:00
Mario Vavti eb10120607 add apd file 2018-10-04 13:27:16 +02:00
Mario Vavti c00dc6120d defperm app 2018-10-04 13:26:45 +02:00
Mario Vavti d0605e8d5f uexport app 2018-10-04 11:50:38 +02:00
zotlabs d33c331abd regression: double linebreaks in viewsrc output 2018-10-03 21:18:23 -07:00
Max Kostikov 05b6c33a2c button sticking fixed 2018-10-03 21:19:13 +02:00
Mario 3064f2ced5 bump activity app version 2018-10-03 16:09:31 +02:00
Mario 5e7c9b9d4a jot: show settings icon only to local profile owner 2018-10-03 15:21:20 +02:00
Mario 009e03c3ba move archives from network to channel_home 2018-10-03 11:47:12 +02:00
Mario Vavti af3b0146a8 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-10-03 10:44:18 +02:00
Mario Vavti 883e2ccc91 move filing from conversation to network - it is only functional there. 2018-10-03 10:43:54 +02:00
zotlabs 7c1e99884c do not propagate channel deletion for an already deleted channel. 2018-10-02 19:42:21 -07:00
M. Dent 29e1302f3f Merge branch 'dev' into 'dev'
Fix misplaced comma with period.

See merge request hubzilla/core!1304
2018-10-03 03:18:43 +02:00
M.Dent 798f2466e4 Fix misplaced comma with period. 2018-10-02 21:14:36 -04:00
Mario Vavti 67f19745fd add app_destroy hook which allows addons to perform post delete actions 2018-10-02 14:29:56 +02:00
Mario Vavti 72abe5f3d3 do not rely on startpage pconfig anymore 2018-10-01 12:47:14 +02:00
Mario Vavti 08a287dea1 do not default to channel_startpage if startpage app is not installed 2018-10-01 12:38:04 +02:00
Mario Vavti 7dadf387e5 indicate locked features 2018-10-01 11:01:56 +02:00
M. Dent 8febcc2705 Merge branch 'status-editor-hook' into 'dev'
Status editor hook

See merge request hubzilla/core!1300
2018-09-29 20:22:27 +02:00
M. Dent ff20370d0b Status editor hook 2018-09-29 20:22:27 +02:00
Mario Vavti cc9ca8bbff do not unset $_GET[search] and adjust activity_order widget 2018-09-29 18:38:19 +02:00
Mario Vavti 5906d6cce3 improve network search 2018-09-29 18:00:14 +02:00
Mario Vavti 8265dac9c0 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-29 16:00:54 +02:00
Mario Vavti 6eeac03a0e appman: query terms also by uid to prevent double entries 2018-09-29 16:00:34 +02:00
Mario Vavti 7ca8f7b5cc allow to install apps by name 2018-09-29 15:42:22 +02:00
Mario Vavti d7ed5518d1 Merge remote-tracking branch 'mike/master' into dev 2018-09-29 15:41:54 +02:00
zotlabs 6f036bc778 hubzilla core issue #1276 2018-09-28 15:44:18 -07:00
M. Dent ba4a8aa762 Merge branch 'remove-servicelevel-logic' into 'dev'
Remove servicelevel logic

See merge request hubzilla/core!1291
2018-09-29 00:17:55 +02:00
M. Dent 5f992ffe15 Remove servicelevel logic 2018-09-29 00:17:55 +02:00
M. Dent 2904e58a9f Merge translations for non-installed apps message
See merge request hubzilla/core!1296
2018-09-28 21:34:15 +02:00
Max Kostikov c45a9504e7 Update Group.php 2018-09-28 19:52:11 +02:00
Max Kostikov 403ead44f9 Update Wiki.php 2018-09-28 19:50:45 +02:00
Max Kostikov 9b0d123217 Update Webpages.php 2018-09-28 19:50:29 +02:00
Max Kostikov 8e673a6cdf Update Tokens.php 2018-09-28 19:50:15 +02:00
Max Kostikov 6d3c1fb7fc Update Sources.php 2018-09-28 19:49:56 +02:00
Max Kostikov 01043fa790 Update Poke.php 2018-09-28 19:49:42 +02:00
Max Kostikov 23d5e15f0f Update Permcats.php 2018-09-28 19:49:20 +02:00
Max Kostikov 5500473387 Update Pdledit.php 2018-09-28 19:49:02 +02:00
Max Kostikov c8399e8104 Update Oauth2.php 2018-09-28 19:48:44 +02:00
Max Kostikov 423e1422ef Update Oauth.php 2018-09-28 19:48:25 +02:00
Max Kostikov c34c0c6718 Update Notes.php 2018-09-28 19:48:09 +02:00
Max Kostikov e3e96e59d2 Update Mood.php 2018-09-28 19:47:52 +02:00
Max Kostikov accb211280 Update Lang.php 2018-09-28 19:47:37 +02:00
Max Kostikov f07a4667b6 Update Invite.php 2018-09-28 19:47:20 +02:00
Max Kostikov cb768ea23f Update Connect.php 2018-09-28 19:46:36 +02:00
Max Kostikov b3249c10c2 Update Chat.php 2018-09-28 19:46:20 +02:00
Max Kostikov c6fce5de24 Update Cdav.php 2018-09-28 19:46:04 +02:00
Max Kostikov 5c8e1169cd Update Cards.php 2018-09-28 19:45:11 +02:00
Max Kostikov c0a485083d Update Articles.php 2018-09-28 19:44:35 +02:00
Max Kostikov 5f7d83bd4d Update Articles.php 2018-09-28 19:44:10 +02:00
Max Kostikov 52916bfcec Merge branch 'patch-11' into 'dev'
add translations

See merge request Kostikov/core!21
2018-09-28 16:04:29 +02:00
Max Kostikov cb2646154a Merge branch 'patch-12' into 'dev'
Update Oauth2.php

See merge request Kostikov/core!20
2018-09-28 16:03:44 +02:00
Max Kostikov 61a7c4fb33 Merge branch 'patch-13' into 'dev'
Update Pdledit.php

See merge request Kostikov/core!19
2018-09-28 16:03:05 +02:00
Max Kostikov 3a3abc8087 Merge branch 'patch-14' into 'dev'
Update Permcats.php

See merge request Kostikov/core!18
2018-09-28 16:02:33 +02:00
Max Kostikov e9b60cfb26 Merge branch 'patch-15' into 'dev'
Update Poke.php

See merge request Kostikov/core!17
2018-09-28 16:01:49 +02:00
Max Kostikov eea9e2c1d0 Merge branch 'patch-16' into 'dev'
Update Sources.php

See merge request Kostikov/core!16
2018-09-28 16:01:05 +02:00
Max Kostikov 171d129ad1 Merge branch 'patch-17' into 'dev'
Update Tokens.php

See merge request Kostikov/core!15
2018-09-28 16:00:32 +02:00
Max Kostikov 0154c5d74e Merge branch 'patch-18' into 'dev'
Update Webpages.php

See merge request Kostikov/core!14
2018-09-28 15:59:48 +02:00
Max Kostikov 9032a656fa Merge branch 'patch-19' into 'dev'
Update Wiki.php

See merge request Kostikov/core!13
2018-09-28 15:58:55 +02:00
Max Kostikov fda57a93a5 Merge branch 'patch-20' into 'dev'
Update Articles.php

See merge request Kostikov/core!12
2018-09-28 15:58:05 +02:00
Max Kostikov 4ad208668a Merge branch 'patch-21' into 'dev'
Update Cards.php

See merge request Kostikov/core!11
2018-09-28 15:57:29 +02:00
Max Kostikov 23edb51ba4 Merge branch 'patch-22' into 'dev'
Update Cdav.php

See merge request Kostikov/core!10
2018-09-28 15:56:55 +02:00
Max Kostikov adf10296f1 Merge branch 'patch-23' into 'dev'
Update Chat.php

See merge request Kostikov/core!9
2018-09-28 15:56:17 +02:00
Max Kostikov d3e6d6b6a6 Merge branch 'patch-24' into 'dev'
Update Connect.php

See merge request Kostikov/core!8
2018-09-28 15:55:41 +02:00
Max Kostikov 82de0862a1 Merge branch 'patch-25' into 'dev'
Update Group.php

See merge request Kostikov/core!7
2018-09-28 15:54:45 +02:00
Max Kostikov 1969537fd7 Merge branch 'patch-26' into 'dev'
Update Invite.php

See merge request Kostikov/core!6
2018-09-28 15:54:08 +02:00
Max Kostikov 973afe042a Merge branch 'patch-27' into 'dev'
Update Lang.php

See merge request Kostikov/core!5
2018-09-28 15:53:14 +02:00
Max Kostikov 99ceb1691b Merge branch 'patch-28' into 'dev'
Update Mood.php

See merge request Kostikov/core!4
2018-09-28 15:52:28 +02:00
Max Kostikov 4a904fa3a8 Merge branch 'patch-29' into 'dev'
Patch 29

See merge request Kostikov/core!3
2018-09-28 15:46:14 +02:00
Max Kostikov c13d7e29ef Update Notes.php 2018-09-28 15:35:39 +02:00
Max Kostikov 58d9ca1bfd Update Mood.php 2018-09-28 15:35:14 +02:00
Max Kostikov e2115e8ea5 Update Lang.php 2018-09-28 15:34:45 +02:00
Max Kostikov ba417894ed Update Invite.php 2018-09-28 15:34:20 +02:00
Max Kostikov a237248388 Update Group.php 2018-09-28 15:33:50 +02:00
Max Kostikov 7fd332f8cf Update Connect.php 2018-09-28 15:33:17 +02:00
Max Kostikov 2811d6ae53 Update Chat.php 2018-09-28 15:32:27 +02:00
Max Kostikov d8c6d93c6e Update Cdav.php 2018-09-28 15:31:22 +02:00
Max Kostikov 134529a09d Update Cards.php 2018-09-28 15:30:30 +02:00
Max Kostikov 24c7bb600e Update Articles.php 2018-09-28 15:30:03 +02:00
Max Kostikov 90e9948dbe Update Wiki.php 2018-09-28 15:29:33 +02:00
Max Kostikov db006b911a Update Webpages.php 2018-09-28 15:28:57 +02:00
Max Kostikov eb2c2b9400 Update Tokens.php 2018-09-28 15:27:54 +02:00
Max Kostikov 86fc5b5ed8 Update Sources.php 2018-09-28 15:27:16 +02:00
Max Kostikov f7e9454697 Update Poke.php 2018-09-28 15:26:46 +02:00
Max Kostikov 02a16050d9 Update Permcats.php 2018-09-28 15:26:09 +02:00
Max Kostikov 598fe91464 Update Pdledit.php 2018-09-28 15:25:38 +02:00
Max Kostikov 21272735ae Update Oauth2.php 2018-09-28 15:24:45 +02:00
Max Kostikov 52fea09c53 add translations 2018-09-28 15:23:38 +02:00
Mario Vavti d9ccd24b02 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-28 13:08:04 +02:00
Mario 27fef98a39 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-28 13:05:44 +02:00
Mario Vavti c6db644c42 Merge remote-tracking branch 'mike/master' into dev 2018-09-28 12:46:36 +02:00
Mario 41108fc4d3 nav_channel_select should be off by default 2018-09-28 11:46:17 +02:00
Mario Vavti d7a20821c3 move display settings up 2018-09-28 11:32:00 +02:00
Mario Vavti 20285d076b settings for channel home 2018-09-28 11:29:05 +02:00
Mario 44bb070203 add transaction, commit and rollback to update 1221 2018-09-28 09:55:10 +02:00
Mario 9e87219aea Merge branch 'patch-10' into 'dev'
rename groups and group_members tables for MySQL 8 compatibility

See merge request hubzilla/core!1290
2018-09-28 09:41:21 +02:00
M. Dent 1b7e220de7 Merge branch 'channel-limits' into 'dev'
Hide form when at or over service_class['limit_identities']

See merge request hubzilla/core!1292
2018-09-28 04:46:48 +02:00
M.Dent fe8b723622 Hide form when at or over service_class['limit_identities'] 2018-09-27 22:43:36 -04:00
M. Dent 1e85c40c42 Merge branch 'patch-9' into 'dev'
Add translation for new apps

See merge request hubzilla/core!1289
2018-09-28 04:15:28 +02:00
M. Dent f72464a240 Merge branch 'patch-8' into 'dev'
Missprint in Oauth.php fixed

See merge request hubzilla/core!1288
2018-09-28 04:14:51 +02:00
Max Kostikov 65785ead69 Update zot.php 2018-09-28 01:05:03 +02:00
Max Kostikov c550100a55 Update Group.php 2018-09-28 00:52:49 +02:00
Max Kostikov 2836bce8fe Update security.php 2018-09-28 00:51:21 +02:00
Max Kostikov 7f95d47721 Update Group.php 2018-09-28 00:49:32 +02:00
Max Kostikov 51c0045be4 Update zot.php 2018-09-28 00:38:36 +02:00
Max Kostikov abfbfd9e9b Update group.php 2018-09-28 00:33:52 +02:00
Max Kostikov 5d6c8fd807 Update Import.php 2018-09-28 00:28:15 +02:00
Max Kostikov f4799b2ddb Update Group.php 2018-09-28 00:26:01 +02:00
Max Kostikov 9afa6cc245 Update Libsync.php 2018-09-28 00:20:03 +02:00
Max Kostikov 25e8d70786 Update Acl.php 2018-09-28 00:14:21 +02:00
Max Kostikov 978e45911f Update Connections.php 2018-09-28 00:12:00 +02:00
Max Kostikov da7bce3470 Update Contactgroup.php 2018-09-28 00:11:03 +02:00
Max Kostikov 4efa5cfa75 Update Group.php 2018-09-28 00:10:20 +02:00
Max Kostikov 444ae51a3e Update Lockview.php 2018-09-28 00:06:26 +02:00
Max Kostikov 07f82e4a14 Update Network.php 2018-09-28 00:05:43 +02:00
Max Kostikov 3379f6f793 Update Channel.php 2018-09-28 00:02:58 +02:00
Max Kostikov 80b47734a7 Update Activity_filter.php 2018-09-28 00:01:39 +02:00
Max Kostikov 69d46538ce Update boot.php 2018-09-28 00:00:38 +02:00
Max Kostikov 208d38207e Update acl_selectors.php 2018-09-27 23:59:45 +02:00
Max Kostikov ffe80c66d7 Update api_zot.php 2018-09-27 23:58:49 +02:00
Max Kostikov bfa672f42c Update channel.php 2018-09-27 23:56:54 +02:00
Max Kostikov 9f89f3190a Update connections.php 2018-09-27 23:55:20 +02:00
Max Kostikov 71931b423c Update items.php 2018-09-27 23:53:51 +02:00
Max Kostikov b54aabc958 Update security.php 2018-09-27 23:52:46 +02:00
Max Kostikov a45fe72eb9 Update text.php 2018-09-27 23:50:26 +02:00
Max Kostikov 62d64631b5 Update xchan.php 2018-09-27 23:49:41 +02:00
Max Kostikov 11945ce7bc Update schema_mysql.sql 2018-09-27 23:48:25 +02:00
Max Kostikov bb3d908bcf Update schema_postgres.sql 2018-09-27 23:46:58 +02:00
Max Kostikov 98b3946fca rename groups and group_members tables for MySQL 8 compatibility 2018-09-27 23:42:11 +02:00
Mario c15de3b68b more checks 2018-09-27 22:45:43 +02:00
Max Kostikov 78ed1ae446 Add translation for new apps 2018-09-27 21:57:27 +02:00
Max Kostikov 56fdc4f3fe Missprint in Oauth.php fixed 2018-09-27 20:26:47 +02:00
M. Dent f17261020d Merge branch 'dev' into 'dev'
Translate system app names

See merge request hubzilla/core!1286
2018-09-27 19:38:39 +02:00
M.Dent 6f98ca68af Translate system app names 2018-09-27 13:37:15 -04:00
Mario Vavti 269538fdc7 bump version 2018-09-27 14:57:22 +02:00
Mario Vavti 6b23c3e179 implement conversation tools (settings/conversation), remove additional features from the settings menu and get rid of skill levels 2018-09-27 14:56:47 +02:00
zotlabs 5cc19ce053 jsonld signature issue (library is using sha1, spec requires sha256) 2018-09-26 16:39:08 -07:00
Mario Vavti bdf6289b32 tokens: add css file and fix argc and argv values 2018-09-26 22:32:06 +02:00
Mario Vavti e3c04b1fd0 guest access app 2018-09-26 22:24:36 +02:00
Mario Vavti a7948d7bfe permcats app 2018-09-26 22:02:50 +02:00
Mario Vavti 505782f224 remove oauth from features 2018-09-26 16:35:05 +02:00
Mario Vavti 1353c291e9 add check for local_channel() 2018-09-26 16:32:06 +02:00
Mario Vavti 9af1b62bee change wording 2018-09-26 16:26:36 +02:00
Mario Vavti d7ec36e3da wrong app name 2018-09-26 16:23:12 +02:00
Mario Vavti aab97adb23 oauth and oauth2 apps manager 2018-09-26 16:22:34 +02:00
Mario Vavti 91502b4104 change wording 2018-09-26 15:13:19 +02:00
Mario Vavti 9bc76b4259 appification of the pdl editor and move advanced_theming to theme settings where it belongs 2018-09-26 15:02:20 +02:00
Mario Vavti 9948bb3f2a appification of privacy groups 2018-09-25 12:59:53 +02:00
Mario Vavti 0722775038 missing file 2018-09-25 12:22:43 +02:00
Mario Vavti 65423b1768 get rid of general features 2018-09-25 12:02:48 +02:00
Mario Vavti 9bb0f1d18e move advanced_theming switch to settings/display for now 2018-09-25 12:02:00 +02:00
Mario Vavti 39866b7463 move start_menu switch to settings/display for now 2018-09-25 11:37:22 +02:00
Mario Vavti 4c58a5cef2 premium channel app 2018-09-25 10:06:24 +02:00
Mario Vavti c748230b35 revert nav settings opacity 2018-09-24 11:51:20 +02:00
Mario Vavti c3aa15cc16 appification of notes 2018-09-24 11:46:18 +02:00
Mario Vavti b45bd901e0 move categories from tools to editor settings 2018-09-24 10:13:56 +02:00
Mario 317fd06357 Merge branch 'app-installed-filters' into 'dev'
Add filters for addon/app installed checks and docs

See merge request hubzilla/core!1284
2018-09-24 09:57:26 +02:00
Mario 4a7c678213 fade in nav settings button 2018-09-24 09:46:19 +02:00
Mario 85e06a77af add file 2018-09-24 09:34:28 +02:00
Mario 7cadc30914 settings for directory and set App::$profile_uid in directory if local_channel() 2018-09-24 09:33:52 +02:00
M.Dent 995fc63f2c Add filters for addon/app installed checks and docs 2018-09-23 22:36:27 -04:00
Mario e735220691 only explain how to select a channel if there are channels to select 2018-09-23 20:54:36 +02:00
Mario 9b7c6e96f7 only show nav settings icon when hovering over nav 2018-09-23 20:41:01 +02:00
Mario d83fe9d417 minor cleanup 2018-09-23 20:02:28 +02:00
Mario a1d1d5dba7 use different settings for cal_first_day in events and cdav/calendar. This is a tradeoff. It would be better to have one setting for both but if we want to preserve the *all settings* view, this would break its functionality 2018-09-23 19:40:52 +02:00
Mario 781fdaafcd settings for events and cdav calendar 2018-09-23 19:18:05 +02:00
Mario 1f1d5b9181 provide settings for mod photo and make it slightly simpler to create new module settings 2018-09-23 17:52:32 +02:00
Mario 9e22ec267c keep the features in the central array but sort them by module name 2018-09-23 01:11:06 +02:00
Mario b296a73330 this should be off by default 2018-09-22 20:15:34 +02:00
Mario 65be3de200 add files and settings for channel manager 2018-09-22 20:10:48 +02:00
Mario 45078dda82 introduce profile settings and provide a way for modules without an app to still be able to link to its settings page from the navbar 2018-09-22 19:48:17 +02:00
Mario Vavti 822bbd9ad5 another try to fix Fix PHP Warning: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity 2018-09-22 14:18:37 +02:00
Mario c873f7e702 Revert "Fix PHP Warning: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity"
This reverts commit 184928204a
2018-09-22 14:15:30 +02:00
Mario Vavti 0a5ac62b59 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-22 13:32:58 +02:00
Mario Vavti 1e5405ccaf appification of sources 2018-09-22 13:32:42 +02:00
Mario 12d2270935 Merge branch 'page-meta-properties' into 'dev'
Page meta properties

See merge request hubzilla/core!1283
2018-09-22 10:44:51 +02:00
M. Dent ed00d1b2e3 Page meta properties 2018-09-22 10:44:51 +02:00
Mario Vavti 2b452ffbd3 rge remote-tracking branch 'mike/master' into dev 2018-09-22 08:44:01 +02:00
zotlabs 3b4a23c4a1 doc cleanup 2018-09-21 17:21:47 -07:00
Mario Vavti 4484985c2d add file 2018-09-21 21:37:00 +02:00
Mario Vavti 6f99ca1d31 opacity for jot settings/reset buttons 2018-09-21 20:59:31 +02:00
Mario Vavti 8efa103041 provide editor settings 2018-09-21 20:57:01 +02:00
Mario Vavti 9638bf2b1e provide a return path from settings pages 2018-09-21 20:23:31 +02:00
Mario Vavti 6f43468724 compare strpos() result against false 2018-09-21 15:08:02 +02:00
Mario Vavti 18a9ebdb1e add missing check 2018-09-21 14:07:30 +02:00
Mario 604142af93 Merge branch 'patch-5' into 'dev'
save admin page values

See merge request hubzilla/core!1282
2018-09-21 13:55:47 +02:00
Max Kostikov 2d83868ed9 Update admin_account_edit.tpl 2018-09-21 13:50:50 +02:00
Max Kostikov 73195a0215 Update admin_account_edit.tpl 2018-09-21 13:48:44 +02:00
Max Kostikov 13d05549f8 Update admin_accounts.tpl 2018-09-21 13:48:40 +02:00
Max Kostikov 0143bc734c Update admin_channels.tpl 2018-09-21 13:48:35 +02:00
Max Kostikov ff860a3310 Update admin_logs.tpl 2018-09-21 13:48:27 +02:00
Max Kostikov ed0044aeab Update admin_profiles.tpl 2018-09-21 13:48:22 +02:00
Max Kostikov 1a6d290d71 Update admin_security.tpl 2018-09-21 13:48:12 +02:00
Max Kostikov dbb7245e22 Update admin_site.tpl 2018-09-21 13:48:07 +02:00
Mario Vavti 437aa4082c Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-21 13:24:38 +02:00
Mario 0f9802a47c Merge branch 'patch-5' into 'dev'
Admin forms buttons design unification

See merge request hubzilla/core!1281
2018-09-21 13:24:29 +02:00
Mario Vavti 46d6d1c329 Merge remote-tracking branch 'mike/master' into dev 2018-09-21 12:45:32 +02:00
Mario Vavti 4dd1521677 fix position of nav settings icon 2018-09-21 12:16:36 +02:00
Mario Vavti 32fba39915 fix typo 2018-09-21 11:22:11 +02:00
Mario Vavti c1697ce96b fix can not enter text in notes widget 2018-09-21 11:15:18 +02:00
zotlabs ba49e6a588 don't double encode 2018-09-20 22:46:47 -07:00
zotlabs 5525f082e6 remove bbcode from event hovertip 2018-09-20 22:43:01 -07:00
zotlabs a4d987b45a Merge branch 'dev' 2018-09-20 18:36:14 -07:00
zotlabs 3cc66b6816 bookmarks fail to sync 2018-09-20 16:07:32 -07:00
Max Kostikov 21ff570c4d Update admin_account_edit.tpl 2018-09-20 23:40:09 +02:00
Max Kostikov f2e4cf3a92 Update admin_security.tpl 2018-09-20 23:39:46 +02:00
Max Kostikov 7123de66f9 Update admin_profiles.tpl 2018-09-20 23:39:18 +02:00
Max Kostikov e4fe202fc6 Update admin_site.tpl 2018-09-20 23:38:48 +02:00
Max Kostikov bde6caf167 Update admin_accounts.tpl 2018-09-20 23:38:19 +02:00
Max Kostikov 96f45b5fbe Update admin_channels.tpl 2018-09-20 23:36:35 +02:00
Max Kostikov 4352afeeb0 Update admin_logs.tpl 2018-09-20 23:32:13 +02:00
Mario Vavti 369f34b2d1 remove connection filter from network settings 2018-09-20 13:25:47 +02:00
Mario Vavti 1ca558f011 move connection filtering setting from network to connections, provide a link to settings in the navbar if present for a module and some code optimisation 2018-09-20 13:22:41 +02:00
Mario Vavti a6db822a69 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-20 12:10:39 +02:00
Mario Vavti ad8226d549 deal with the ability to provide settings url in apd files in include/nav.php 2018-09-20 12:10:27 +02:00
Mario 1b27327057 Merge branch 'preempt-hooks' into 'dev'
Preempt hooks

See merge request hubzilla/core!1279
2018-09-20 12:08:45 +02:00
Mario 3d713cee62 Merge branch 'hook-docs' into 'dev'
Document new hooks

See merge request hubzilla/core!1278
2018-09-20 12:07:47 +02:00
Mario Vavti afd4da8f11 Merge remote-tracking branch 'mike/master' into dev 2018-09-20 11:16:14 +02:00
M.Dent (DM42.Net) 3ee632514c Add structure to permit_hook 2018-09-19 22:33:25 -04:00
M.Dent (DM42.Net) 456fe71ca9 add hook: permit_hook 2018-09-19 21:54:46 -04:00
M.Dent (DM42.Net) f2c59b3881 Document new hooks 2018-09-19 21:18:06 -04:00
zotlabs 2c1560e027 fix setup 2018-09-19 17:56:23 -07:00
Mario Vavti 34fec995f7 allow a second url in apd files for settings, hide pin and star buttons in edit mode and use strpos() instead of strstr() in some places 2018-09-19 15:00:06 +02:00
Mario Vavti ec7cbe272a Merge remote-tracking branch 'mike/master' into dev 2018-09-19 11:23:38 +02:00
zotlabs 98bc1ed600 this was needed 2018-09-18 23:18:59 -07:00
zotlabs 7756773683 missing autocomplete (e.g. mentions) in mod_photos comments 2018-09-18 19:52:10 -07:00
zotlabs dfdf11d461 Merge branch 'dev' 2018-09-17 19:38:40 -07:00
zotlabs cc5ef57843 fix listeners table create and expire federation had a syntax error 2018-09-17 18:40:49 -07:00
Mario Vavti 71c599f50e remove superfluous comma 2018-09-17 22:16:42 +02:00
Mario Vavti a1f3a5d9b6 remove unused variable 2018-09-17 22:16:10 +02:00
Mario Vavti a9e89d2fcc Merge remote-tracking branch 'mike/master' into dev 2018-09-17 22:07:50 +02:00
zotlabs fdc89d1b89 pdo install check requires namespacing 2018-09-17 13:03:17 -07:00
Mario c4c1b1f5a2 Merge branch 'patch-3' into 'dev'
Save combined view while deleting or recalling first message in thread

See merge request hubzilla/core!1273
2018-09-17 13:29:52 +02:00
Max Kostikov 12b9106fc7 Update zot.php 2018-09-17 13:16:04 +02:00
Max Kostikov faaffdd618 Update message.php 2018-09-17 13:15:43 +02:00
Max Kostikov 774729b221 Update msglib.php 2018-09-17 13:15:24 +02:00
Mario Vavti 1455fa6bc3 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-17 11:36:25 +02:00
Mario Vavti a9853e6033 seperate settings for mod network 2018-09-17 11:36:11 +02:00
Mario eefa47776b Merge branch 'trap-template-errors' into 'dev'
Trap errors in template rendering.  Output a generic error and log problem.

See merge request hubzilla/core!1274
2018-09-17 11:03:37 +02:00
Mario 0b12a7e66f Merge branch 'delete-attach-hook' into 'dev'
delete_attach hook

See merge request hubzilla/core!1275
2018-09-17 11:00:22 +02:00
Mario 3019d8341d Merge branch 'app-list-hook' into 'dev'
Add hook to allow addons to filter the list returned by app_list

See merge request hubzilla/core!1276
2018-09-17 10:55:47 +02:00
Mario Vavti dcacfc1124 Merge remote-tracking branch 'mike/master' into dev 2018-09-17 10:31:13 +02:00
Mario Vavti 2f6cb764a4 prepare submodule to interact with route 2018-09-17 10:30:47 +02:00
M.Dent a0cf2b53e0 Add hook to allow addons to filter the list returned by app_list 2018-09-16 23:01:17 -04:00
zotlabs 593a5072d9 Some improvements to setup checks: image library and pdo support 2018-09-16 20:00:20 -07:00
zotlabs 27617efbfb Merge branch 'dev' 2018-09-16 19:05:12 -07:00
zotlabs 6ab12597f5 do not sync the channel_moved field 2018-09-16 18:59:12 -07:00
Mario Vavti 07cd1d1272 appification of the lang module 2018-09-16 09:30:07 +02:00
M.Dent (DM42.Net) abe35817cd Add attach_delete hook 2018-09-15 23:09:16 -04:00
Max Kostikov 585bdf562a Update msglib.php 2018-09-16 00:43:45 +02:00
Max Kostikov 034441bd13 use common msg_drop function 2018-09-15 22:32:56 +02:00
Max Kostikov 1819704620 Use common msg_drop function 2018-09-15 22:32:07 +02:00
Max Kostikov 18801a6c60 formatting 2018-09-15 22:31:08 +02:00
Max Kostikov f83c2d5cd1 Create msglib.php 2018-09-15 22:27:39 +02:00
Max Kostikov 724dc48fe8 Add new file 2018-09-15 21:41:13 +02:00
Mario Vavti 791ff25d52 appify poke 2018-09-15 11:09:16 +02:00
Mario Vavti 299eb469f8 appify mood 2018-09-15 11:00:41 +02:00
Mario Vavti 0f9a8a43e4 appify invite 2018-09-15 10:48:51 +02:00
Mario Vavti 7856f5882b appify cdav stuff. WARNING: if you use caldav or carddav from a client or the webinterface you will need to enable those apps to make things work again 2018-09-15 10:10:43 +02:00
Max Kostikov 284e5dd2e8 unification with zot.php code for future reuse 2018-09-15 01:45:54 +02:00
Max Kostikov 3d3f4f50fb formatting 2018-09-15 01:40:17 +02:00
Max Kostikov 8d89c4bbce Save combined view on calling first message in thread 2018-09-15 01:20:49 +02:00
Max Kostikov 85d8225cc0 less data in select 2018-09-15 01:01:48 +02:00
M.Dent 8ad24ca3e8 Catch errors in template rendering. Output a generic error and log problem. 2018-09-14 17:53:28 -04:00
Max Kostikov 6360dee125 formatting 2018-09-14 17:45:42 +02:00
Max Kostikov e931616011 Save combined view while deleting first message in thread 2018-09-14 17:38:14 +02:00
Mario ab611e9ef3 Merge branch 'patch-2' into 'dev'
php2po.php unify quote/unquote

See merge request hubzilla/core!1272
2018-09-14 10:48:03 +02:00
Max Kostikov 240d4704aa php2po.php unify quote/unquote 2018-09-13 21:28:15 +02:00
Mario Vavti f9d43479f2 css issues 2018-09-13 15:14:46 +02:00
Mario Vavti c2f6f87cae add activity_filter and activity_order .bb files 2018-09-13 11:55:37 +02:00
Mario Vavti 869534fafa remove network_tabs() which has been deprecated and replaced by activity_{order, filters} widgets 2018-09-13 11:53:59 +02:00
Mario Vavti 56f88f2e30 move chat from feature to apps 2018-09-13 11:32:43 +02:00
Mario Vavti a1d5ce3716 remove profile_tabs() which has been deprecated and replaced by channel_apps() 2018-09-13 10:59:37 +02:00
Mario 78dc679a72 Merge branch 'patch-1' into 'dev'
z_fetch_url with case insensitive headers

See merge request hubzilla/core!1271
2018-09-12 21:11:47 +02:00
Mario Vavti 57e3ee47ee more feature to app transition 2018-09-12 20:52:55 +02:00
Mario Vavti 184928204a Fix PHP Warning: DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity 2018-09-12 11:14:49 +02:00
Mario Vavti 2651eae663 mpre feature to app transition 2018-09-12 11:08:53 +02:00
Mario Vavti 28e4977c33 include item.title in /network and /channel search 2018-09-11 11:16:58 +02:00
zotlabs adc164b825 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-09-10 22:11:26 -07:00
Max Kostikov 66bf55710e Update network.php 2018-09-10 15:13:28 +02:00
Mario Vavti c6abe87ec2 move cards from features to apps 2018-09-10 13:34:05 +02:00
Mario Vavti 4bb16b18ed cover photo: mior issue and more cleanup 2018-09-10 12:12:05 +02:00
Mario Vavti 4cc413cdaf cover photo: some code cleanup and fix height issue when photo was not cached 2018-09-10 11:12:15 +02:00
zotlabs be3b630474 important hyperdrive component 2018-09-09 20:53:20 -07:00
Mario Vavti 677ad71b96 fix some issues with latest notification improvements 2018-09-09 19:44:27 +02:00
Mario Vavti 9607bb29fd missing text 2018-09-07 14:58:16 +02:00
Mario Vavti d29415a6e2 provide a noscript_content switch for mod channel and display 2018-09-07 14:23:16 +02:00
Mario Vavti 54fa28441c install bootstrap via composer 2018-09-07 11:26:02 +02:00
Mario Vavti bb42ec2bfc apps: change page title to available/installed, display install action label in button and use different icons for installable and updateable apps 2018-09-07 10:39:15 +02:00
Mario Vavti d31251c54e overflow should be auto not visible 2018-09-07 10:07:29 +02:00
Mario Vavti 6a338e28b2 -1 has issues in some browsers 2018-09-06 14:27:56 +02:00
Mario Vavti f3ce5e73fe Merge remote-tracking branch 'mike/master' into dev 2018-09-06 12:22:41 +02:00
Mario Vavti c53d3a4b3a bump version 2018-09-06 11:44:47 +02:00
Mario Vavti 5135f236c2 improve cover-photo handling 2018-09-06 11:30:50 +02:00
Mario Vavti 78c847ef7d improve notification handling on small screens 2018-09-06 11:14:08 +02:00
Mario Vavti 673a2f67f1 sticky-kit: improve handling 2018-09-06 10:08:55 +02:00
zotlabs c5bc4fe245 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-09-05 21:02:06 -07:00
zotlabs bc4a92b702 detect and automatically repair duplicate plugin hook scenarios. 2018-09-05 19:43:07 -07:00
Mario Vavti ea381d9180 move str_replace inside if clause 2018-09-05 14:44:06 +02:00
Mario Vavti 4f82428a20 hide cover photo by default and show it only if conditions are met 2018-09-05 14:31:34 +02:00
Mario Vavti e494a76b33 revert "Add bottom margin on aside elements and main to allow for viewport footer."
This reverts commit 1d7d604016.
2018-09-05 12:34:30 +02:00
Mario Vavti 1753e40466 Revert "Fix jumpy sidebars"
This reverts commit 79eb6d3942.
2018-09-05 12:32:53 +02:00
Mario Vavti 6667ba4172 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-05 12:20:06 +02:00
Mario Vavti 75e8aa8aee bump version 2018-09-05 12:19:52 +02:00
Mario a81a1bd5f1 Merge branch 'fix-authorcomment-fix' into 'dev'
Corrected resubmit of fixes to Authors unable to comment on posts they authored…

See merge request hubzilla/core!1269
2018-09-05 12:18:56 +02:00
Mario Vavti 5d1539df75 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-09-05 12:17:50 +02:00
Mario Vavti a821682c8c instead of not displaying the cover-photo at all after first page load, load the page with the cover slided up. change pointer to n-resize if cover is not slid. 2018-09-05 12:17:32 +02:00
M.Dent 9446e0348e Corrected resubmit of fixes to Authors unable to comment on posts they authored when owned by others. 2018-09-04 08:14:52 -04:00
Mario Vavti 41ccb61c2e Revert "Fix: Authors unable to comment on posts they authored when under owned by others in certain circumstances."
This reverts commit e2824f9259.

Reverting because it breaks forum mentions.
2018-09-03 18:14:17 +02:00
Mario 1b7781a159 Merge branch 'add-delivery-status-info' into 'dev'
Fix: Authors unable to comment on posts they authored when under owned by others…

See merge request hubzilla/core!1268
2018-09-02 09:17:29 +02:00
Mario Vavti d66f58a550 fix undefined constant warning 2018-09-01 21:09:04 +02:00
M.Dent e2824f9259 Fix: Authors unable to comment on posts they authored when under owned by others in certain circumstances. 2018-09-01 13:45:05 -04:00
Mario Vavti 4376f8f030 do not count sys channel in totals 2018-09-01 13:43:32 +02:00
Mario Vavti d377660b5a update 1218: missing default value for pg 2018-08-31 20:26:31 +02:00
Mario c5ce9b0699 Merge branch 'call-hooks-optimization' into 'dev'
Micro-optimization to call_hooks()

See merge request hubzilla/core!1267
2018-08-30 10:09:00 +02:00
Mario c74a7ce4fc Merge branch 'add-delivery-status-info' into 'dev'
Add dreport_process hook

See merge request hubzilla/core!1266
2018-08-30 10:07:18 +02:00
Mario Vavti d98ed68749 html-to-markdown adds a backslash infront of a hash after each new line - manualy remove those 2018-08-29 16:16:17 +02:00
M.Dent 70d6d2f2db Micro-optimization to call_hooks() 2018-08-29 10:02:04 -04:00
M.Dent da441c59f6 Add dreport_process hook 2018-08-29 08:58:49 -04:00
Mario Vavti 42093aedcf db update to get rid of bogus activitypub xchans which got created due to a bug in the pubcrawl addon 2018-08-29 13:57:36 +02:00
Mario Vavti 74d80473df Merge remote-tracking branch 'mike/master' into dev 2018-08-29 11:50:40 +02:00
zotlabs 7ecb337405 redirect stdout/stderr on cron command 2018-08-28 22:43:37 -07:00
Mario Vavti 07792adc56 add paragonie and symfonie since ramsey/uuid appears to require them 2018-08-28 12:06:36 +02:00
Mario Vavti c0c827d3ad update composer libs and add ramsey/uuid 2018-08-28 12:00:23 +02:00
Mario Vavti 6a2bbed73d remove distinct from network query again until performance issue is resolved or another fix for the underlying problem is found 2018-08-27 10:19:10 +02:00
Mario 4c1944a08d Merge branch 'extend-convitems-dropdown' into 'dev'
Extend cog dropdown & temp fix for feed display of corrupt mids

See merge request hubzilla/core!1265
2018-08-27 10:02:58 +02:00
Mario 95f870f1b4 Merge branch 'dev' into 'dev'
Add translation to missed strings in Wiki

See merge request hubzilla/core!1264
2018-08-27 10:00:50 +02:00
Mario Vavti c250de7dae Merge remote-tracking branch 'mike/master' into dev 2018-08-27 09:48:22 +02:00
zotlabs e4b6a143c7 Revert "Change main router request variable from 'q' to 'req'. This is necessary to implement search in the twitter api addon, because twitter requires use of the variable 'q'." Reverting because this will only work with Apache and break nginx/other installations.
This reverts commit 9367e9fe5a.
2018-08-26 23:05:56 -07:00
zotlabs 9367e9fe5a Change main router request variable from 'q' to 'req'. This is necessary to implement search in the twitter api addon, because twitter requires use of the variable 'q'. 2018-08-26 23:00:31 -07:00
M.Dent a0c2bbac9d Add hook to extend conv_item cog dropdown menu 2018-08-26 23:26:10 -04:00
Max Kostikov f5f6ec3d71 Update wiki.tpl 2018-08-25 21:34:58 +02:00
Max Kostikov c57c1c8b2e Merge branch 'revert-c16fda1c' into 'dev'
Revert "Update wiki.tpl"

See merge request Kostikov/core!2
2018-08-25 21:31:58 +02:00
Max Kostikov 44f639f371 Revert "Update wiki.tpl"
This reverts commit c16fda1cb6
2018-08-25 21:31:47 +02:00
Max Kostikov 4435717168 Merge branch 'revert-ff1a0d21' into 'dev'
Revert "Update wiki.tpl"

See merge request Kostikov/core!1
2018-08-25 21:31:17 +02:00
Max Kostikov 6767ff5434 Revert "Update wiki.tpl"
This reverts commit ff1a0d217f
2018-08-25 21:30:58 +02:00
Max Kostikov ff1a0d217f Update wiki.tpl 2018-08-25 21:29:25 +02:00
Max Kostikov 42c5e98670 Update Wiki_page_history.php 2018-08-25 21:27:20 +02:00
Max Kostikov c9b80a3612 Update Wiki.php 2018-08-25 21:26:50 +02:00
Max Kostikov e78a4d61d8 Update NativeWikiPage.php 2018-08-25 21:25:26 +02:00
Max Kostikov 88ebcb56e7 Update Wiki_page_history.php 2018-08-25 21:23:08 +02:00
Max Kostikov 308dda1587 Update Wiki.php 2018-08-25 21:21:57 +02:00
Max Kostikov 67a9dd8497 Update NativeWikiPage.php 2018-08-25 21:20:00 +02:00
Max Kostikov 732ce25d7f Update nwiki_page_history.tpl 2018-08-25 21:17:25 +02:00
Max Kostikov c16fda1cb6 Update wiki.tpl 2018-08-25 21:16:05 +02:00
Mario Vavti f036c25dca Merge remote-tracking branch 'mike/master' into dev 2018-08-24 14:44:45 +02:00
Mario 7fc4292ed8 Merge branch 'dm42fixes' into 'dev'
fix exclusion of redmatrix theme

See merge request hubzilla/core!1263
2018-08-24 14:33:04 +02:00
Mario b50e8a5cf9 Merge branch 'patch-19' into 'dev'
Update Russian translation

See merge request hubzilla/core!1262
2018-08-24 14:31:28 +02:00
zotlabs 7018da3f12 code cleanup 2018-08-23 22:44:22 -07:00
zotlabs a66c43166a first_post_date() (used by archive widget) - trigger the query options off of the active module rather than rely on passed parameters 2018-08-23 21:01:28 -07:00
M.Dent 2893f7d481 Get full page of items 2018-08-23 23:54:18 -04:00
M.Dent 398e42acb5 fix exclusion of redmatrix theme 2018-08-23 20:53:24 -04:00
zotlabs 6ecd31a715 tweak archive widget for articles 2018-08-22 13:30:16 -07:00
Max Kostikov 456bc2ef86 Update hstrings.php 2018-08-22 15:13:01 +02:00
Max Kostikov e071cd4635 Update hmessages.po 2018-08-22 15:12:09 +02:00
Mario Vavti cc03e1ceef Merge remote-tracking branch 'mike/master' into dev 2018-08-22 10:47:40 +02:00
Mario e4d08fc5d7 Merge branch 'redbasic-addroomforfooter' into 'dev'
Fix jumpy sidebars

See merge request hubzilla/core!1261
2018-08-22 10:46:02 +02:00
zotlabs b25192332b profile likes - liker image was a bit large and didn't make a very pleasant looking dropdown, may have been overlooked when other related things were changed to menu-img-1 class 2018-08-21 23:39:49 -07:00
zotlabs 0eeaf8713f add api_not_found hook 2018-08-21 23:13:54 -07:00
zotlabs 42c4a0da51 Zot/Finger: ignore deleted hublocs 2018-08-21 21:38:10 -07:00
M.Dent 79eb6d3942 Fix jumpy sidebars 2018-08-21 13:18:42 -04:00
Mario Vavti db853134e3 Merge remote-tracking branch 'mike/master' into dev 2018-08-21 13:19:30 +02:00
Mario 218029ee57 Merge branch 'redbasic-addroomforfooter' into 'dev'
Add bottom margin on aside elements and main to allow for viewport footer.

See merge request hubzilla/core!1259
2018-08-21 13:17:14 +02:00
Mario 4295fbf6c6 Merge branch 'dev' into 'dev'
Update catalan translations for sstrings up to 18th July 2018

See merge request hubzilla/core!1260

(cherry picked from commit 0985adb770)

af31bbeb Update catalan translations for sstrings up to 18th July 2018
2018-08-21 13:14:25 +02:00
Mario 0985adb770 Merge branch 'dev' into 'dev'
Update catalan translations for sstrings up to 18th July 2018

See merge request hubzilla/core!1260
2018-08-21 13:13:48 +02:00
Mario 5d2ac10073 Merge branch 'patch-17' into 'master'
Add missed app 'Order Apps'

See merge request hubzilla/core!1258

(cherry picked from commit 85aa495741)

6086a70e Add missed app 'Order Apps'
2018-08-21 13:13:23 +02:00
Mario 85aa495741 Merge branch 'patch-17' into 'master'
Add missed app 'Order Apps'

See merge request hubzilla/core!1258
2018-08-21 13:12:41 +02:00
zotlabs 8bf1e3a944 more code optimisation 2018-08-20 22:02:08 -07:00
zotlabs 066febdf40 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-08-20 20:20:57 -07:00
zotlabs 9b620b2a35 remove checkjs reloader from mod_display also 2018-08-20 20:07:54 -07:00
zotlabs a9bbfe9c4f Only show cover photos once per login session. After that they can get annoying. If there is pushback on this, then it should perhaps be optional. 2018-08-20 17:38:38 -07:00
zotlabs d95735deaf channel page performance improvement: don't use "checkjs" with an associated page reload. Wrap a static copy of the content in noscript tags instead. 2018-08-20 17:22:49 -07:00
fadelkon af31bbeba1 Update catalan translations for sstrings up to 18th July 2018 2018-08-20 22:50:46 +02:00
M.Dent 1d7d604016 Add bottom margin on aside elements and main to allow for viewport footer. 2018-08-20 00:15:34 -04:00
zotlabs df26fec1b3 hubzilla core issue #1262 2018-08-17 21:21:02 -07:00
Max Kostikov 6086a70e06 Add missed app 'Order Apps' 2018-08-17 17:48:55 +02:00
zotlabs e5529938ea Suppress duplicate info() messages. This was done long for notice(), but info() was overlooked at that time. 2018-08-16 12:35:57 -07:00
Mario Vavti e25db4d1b5 Merge remote-tracking branch 'mike/master' into dev 2018-08-16 08:50:52 +02:00
zotlabs 32acb0ff01 missing files 2018-08-15 21:33:11 -07:00
zotlabs f230c07ba5 possible fixes for can_comment_on_post(), provide wiki_list on wiki sidebar 2018-08-15 17:00:37 -07:00
Mario Vavti 2becc3273a Merge remote-tracking branch 'mike/master' into dev 2018-08-15 13:21:12 +02:00
zotlabs f4f610f1a3 more backporting for zot6 2018-08-14 18:19:34 -07:00
Mario Vavti 10c5b46e3b Merge remote-tracking branch 'mike/master' into dev 2018-08-14 13:04:37 +02:00
Mario b503ef8761 Merge branch 'override-helpfiles' into 'dev'
Override helpfiles

See merge request hubzilla/core!1257
2018-08-14 13:03:26 +02:00
M. Dent 94393d27c8 Override helpfiles 2018-08-14 13:03:26 +02:00
zotlabs 12f4787b67 issue with mdpost addon and archive.org links which contain a full url as a path/query component 2018-08-13 23:11:10 -07:00
zotlabs f15c1c4e54 hubloc DB changes needed for z6 2018-08-13 21:18:20 -07:00
zotlabs 62925c4c3f oidc cleanup and discovery 2018-08-13 20:24:04 -07:00
zotlabs 4fdf5d28ca minor oauth2 updates - renamed zot webbie to 'webfinger' and zothash to 'portable_id', fixed/simplified cgi auth mode 2018-08-13 17:24:48 -07:00
Mario b78c9a2251 Merge branch 'add-template-overrides' into 'dev'
Add template overrides

See merge request hubzilla/core!1256
2018-08-13 14:06:36 +02:00
M.Dent b436c4a94c Add support for overriding the default template location and individual templates via .htconfig.php 2018-08-12 19:47:10 -04:00
zotlabs db1a546aba add table support to markdown 2018-08-12 16:25:14 -07:00
M.Dent 9402f537b6 Fix root not added to internationalized template search 2018-08-12 19:02:11 -04:00
zotlabs 2d29095348 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-08-12 15:10:19 -07:00
zotlabs ac03b4ccd7 make channel_remove less memory hungry 2018-08-12 15:09:02 -07:00
Mario Vavti 759a18685b Merge remote-tracking branch 'mike/master' into dev 2018-08-12 14:07:16 +02:00
Mario e07ab65d73 Merge branch 'oauth2-ui-pr' into 'dev'
Oauth2 ui pr

See merge request hubzilla/core!1255
2018-08-12 14:06:24 +02:00
Mario 26f51ece90 Merge branch 'oauth2' into 'dev'
Fixes to OAuth2 connect-with-openid.  Add zothash Claim.  Add zotwebbie Claim.

See merge request hubzilla/core!1254
2018-08-12 14:03:36 +02:00
Mario 99066ae939 Merge branch 'patch-16' into 'dev'
Add translation for missed string

See merge request hubzilla/core!1253

(cherry picked from commit 5ff0f09a45)

d3362dfa Add translation for missed string
2018-08-12 13:59:49 +02:00
Mario 5ff0f09a45 Merge branch 'patch-16' into 'dev'
Add translation for missed string

See merge request hubzilla/core!1253
2018-08-12 13:59:07 +02:00
zotlabs 5afe779ffc prevent json-ld bombing, turn off browser autocomplete on channel sources creation 2018-08-11 16:16:54 -07:00
M.Dent af042ccf07 OAuth2 UI and settings updates 2018-08-10 13:54:26 -04:00
M.Dent e587fe5ce8 Add user_id = local_channel() to the where clause of updates 2018-08-10 13:54:07 -04:00
M.Dent 0b31c677f2 Fixes to OAuth2 connect-with-openid. Add zothash Claim. Add zotwebbie Claim. 2018-08-10 12:01:05 -04:00
Max Kostikov d3362dfa0c Add translation for missed string 2018-08-10 16:56:22 +02:00
Mario Vavti 7890157f52 revert debug comment from the last commit 2018-08-09 23:07:50 +02:00
Mario Vavti b3d1ea4cd5 fix zid leaking to nonzot sites if markdown is enabled 2018-08-09 17:03:20 +02:00
Mario Vavti 7c842f3170 search form action for channel search needs the channel address
(cherry picked from commit 054c5da294)
2018-08-09 15:50:49 +02:00
Mario Vavti 054c5da294 search form action for channel search needs the channel address 2018-08-09 15:47:57 +02:00
Mario Vavti 5c5a808290 Merge remote-tracking branch 'mike/master' into dev 2018-08-09 11:07:38 +02:00
Mario Vavti 5c30b2f271 update install.txt 2018-08-08 09:10:03 +02:00
Mario ce2216f544 Merge branch 'patch-15' into 'dev'
Add XMLreader in PHP requirements

See merge request hubzilla/core!1252
2018-08-08 09:07:26 +02:00
zotlabs 1d13cc1601 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-08-06 21:32:45 -07:00
zotlabs 166879b8b0 bring some Zot6 libraries and interfaces to red/hubzilla 2018-08-06 17:43:22 -07:00
zotlabs aeb9d5cd90 create alter_pdl hook 2018-08-05 23:19:33 -07:00
zotlabs 8e9d076216 ability for addons to create .pdl files and load them automatically 2018-08-04 13:50:49 -07:00
Max Kostikov 0d48cb959f Add XMLreader in PHP requirements 2018-08-03 19:32:51 +02:00
zotlabs d908f53607 add app_options field 2018-08-02 22:49:30 -07:00
Mario 238551b024 Merge branch 'fixactivityorderwithfilters' into 'master'
Add GET for filtered forums

See merge request hubzilla/core!1251

(cherry picked from commit 4e6539efec)

ee1fde42 Add GET for filtered forums
2018-08-02 20:17:16 +02:00
Mario 4e6539efec Merge branch 'fixactivityorderwithfilters' into 'master'
Add GET for filtered forums

See merge request hubzilla/core!1251
2018-08-02 20:16:25 +02:00
zotlabs c806279fa9 update certs 2018-08-01 21:32:05 -07:00
DM42.Net (Matt Dent) ee1fde4262 Add GET for filtered forums 2018-08-01 21:14:48 -04:00
zotlabs 4d0611b7d4 hubzilla core issue #1258 2018-08-01 16:12:44 -07:00
Mario 1358303e42 Merge branch 'dev' into 'dev'
Update Spanish translation

See merge request hubzilla/core!1249

(cherry picked from commit c17f0fb44f)

edf83418 Update Spanish translation
2018-07-31 14:42:18 +02:00
Mario c17f0fb44f Merge branch 'dev' into 'dev'
Update Spanish translation

See merge request hubzilla/core!1249
2018-07-31 14:42:01 +02:00
Mario Vavti 569cd6c57c Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-07-31 14:39:51 +02:00
zotlabs 0cfaf34a22 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-07-30 18:11:49 -07:00
zotlabs e8aeecc4c9 When checking permissions ignore checking site "Block Public" settings in cases where site permissions aren't applicable 2018-07-30 17:41:37 -07:00
Manuel Jiménez Friaza edf834188d Update Spanish translation 2018-07-30 12:03:03 +02:00
Mario 4e402dca7d Merge branch 'patch-13' into 'dev'
Workaround on possible error with php2po

See merge request hubzilla/core!1247
2018-07-30 10:01:19 +02:00
Mario 7f6bf7170a Merge branch 'patch-9' into 'dev'
Respect navbar translations

See merge request hubzilla/core!1243

(cherry picked from commit cbd8c07265)

05b3237b Update nav.php
2018-07-30 10:00:24 +02:00
Mario 0ed9d3c62c Merge branch 'patch-8' into 'dev'
Fix navbar missed translations

See merge request hubzilla/core!1242

(cherry picked from commit 3a6d3cb396)

0fe7004d Update Apps.php
4fd9d1ee Update Apps.php
2018-07-30 10:00:01 +02:00
gia vec 149071bf0c Update network.php
(cherry picked from commit 8db006d9a1)
2018-07-30 09:48:24 +02:00
Mario 720e691f33 Merge branch 'patch-1' into 'master'
Update network.php

See merge request hubzilla/core!1248
2018-07-30 09:47:41 +02:00
zotlabs 32614e4074 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-07-29 18:00:56 -07:00
zotlabs 9dc5a3bfc9 this may conflict 2018-07-29 17:59:40 -07:00
gia vec 8db006d9a1 Update network.php 2018-07-29 19:19:37 +02:00
Max Kostikov cb4afd39bd Workaround on possible error 2018-07-29 16:26:33 +02:00
Max Kostikov e078caffd8 Update php2po.php 2018-07-29 14:20:01 +02:00
Max Kostikov 90a9febb6c Workaround on possible error 2018-07-29 12:05:53 +02:00
Mario Vavti e4a1286aae fix sql empty query error in db update 1216 2018-07-29 08:05:41 +02:00
Mario 08a8011456 Merge branch 'patch-12' into 'dev'
Process msgctxt plurals

See merge request hubzilla/core!1246
2018-07-29 07:14:09 +02:00
Mario Vavti 643b6f0aa3 version 2018-07-29 07:00:30 +02:00
Mario Vavti 45d262d6c0 Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-07-29 06:59:10 +02:00
Mario Vavti 5dbd11c6ed wrong class name 2018-07-29 06:58:35 +02:00
Mario Vavti 3fcb6df0f1 Merge remote-tracking branch 'mike/master' into dev 2018-07-29 06:43:55 +02:00
zotlabs 9701516228 fix unsanitised xchan_name 2018-07-28 17:17:12 -07:00
Max Kostikov 77dfe63d90 Process msgctxt plurals 2018-07-29 02:11:27 +02:00
zotlabs 2367d94a42 SECURITY: sanitise vcard fields 2018-07-28 15:33:20 -07:00
Mario d85c849668 Merge branch 'patch-11' into 'dev'
Plural form strings export added

See merge request hubzilla/core!1245
2018-07-28 21:23:31 +02:00
Mario cbd8c07265 Merge branch 'patch-9' into 'dev'
Respect navbar translations

See merge request hubzilla/core!1243
2018-07-28 21:22:51 +02:00
Mario 3a6d3cb396 Merge branch 'patch-8' into 'dev'
Fix navbar missed translations

See merge request hubzilla/core!1242
2018-07-28 21:22:12 +02:00
Mario 6e52f552cf Merge branch 'patch-7' into 'dev'
Russian translation update

See merge request hubzilla/core!1241
2018-07-28 21:20:01 +02:00
Mario 973114caf6 Merge branch 'patch-6' into 'dev'
Fix duplicate transport displaying

See merge request hubzilla/core!1240
2018-07-28 21:19:40 +02:00
Max Kostikov e27e0ca198 Plural form strings export added 2018-07-28 17:36:48 +02:00
Mario Vavti 27329e39e4 Merge remote-tracking branch 'mike/master' into dev 2018-07-28 09:33:17 +02:00
zotlabs 38c2070aab Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-07-27 15:27:52 -07:00
zotlabs a0f28708ab don't sync system apps 2018-07-27 15:05:29 -07:00
zotlabs e25d205a7f app delete issue with base installed apps and app photo being reloaded uneccessarily 2018-07-27 14:36:06 -07:00
zotlabs e28dab17d6 app update and ownership issues 2018-07-27 13:59:27 -07:00
Max Kostikov 05b3237bae Update nav.php 2018-07-27 11:50:04 +02:00
Max Kostikov 4fd9d1ee5f Update Apps.php 2018-07-27 11:29:38 +02:00
Max Kostikov 0fe7004d38 Update Apps.php 2018-07-27 11:03:02 +02:00
Max Kostikov 06b0dbdfba Update hstrings.php 2018-07-26 12:21:33 +02:00
Max Kostikov 48fb3d3653 Update hmessages.po 2018-07-26 12:20:53 +02:00
Max Kostikov baa5fd9739 Update passchanged_eml.tpl 2018-07-26 12:19:59 +02:00
Max Kostikov e01c277c56 Update lostpass_eml.tpl 2018-07-26 12:18:54 +02:00
Mario Vavti ec3a066e4e fix sql error 2018-07-26 09:32:52 +02:00
kostikov b0c8e75c6e Fix duplicate transport displaying 2018-07-25 22:28:21 +02:00
Mario d39942902c Merge branch 'patch-4' into 'dev'
Update hmessages.po

See merge request hubzilla/core!1238
2018-07-23 19:57:43 +02:00
Mario 87fc4e6588 Merge branch 'patch-5' into 'dev'
Update hstrings.php

See merge request hubzilla/core!1239
2018-07-23 19:57:10 +02:00
Mario 84e57d040b Merge branch 'patch-2' into 'dev'
Escape internal quotes in translation on export

See merge request hubzilla/core!1237
2018-07-23 19:55:00 +02:00
kostikov a4f64c02d0 Update hstrings.php 2018-07-23 12:20:50 +02:00
kostikov 278eeb5ee9 Update hmessages.po 2018-07-23 12:19:46 +02:00
kostikov 3342fc2244 Update hstrings.php 2018-07-23 12:15:10 +02:00
kostikov 87857fe5d9 Update hmessages.po 2018-07-23 12:14:33 +02:00
kostikov 64efd07f6b Escape internal quotes in translation on export 2018-07-22 19:39:53 +02:00
Mario Vavti 6be66d6df9 update changelog 2018-07-21 22:01:59 +02:00
Mario a68934f498 Merge branch 'patch-2' into 'dev'
New russian templates

See merge request hubzilla/core!1233
2018-07-21 11:29:09 +02:00
Mario 95ef78ab23 Merge branch 'patch-1' into 'dev'
Add var to respect current hstrings.php format

See merge request hubzilla/core!1231
2018-07-21 11:27:49 +02:00
Mario 5be0743751 Merge branch 'dev' into 'dev'
Update russian translation for 3.6

See merge request hubzilla/core!1230
2018-07-21 11:26:43 +02:00
kostikov 8fc7f2aca1 Update update_fail_eml.tpl 2018-07-20 19:28:45 +02:00
kostikov 4db4ab9798 Create register_verify_member.tpl 2018-07-20 19:28:13 +02:00
kostikov b6c2c8117e Update register_verify_eml.tpl 2018-07-20 19:27:29 +02:00
kostikov 86a42aad16 Update register_open_eml.tpl 2018-07-20 19:26:54 +02:00
kostikov 8e2e09bb16 Update passchanged_eml.tpl 2018-07-20 19:26:24 +02:00
kostikov 3713aa210f Update lostpass_eml.tpl 2018-07-20 19:25:46 +02:00
kostikov a65c23546b Add new file 2018-07-20 19:21:58 +02:00
Mario Vavti f6de91bf0f prevent double file uploads when dropping files into jot 2018-07-20 16:44:43 +02:00
kostikov 062633d312 Add var to respect current hstrings.php format 2018-07-20 16:40:35 +02:00
Mario Vavti 4a54699c1f Merge branch 'dev' of https://framagit.org/hubzilla/core into dev 2018-07-20 10:42:45 +02:00
Mario Vavti c72f6e6ea8 fix jot drag and drop 2018-07-20 10:42:16 +02:00
kostikov 790a9155d4 Update hstrings.php 2018-07-20 10:25:03 +02:00
kostikov f141b845fd Update hmessages.po 2018-07-20 10:24:23 +02:00
Mario a274c87cb3 Merge branch 'dev' into 'dev'
Update php2po.php

See merge request hubzilla/core!1229
2018-07-20 09:21:35 +02:00
zotlabs a94c9d2709 checkjs fix ($page not bin-hex in all cases) 2018-07-19 17:19:19 -07:00
kostikov f9b18aa62f Update php2po.php 2018-07-20 00:22:04 +02:00
zotlabs 0866cea72c Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-07-19 13:45:30 -07:00
zotlabs 6adbb93f0a fix the filtered query string so it can potentially be re-used as is. 2018-07-19 13:42:57 -07:00
Mario Vavti fe0e00f8f8 Merge remote-tracking branch 'mike/master' into dev 2018-07-19 09:12:33 +02:00
zotlabs 13d19d42cb Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-07-18 19:14:21 -07:00
zotlabs ec852b0c8d typo 2018-07-18 17:51:10 -07:00
zotlabs a05c8ff66b query filter was a bit greedy 2018-07-18 17:48:23 -07:00
zotlabs 5ce50d0a2e mangled urls on redirects 2018-07-18 17:05:38 -07:00
Mario Vavti dfbdeafa39 Merge remote-tracking branch 'mike/master' into dev 2018-07-18 20:59:45 +02:00
Mario Vavti eb322e8312 set the correct album name when moving photos 2018-07-18 13:18:37 +02:00
Mario Vavti c2e819771f version 3.7 2018-07-18 11:56:26 +02:00
zotlabs 744d548380 util/typo - perform php -l and then include the file. We'll catch a bunch more stuff. 2018-07-17 05:01:22 -07:00
zotlabs 82a4bbd571 spellcheck 2018-07-15 23:32:09 -07:00
zotlabs c187461985 update_addon_repo: scan the addon dir after updating and remove dead symlinks (which represent deprecated/removed addons). 2018-07-15 21:34:06 -07:00
zotlabs cc91db55b7 Merge branch 'dev' of https://framagit.org/hubzilla/core into xdev_merge 2018-07-15 18:43:41 -07:00
zotlabs d71e70bedf functions to support module and widget registration by plugins. These have identical construction to core modules and widgets and are registered just like hooks during addon load. Also additional Apps functions addon_app_installed() and system_app_installed() which will eventually replace feature_installed() for features which are converted to apps. The convention being used is that the module associated with the app calls the appropriate *_app_installed() function and if not present emits descriptive text about the app and exits. This allows one to click on an 'available' app and learn about it. Once installed, the app module behaves normally and may offer functionality or what once were addon settings on the settings/featured page. Refer to zap-addons in the zap repository for examples of how this is being used to eliminate the 'additional features' and 'addon settings' pages. 2018-07-12 16:23:32 -07:00
3425 changed files with 349064 additions and 570607 deletions
+1 -1
View File
@@ -37,7 +37,7 @@ pageheader.html
doc/SiteTOS.md
# themes except for redbasic
view/theme/*
! view/theme/redbasic
!view/theme/redbasic
# site theme schemas
view/theme/redbasic/schema/default.php
# Doxygen API documentation, run 'doxygen util/Doxyfile' to generate it
+147
View File
@@ -0,0 +1,147 @@
# Select image from https://hub.docker.com/_/php/
#image: php:7.2
# Use a prepared Hubzilla image to optimise pipeline duration
image: registry.gitlab.com/dawnbreak/hubzilla/core:php7.2
stages:
- test
- deploy
# Select what we should cache
cache:
paths:
- vendor/
- .cache/
# global variables for all jobs, if no job specific variables
variables:
# Tell composer to use the project workspace .cache folder
COMPOSER_CACHE_DIR: "$CI_PROJECT_DIR/.cache/composer"
# Ignore a Composer warning
COMPOSER_ALLOW_SUPERUSER: 1
# Configure MySQL/MariaDB service (https://hub.docker.com/_/mysql/, https://hub.docker.com/_/mariadb/)
MYSQL_DATABASE: hello_world_test
MYSQL_ROOT_PASSWORD: mysql
# Configure PostgreSQL service (https://hub.docker.com/_/postgres/)
POSTGRES_DB: ci-db
POSTGRES_USER: ci-user
POSTGRES_PASSWORD: ci-pass
before_script:
# pecl and composer do not work with PHP production restrictions (from Hubzilla Docker image)
- if [ -f /usr/local/etc/php/conf.d/z_prod.ini ]; then mv /usr/local/etc/php/conf.d/z_prod.ini /usr/local/etc/php/conf.d/z_prod.ini.off; fi
# Install & enable Xdebug for code coverage reports
- pecl install xdebug
- docker-php-ext-enable xdebug
# Install composer
- curl -sS https://getcomposer.org/installer | php
# Install dev libraries from composer
- php ./composer.phar install --no-progress
# hidden job definition with template for MySQL/MariaDB
.job_template_mysql: &job_definition_mysql
stage: test
script:
- echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
# hidden job definition with template for PostgreSQL
.job_template_postgres: &job_definition_postgres
stage: test
services:
- postgres:latest
script:
- export PGPASSWORD=$POSTGRES_PASSWORD
- psql --version
- psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT VERSION();"
# Import hubzilla's DB schema
- psql -h "postgres" -U "$POSTGRES_USER" -v ON_ERROR_STOP=1 --quiet "$POSTGRES_DB" < ./install/schema_postgres.sql
# Show databases and relations/tables of hubzilla's database
#- psql -h "postgres" -U "$POSTGRES_USER" -l
#- psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "\dt;"
# Run the actual tests
- vendor/bin/phpunit --configuration tests/phpunit-pgsql.xml --testdox
# hidden job definition with artifacts config template
.artifacts_template:
artifacts: &artifacts_template
expire_in: 1 week
# Gitlab should show the results, but has problems parsing PHPUnit's junit file.
reports:
junit: tests/results/junit.xml
# Archive test results (coverage, testdox, junit)
name: "$CI_COMMIT_REF_SLUG-$CI_JOB_NAME"
paths:
- tests/results/
# PHP7.2 with MySQL 5.7
php7.2_mysql5.7:
<<: *job_definition_mysql
services:
- mysql:5.7
# PHP7.2 with MySQL 8 (latest)
php7.2_mysql8:
<<: *job_definition_mysql
services:
- name: mysql:8
command: ["--default-authentication-plugin=mysql_native_password"]
# PHP7.2 with MariaDB 10.2
php7.2_mariadb10.2:
<<: *job_definition_mysql
services:
- name: mariadb:10.2
alias: mysql
# PHP7.3 with MariaDB 10.3 (latest)
php7.3_mariadb10.3:
<<: *job_definition_mysql
image: registry.gitlab.com/dawnbreak/hubzilla/core:php7.3
services:
- name: mariadb:10.3
alias: mysql
# PHP7.2 with PostgreSQL latest (11)
php7.2_postgres11:
<<: *job_definition_postgres
artifacts: *artifacts_template
# PHP7.3 with PostgreSQL latest (11)
php7.3_postgres11:
<<: *job_definition_postgres
image: registry.gitlab.com/dawnbreak/hubzilla/core:php7.3
artifacts: *artifacts_template
# Generate Doxygen API Documentation and deploy it as GitLab pages
pages:
stage: deploy
cache: {}
image: php:7-cli-alpine
before_script:
- apk update
- apk add doxygen ttf-freefont graphviz
script:
- doxygen util/Doxyfile
- mv doc/html/ public/
- echo "API documentation should be accessible at https://hubzilla.frama.io/core/ soon"
artifacts:
paths:
- public
only:
# Only generate it on main repo's master branch
- master@hubzilla/core
+58 -156
View File
@@ -1,23 +1,10 @@
# Hubzilla at Home next to your Router
Run hubzilla-setup.sh for an unattended installation of hubzilla.
The script is known to work without adjustments with
+ Hardware
- Mini-PC with Debian-9.2-amd64, or
- Rapberry 3 with Raspbian, Debian-9.3
+ DynDNS
- selfHOST.de
- freedns.afraid.org
# How to use
## Disclaimers
- This script does work with Debian 9 only.
- This script does work with Debian 10 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
## Preconditions
Hardware
@@ -28,35 +15,27 @@ Hardware
Software
+ Fresh installation of Debian 9 (Stretch)
+ Router with open ports 80 and 443 for your Hub
+ Fresh installation of Debian 10 (Stretch)
+ Router with open ports 80 and 443 for your web server
## The basic steps (quick overview)
## How to run the script
+ Register your own domain (for example at selfHOST) or a free subdomain (for example at freeDNS)
+ 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
- git clone https://framagit.org/hubzilla/core.git html
- 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
- Prepare your external disk for backups
- 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
@@ -64,60 +43,74 @@ 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
## Optional - Switch verification of email on/off
## Preparations Hardware
Do this just befor you register the user.
### Mini-PC
In Admin settings of hubzilla or via terminal
### Recommended: USB Drive for Backups
cd /var/www/html
The installation will create a daily backup written to an external drive.
Check the current setting
The USB drive must be compatible with the filesystems
util/config system verify_email
- ext4 (if you do not want to encrypt the USB)
- LUKS + ext4 (if you want to encrypt the USB)
Switch the verification on/off (1/0)
The backup includes
util/config system verify_email 0
- Hubzilla DB
- Hubzilla installation /var/www/html
- Certificates for letsencrypt
## What the script will do for you...
## Preparations Software
+ install everything required by Hubzilla, basically a web server (Apache), PHP, a database (MySQL), certbot,...
+ create a database
+ run certbot to have everything for a secure connection (httpS)
+ create a script for daily maintenance
- backup to external disk (certificates, database, /var/www/)
- renew certfificate (letsencrypt)
- update of Hubzilla
- update of Debian
- restart
+ create cron jobs for
- DynDNS (selfHOST.de or freedns.afraid.org) every 5 minutes
- Master.php for Zap/Hubzilla every 10 minutes
- daily maintenance script every day at 05:30
### Install Debian Linux on the Mini-PC
The script is known to work without adjustments with
Download the stable Debian at https://www.debian.org/
(Debian 8 is no longer supported.)
+ Hardware
- Mini-PC with Debian 10 (stretch), or
- Rapberry 3 with Raspbian, Debian 10
+ DynDNS
- selfHOST.de
- freedns.afraid.org
Create bootable USB drive with Debian on it.You could use
The script can install both [Hubzilla](https://zotlabs.org/page/hubzilla/hubzilla-project) and [Zap](https://zotlabs.com/zap/). Make sure to use the correct GIT repositories.
- 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
+ Hubzilla
- core: git clone https://framagit.org/hubzilla/core.git html (in this readme)
- addons: util/add_addon_repo https://framagit.org/hubzilla/addons.git hzaddons (in hubzilla-setup.sh)
+ Zap
- core: git clone https://framagit.org/zot/zap.git html (in this readme)
- addons: util/add_addon_repo https://framagit.org/zot/zap-addons.git zaddons (in hubzilla-setup.sh)
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
# Step-by-Step - some Details
Open the ports 80 and 443 on your router for your Debian
## Preparations
## Configure your Router
Your web has to be visible in the internet.
Open the ports 80 and 443 on your router for your Debian. Make sure your web server is marked as "exposed host".
## Preparations Dynamic IP Address
Follow the instructions in .homeinstall/hubzilla-config.txt.
In short...
Your Hubzilla must be reachable by a domain that you can type in your browser
cooldomain.org
@@ -132,99 +125,15 @@ There are two ways to get a domain...
...for example buy at selfHOST.de
The cost are around 10,- € once and 1,50 € per month (2017).
The cost is 1,50 € per month (2019).
### Method 2: Register a free subdomain
...for example register at freedns.afraid.org
Follow the instructions in .homeinstall/hubzilla-config.txt.
## Note on Rasperry
## Install Hubzilla on your Debian
Login to your debian
(Provided your username is "you" and the name of the mini pc is "debian". You
could take the IP address instead of "debian")
ssh -X you@debian
Change to root user
su -l
Install git
apt-get install git
Make the directory for apache and change diretory to it
mkdir /var/www
cd /var/www/
Clone hubzilla from git ("git pull" will update it later)
git clone https://framagit.org/hubzilla/core html
Change to the install script
cd html/.homeinstall/
Copy the template file
cp hubzilla-config.txt.template hubzilla-config.txt
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
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 should be
successfull. Go on...
Expected: A page for the Hubzilla server configuration shows up.
Leave db server name "127.0.0.1" and port "0" untouched.
Enter
- DB user name = hubzilla
- DB pass word = This is the password you entered in "hubzilla-config.txt"
- DB name = hubzilla
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
The script was tested with an Raspberry 3 under Raspian, Debian 10.
It is recommended to run the Raspi without graphical frontend (X-Server). Use...
@@ -234,12 +143,5 @@ 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
+8 -3
View File
@@ -2,8 +2,8 @@
### MANDATORY - database password #############
#
# Please give your database password
# It is better to not use blanks inside the password.
# Example: db_pass=pass_word_with_no_blanks_in_it
# Example: db_pass="this password has blanks in it"
db_pass=
###############################################
@@ -18,7 +18,12 @@ db_pass=
# Example: my.cooldomain.org
# Example: cooldomain.org
#
# Email is optional
# You might use "localhost" for a LOCAL TEST installation.
# This is usefull if you want to debug the server inside a VM.
#
# Example: localhost
#
# Email is optional if you use "localhost".
#
#
le_domain=
@@ -28,7 +33,7 @@ le_email=
### OPTIONAL - selfHOST - dynamic IP address ##
#
# 1. Register a domain at selfhost.de
# - choose offer "DOMAIN dynamisch" 1,50€/mon at 08.01.2016
# - choose offer "DOMAIN dynamisch" 1,50€/mon at 04/2019
# 2. Get your configuration for dynamic IP update
# - Log in at selfhost.de
# - go to "DynDNS Accounte"
+137 -311
View File
@@ -3,7 +3,10 @@
# How to use
# ----------
#
# This file automates the installation of hubzilla under Debian Linux
# This file automates the installation of
# - hubzilla: https://zotlabs.org/page/hubzilla/hubzilla-project and
# - zap: https://zotlabs.com/zap/
# under Debian Linux
#
# 1) Copy the file "hubzilla-config.txt.template" to "hubzilla-config.txt"
# Follow the instuctions there
@@ -23,18 +26,15 @@
# - install
# * apache webserer,
# * php,
# * mysql - the database for hubzilla,
# * phpmyadmin,
# * git to download and update hubzilla itself
# - download hubzilla core and addons
# * mariadb - the database for hubzilla,
# * adminer,
# * git to download and update addons
# - configure cron
# * "poller.php" for regular background prozesses of hubzilla
# * to_do "apt-get update" and "apt-get dist-upgrade" to keep linux
# up-to-date
# * to_do backup hubzillas database and files (rsnapshot)
# - configure dynamic ip with cron
# - to_do letsencrypt
# - to_do redirection to https
# * "Master.php" for regular background prozesses of hubzilla
# * "apt-get update" and "apt-get dist-upgrade" and "apt-get autoremove" to keep linux up-to-date
# * run command to keep the IP up-to-date > DynDNS provided by selfHOST.de or freedns.afraid.org
# * backup hubzillas database and files (rsync)
# - run letsencrypt to create, register and use a certifacte for https
#
#
# Discussion
@@ -44,26 +44,6 @@
# - The script runs into installation errors for phpmyadmin if it uses
# different passwords. For the sake of simplicity one singel password.
#
# Security - suhosin for PHP
# - The script does not install suhosin.
# - Is the security package suhosin usefull or not usefull?
#
# Hubzilla - email verification
# - The script switches off email verification off in all htconfig.tpl.
# Example: /var/www/html/view/en/htconfig.tpl
# - Is this a silly idea or not?
#
#
# Remove Hubzilla (for a fresh start using the script)
# ----------------------------------------------------
#
# You could use /var/www/hubzilla-remove.sh
# that is created by hubzilla-setup.sh.
#
# The script will remove (almost everything) what was installed by the script.
# After the removal you could run the script again to have a fresh install
# of all applications including hubzilla and its database.
#
# How to restore from backup
# --------------------------
#
@@ -75,19 +55,11 @@
# - creates a daily cron that runs the hubzilla-daily.sh
#
# hubzilla-daily.sh makes a (daily) backup of all relevant files
# - /var/lib/mysql/ > hubzilla database
# - /var/www/html/ > hubzilla from github
# - /var/www/letsencrypt/ > certificates
# - /var/lib/mysql/ > database
# - /var/www/ > hubzilla/zap from github
# - /etc/letsencrypt/ > certificates
#
# hubzilla-daily.sh writes the backup
# - either to an external disk compatible to LUKS+ext4 (see hubzilla-config.txt)
# - or to /var/cache/rsnapshot in case the external disk is not plugged in
#
# Restore backup
# - - - - - - -
#
# This was not tested yet.
# Bacically you can copy the files from the backup to the server.
# hubzilla-daily.sh writes the backup to an external disk compatible to LUKS+ext4 (see hubzilla-config.txt)
#
# Credits
# -------
@@ -95,8 +67,6 @@
# The script is based on Thomas Willinghams script "debian-setup.sh"
# which he used to install the red#matrix.
#
# The script uses another script from https://github.com/lukas2511/letsencrypt.sh
#
# The documentation for bash is here
# https://www.gnu.org/software/bash/manual/bash.html
#
@@ -116,9 +86,9 @@ function check_sanity {
then
die "Debian is supported only"
fi
if ! grep -q 'Linux 9' /etc/issue
if ! grep -q 'Linux 10' /etc/issue
then
die "Linux 9 (stretch) is supported only"x
die "Linux 10 (buster) is supported only"x
fi
}
@@ -136,11 +106,11 @@ function check_config {
# backup is important and should be checked
if [ -n "$backup_device_name" ]
then
if [ ! -d "$backup_mount_point" ]
then
mkdir "$backup_mount_point"
fi
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"
@@ -229,21 +199,17 @@ function print_warn {
}
function stop_hubzilla {
if [ -d /etc/apache2 ]
then
print_info "stopping apache webserver..."
service apache2 stop
fi
if [ -f /etc/init.d/mysql ]
then
print_info "stopping mysql db..."
/etc/init.d/mysql stop
fi
print_info "stopping apache webserver..."
systemctl stop apache2
print_info "stopping mysql db..."
systemctl stop mariadb
}
function install_apache {
print_info "installing apache..."
nocheck_install "apache2 apache2-utils"
a2enmod rewrite
systemctl restart apache2
}
function install_imagemagick {
@@ -256,6 +222,11 @@ function install_curl {
nocheck_install "curl"
}
function install_wget {
print_info "installing wget..."
nocheck_install "wget"
}
function install_sendmail {
print_info "installing sendmail..."
nocheck_install "sendmail sendmail-bin"
@@ -264,65 +235,47 @@ function install_sendmail {
function install_php {
# openssl and mbstring are included in libapache2-mod-php
print_info "installing php..."
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
nocheck_install "libapache2-mod-php php php-pear php-curl php-gd php-mysqli php-mbstring php-xml php-zip"
sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php/7.3/apache2/php.ini
sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php/7.3/apache2/php.ini
}
function install_mysql {
# http://www.microhowto.info/howto/perform_an_unattended_installation_of_a_debian_package.html
#
# To determine the required package name, key and type you can perform
# a trial installation then search the configuration database.
#
# debconf-get-selections | grep mysql-server
#
# The command debconf-get-selections is provided by the package
# debconf-utils, which you may need to install.
#
# apt-get install debconf-utils
#
# If you want to supply an answer to a configuration question but do not
# want to be prompted for it then this can be arranged by preseeding the
# DebConf database with the required information.
#
# 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 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"
if type mysql ; then
echo "Yes, mysql is installed"
else
echo "mariadb-server"
nocheck_install "mariadb-server"
systemctl status mariadb
systemctl start mariadb
mysql --user=root <<_EOF_
UPDATE mysql.user SET Password=PASSWORD('${db_root_password}') WHERE User='root';
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
_EOF_
fi
}
function install_phpmyadmin {
print_info "installing phpmyadmin..."
if [ -z "$phpmyadminpass" ]
function install_adminer {
print_info "installing adminer..."
nocheck_install "adminer"
if [ ! -f /etc/adminer/adminer.conf ]
then
die "phpmyadminpass not set in $configfile"
echo "Alias /adminer /usr/share/adminer/adminer" > /etc/adminer/adminer.conf
ln -s /etc/adminer/adminer.conf /etc/apache2/conf-available/adminer.conf
else
print_info "file /etc/adminer/adminer.conf exists already"
fi
echo phpmyadmin phpmyadmin/setup-password password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/mysql/app-pass password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/app-password-confirm password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/mysql/admin-pass password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/password-confirm password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2 | debconf-set-selections
nocheck_install "phpmyadmin"
# It seems to be not neccessary to check rewrite.load because it comes
# with the installation. To be sure you could check this manually by:
#
# nano /etc/apache2/mods-available/rewrite.load
#
# You should find the content:
#
# LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
a2enmod rewrite
if [ ! -f /etc/apache2/apache2.conf ]
then
die "could not find file /etc/apache2/apache2.conf"
@@ -330,12 +283,10 @@ function install_phpmyadmin {
sed -i \
"s/AllowOverride None/AllowOverride all/" \
/etc/apache2/apache2.conf
if [ -z "`grep 'Include /etc/phpmyadmin/apache.conf' /etc/apache2/apache2.conf`" ]
then
echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf
fi
service apache2 restart
/etc/init.d/mysql start
a2enconf adminer
systemctl restart mariadb
systemctl reload apache2
}
function create_hubzilla_db {
@@ -352,6 +303,7 @@ function create_hubzilla_db {
then
die "hubzilla_db_pass not set in $configfile"
fi
systemctl restart mariadb
Q1="CREATE DATABASE IF NOT EXISTS $hubzilla_db_name;"
Q2="GRANT USAGE ON *.* TO $hubzilla_db_user@localhost IDENTIFIED BY '$hubzilla_db_pass';"
Q3="GRANT ALL PRIVILEGES ON $hubzilla_db_name.* to $hubzilla_db_user@localhost identified by '$hubzilla_db_pass';"
@@ -449,11 +401,11 @@ function configure_cron_selfhost {
print_info "configure cron for selfhost..."
if [ -z "$selfhost_user" ]
then
print_info "freedns is not configured because freedns_key is empty in $configfile"
print_info "selfhost is not configured because selfhost_key is empty in $configfile"
else
# Use cron for dynamich ip update
# - at reboot
# - every 30 minutes
# - every 5 minutes
if [ -z "`grep 'selfhost-updater.sh' /etc/crontab`" ]
then
echo "@reboot root bash /etc/selfhost/selfhost-updater.sh update > /dev/null 2>&1" >> /etc/crontab
@@ -471,89 +423,13 @@ function install_letsencrypt {
then
die "Failed to install let's encrypt: 'le_domain' is empty in $configfile"
fi
# configure apache
apache_le_conf=/etc/apache2/sites-available/le-default.conf
if [ -f $apache_le_conf ]
if [ -z "$le_email" ]
then
print_info "$apache_le_conf exist already"
else
cat > $apache_le_conf <<END
# letsencrypt default Apache configuration
Alias /.well-known/acme-challenge /var/www/letsencrypt
<Directory /var/www/letsencrypt>
Options FollowSymLinks
Allow from all
</Directory>
END
a2ensite le-default.conf
service apache2 restart
die "Failed to install let's encrypt: 'le_email' is empty in $configfile"
fi
# download the shell script
if [ -d $le_dir ]
then
print_info "letsenrypt exists already (nothing downloaded > no certificate created and registered)"
return 0
fi
git clone https://github.com/lukas2511/dehydrated $le_dir
cd $le_dir
# create config file for letsencrypt.sh
echo "WELLKNOWN=$le_dir" > $le_dir/config.sh
if [ -n "$le_email" ]
then
echo "CONTACT_EMAIL=$le_email" >> $le_dir/config.sh
fi
# create domain file for letsencrypt.sh
# WATCH THIS:
# - It did not work wit "sub.domain.org www.sub.domain.org".
# - So just use "sub.domain.org" only!
echo "$le_domain" > $le_dir/domains.txt
# test apache config for letsencrpyt
url_http=http://$le_domain/.well-known/acme-challenge/domains.txt
wget_output=$(wget -nv --spider --max-redirect 0 $url_http)
if [ $? -ne 0 ]
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
}
function configure_apache_for_https {
print_info "configuring apache to use httpS ..."
# letsencrypt.sh
#
# "${BASEDIR}/certs/${domain}/privkey.pem"
# "${BASEDIR}/certs/${domain}/cert.pem"
# "${BASEDIR}/certs/${domain}/fullchain.pem"
#
SSLCertificateFile=${le_dir}/certs/${le_domain}/cert.pem
SSLCertificateKeyFile=${le_dir}/certs/${le_domain}/privkey.pem
SSLCertificateChainFile=${le_dir}/certs/${le_domain}/fullchain.pem
if [ ! -f $SSLCertificateFile ]
then
print_warn "Failed to configure apache for httpS: Missing certificate file $SSLCertificateFile"
return 0
fi
# make sure that the ssl mode is enabled
print_info "...configuring apache to use httpS - a2enmod ssl ..."
a2enmod ssl
# modify apach' ssl conf file
if grep -i "ServerName" $sslconf
then
print_info "seems that apache was already configered to use httpS with $sslconf"
else
sed -i "s/ServerAdmin.*$/ServerAdmin webmaster@localhost\\n ServerName ${le_domain}/" $sslconf
fi
sed -i s#/etc/ssl/certs/ssl-cert-snakeoil.pem#$SSLCertificateFile# $sslconf
sed -i s#/etc/ssl/private/ssl-cert-snakeoil.key#$SSLCertificateKeyFile# $sslconf
sed -i s#/etc/apache2/ssl.crt/server-ca.crt#$SSLCertificateChainFile# $sslconf
sed -i s/#SSLCertificateChainFile/SSLCertificateChainFile/ $sslconf
# apply changes
a2ensite default-ssl.conf
nocheck_install "certbot python-certbot-apache"
print_info "run certbot ..."
certbot --apache -w /var/www/html -d $le_domain -m $le_email --agree-tos --non-interactive --redirect --hsts --uir
service apache2 restart
}
@@ -570,9 +446,19 @@ function check_https {
}
function install_hubzilla {
print_info "installing hubzilla addons..."
print_info "installing addons..."
cd /var/www/html/
util/add_addon_repo https://framagit.org/hubzilla/addons.git hzaddons
if git remote -v | grep -i "origin.*hubzilla.*core"
then
print_info "hubzilla"
util/add_addon_repo https://framagit.org/hubzilla/addons hzaddons
elif git remote -v | grep -i "origin.*zap.*core"
then
print_info "zap"
util/add_addon_repo https://framagit.org/zot/zap-addons.git zaddons
else
die "neither zap nor hubzilla repository > did not install addons or zap/hubzilla"
fi
mkdir -p "store/[data]/smarty3"
chmod -R 777 store
touch .htconfig.php
@@ -582,58 +468,12 @@ function install_hubzilla {
chown root:www-data /var/www/html/
chown root:www-data /var/www/html/.htaccess
chmod 0644 /var/www/html/.htaccess
# try to switch off email registration
sed -i "s/verify_email.*1/verify_email'] = 0/" /var/www/html/view/*/ht*
if [ -n "`grep -r 'verify_email.*1' /var/www/html/view/`" ]
then
print_warn "Hubzillas registration prozess might have email verification switched on."
fi
print_info "installed hubzilla"
print_info "installed addons"
}
function rewrite_to_https {
print_info "configuring apache to redirect http to httpS ..."
htaccessfile=/var/www/html/.htaccess
if grep -i "https" $htaccessfile
then
print_info "...configuring apache to redirect http to httpS was already done in $htaccessfile"
else
sed -i "s#QSA]#QSA]\\n RewriteCond %{SERVER_PORT} !^443$\\n RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]#" $htaccessfile
fi
service apache2 restart
}
# This will allways overwrite both config files
# - internal disk
# - external disk (LUKS + ext4)
# of rsnapshot for hubzilla
function install_rsnapshot {
print_info "installing rsnapshot..."
nocheck_install "rsnapshot"
# internal disk
cp -f /etc/rsnapshot.conf $snapshotconfig
sed -i "s/^cmd_cp/#cmd_cp/" $snapshotconfig
sed -i "s/^backup/#backup/" $snapshotconfig
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" ]
then
cp -f /etc/rsnapshot.conf $snapshotconfig_external_device
sed -i "s#snapshot_root.*#snapshot_root $backup_mount_point#" $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`" ]
then
echo "backup /var/lib/mysql/ localhost/" >> $snapshotconfig_external_device
echo "backup /var/www/html/ localhost/" >> $snapshotconfig_external_device
echo "backup /var/www/letsencrypt/ localhost/" >> $snapshotconfig_external_device
fi
else
print_info "No backup configuration (rsnapshot) for external device configured. Reason: backup_device_name and/or backup_device_pass not given in $configfile"
fi
function install_rsync {
print_info "installing rsync..."
nocheck_install "rsync"
}
function install_cryptosetup {
@@ -644,28 +484,28 @@ function install_cryptosetup {
function configure_cron_daily {
print_info "configuring cron..."
# every 10 min for poller.php
if [ -z "`grep 'poller.php' /etc/crontab`" ]
if [ -z "`grep 'Master.php' /etc/crontab`" ]
then
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
# - backup hubzilla
# - renew the certificate of letsencrypt
# - backup db, files (/var/www/html), certificates if letsencrypt
# - update hubzilla core and addon
# - update and upgrade linux
# - reboot
# - reboot is done by "shutdown -h now" because "reboot" hangs sometimes depending on the system
echo "#!/bin/sh" > /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily
echo "echo \" \"" >> /var/www/$hubzilladaily
echo "echo \"+++ \$(date) +++\"" >> /var/www/$hubzilladaily
echo "echo \" \"" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - renew certificate...\"" >> /var/www/$hubzilladaily
echo "bash $le_dir/dehydrated --cron --config $le_dir/config.sh" >> /var/www/$hubzilladaily
echo "certbot renew --noninteractive" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily
echo "# stop hubzilla" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - stoping apache and mysql...\"" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - stopping apache and mysql...\"" >> /var/www/$hubzilladaily
echo "service apache2 stop" >> /var/www/$hubzilladaily
echo "/etc/init.d/mysql stop # to avoid inconsistancies" >> /var/www/$hubzilladaily
echo "/etc/init.d/mysql stop # to avoid inconsistencies" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily
echo "# backup" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - try to mount external device for backup...\"" >> /var/www/$hubzilladaily
@@ -696,11 +536,13 @@ 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 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
echo " du -h $backup_mount_point | grep mysql/hubzilla" >> /var/www/$hubzilladaily
echo " rsync -a --delete /var/lib/mysql/ /media/hubzilla_backup/mysql" >> /var/www/$hubzilladaily
echo " rsync -a --delete /var/www/ /media/hubzilla_backup/www" >> /var/www/$hubzilladaily
echo " rsync -a --delete /etc/letsencrypt/ /media/hubzilla_backup/letsencrypt" >> /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
echo " du -h $backup_mount_point | grep mysql/hubzilla" >> /var/www/$hubzilladaily
echo " echo \"unmounting backup device...\"" >> /var/www/$hubzilladaily
echo " umount $backup_mount_point" >> /var/www/$hubzilladaily
echo " else" >> /var/www/$hubzilladaily
@@ -722,18 +564,16 @@ echo "echo \"\$(date) - db size...\"" >> /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 "echo \"\$(date) - updating core and addons...\"" >> /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 && 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 "echo \"\$(date) - Backup and update finished. Rebooting...\"" >> /var/www/$hubzilladaily
echo "#" >> /var/www/$hubzilladaily
echo "reboot" >> /var/www/$hubzilladaily
echo "shutdown -r now" >> /var/www/$hubzilladaily
if [ -z "`grep 'hubzilla-daily.sh' /etc/crontab`" ]
then
@@ -745,38 +585,6 @@ echo "reboot" >> /var/www/$hubzilladaily
print_info "configured cron for updates/upgrades"
}
function write_uninstall_script {
print_info "writing uninstall script..."
cat > /var/www/hubzilla-remove.sh <<END
#!/bin/sh
#
# This script removes Hubzilla.
# You might do this for a fresh start using the script.
# The script will remove (almost everything) what was installed by the script,
# all applications including hubzilla and its database.
#
# Backup the certificates of letsencrypt (you never know)
cp -a /var/www/letsencrypt/ ~/backup_le_certificats
#
# Removal
apt-get remove apache2 apache2-utils libapache2-mod-php5 php5 php-pear php5-xcache php5-curl php5-mcrypt php5-gd php5-mysql mysql-server mysql-client phpmyadmin
apt-get purge apache2 apache2-utils libapache2-mod-php5 php5 php-pear php5-xcache php5-curl php5-mcrypt php5-gd php5-mysql mysql-server mysql-client phpmyadmin
apt-get autoremove
apt-get clean
rm /etc/rsnapshot_hubzilla.conf
rm /etc/rsnapshot_hubzilla_external_device.conf
rm -R /etc/apache2/
rm -R /var/lib/mysql/
rm -R /var/www
rm -R /etc/selfhost/
# uncomment the next line if you want to remove the backups
# rm -R /var/cache/rsnapshot
nano /etc/crontab # remove entries there manually
END
chmod -x /var/www/hubzilla-remove.sh
}
########################################################################
# START OF PROGRAM
########################################################################
@@ -791,12 +599,7 @@ source $configfile
selfhostdir=/etc/selfhost
selfhostscript=selfhost-updater.sh
hubzilladaily=hubzilla-daily.sh
plugins_update=.homeinstall/plugins_update.sh
snapshotconfig=/etc/rsnapshot_hubzilla.conf
snapshotconfig_external_device=/etc/rsnapshot_hubzilla_external_device.conf
backup_mount_point=/media/hubzilla_backup
le_dir=/var/www/letsencrypt
sslconf=/etc/apache2/sites-available/default-ssl.conf
#set -x # activate debugging from here
@@ -804,27 +607,50 @@ check_config
stop_hubzilla
update_upgrade
install_curl
install_wget
install_sendmail
install_apache
install_imagemagick
install_php
install_mysql
install_phpmyadmin
install_adminer
create_hubzilla_db
run_freedns
install_run_selfhost
ping_domain
configure_cron_freedns
configure_cron_selfhost
install_letsencrypt
configure_apache_for_https
check_https
if [ "$le_domain" != "localhost" ]
then
install_letsencrypt
configure_apache_for_https
check_https
else
print_info "is localhost - skipped installation of letsencrypt and configuration of apache for https"
fi
install_hubzilla
rewrite_to_https
install_rsnapshot
if [ "$le_domain" != "localhost" ]
then
rewrite_to_https
install_rsnapshot
else
print_info "is localhost - skipped rewrite to https and installation of rsnapshot"
fi
configure_cron_daily
install_cryptosetup
write_uninstall_script
if [ "$le_domain" != "localhost" ]
then
install_cryptosetup
write_uninstall_script
else
print_info "is localhost - skipped installation of cryptosetup"
fi
#set +x # stop debugging from here
+605 -1
View File
@@ -1,4 +1,608 @@
Hubzilla 3.6 (????-??-??)
Hubzilla 4.6 (2019-12-04)
- Improve opengraph support for channels
- Add opengraph support for articles
- Update abook_connected for RSS feeds only if handle_feed() returned success
- Do not embed PDF files by default but allow to enabled this feature in security options
- Check if file exists before we include it in the router
- Update jquery to version 3.4.1
- Update composer libraries
- Remove old and unused javascript libraries
- Improved BBcode to Markdown conversion
- Introduce inline SVG support via BBcode
- Sanitize title on Atom/RSS feed import
- Improved HTTP headers cache support for photos
- Add date headers to signed headers
- Add check if item['tag'] is an array
- Add hook comments_are_now_closed for addons to override date based comment closure
- Change mysql schema for item.llink and item.plink for new installs from char(191) to text
- Improved photo cache expiration
- Improved plural function processing on translation strings creation from .po file with util/po2php utlility
- Improved support for CDN/Infrastructure caching (especially profile images)
- New japanese translation
- Add connect button for non-zot networks not connected in current location
- Allow to send forum channels wall2wall or sent by mentions post to external sites via addons
- Allow addons to process forum posts published through mentions
- Improved internal routing for ActivityPub messages
- Improved admin documentation
- Add ITEM_TYPE_CUSTOM and hooks to permit addons to create and distribute custom item types
- Support "comment policy" in Zot6 communications
- Add selected text as quote on reply if comment button is used
- Add more nofollow tags to links to discourage backlink farmers
- Improved conversion of emoji reactions from zot to zot6
- Add CardDAV/CalDAV autodiscovery
- Label source project of zotfeed since it is not completely compatible across projects
- Update homeinstall script
Bugfixes
- Fix once cached embedded content is used and stored forever
- Fix wildcard tag issue
- Fix duplicate attachment in jot fileupload
- Fix regression with audio file upload
- Fix can not edit menu name or title (#1402)
- Fix pagination encoding issue for some server setups
- Fix Zap->Hubzilla event title compatibility
- Fix event timezones for Zot6
- Fix missing summary in mod article_edit
- Fix PHP warning failed to write session data using user defined save handler
- Fix possible thumbnails distortion on rebuild with util/thumbrepair utility
- Fix issues with image import to zot6
- Fix attachment permissions on clonned channels sync
- Fix entries without sitekey returned from DB in queue_deliver() and Lib/Queue
Addons
- Twitter: send tweet even if attached image uploading was unsuccessful
- Livejournal: add link to original post option
- Flashcards: update to version 2.08
- Pubcrawl: compatibility changes to support pixelfed
- Cart: update paypal button to API v2
- Photocache: rework for speed and lower memory consumption
- Photocache: etag support for cached photos
- Photocache: purge cache on addon uninstall
- Openstreetmap: fix regression if no default values set
- Livejournal: allow send posts from non channel owner
- Pubcrawl: fix event timezones
- Pubcrawl: better ActivityPub channel URL detection
- Pubcrawl: fix comments delivery for other channels on the same hub
- New addon "workflow" with initial basic "issue tracker" capability
Hubzilla 4.4.1 (2019-08-16)
- Fix wrong profile photo displayed when previewing and editing profiles
- Fix regression from 4.4 which prevented encrypted signatures from being used for encrypted messages
- Fix typo in queueworker addon which broke filtering of duplicate work
Hubzilla 4.4 (2019-08-13)
- Change primary directory from zotadel.net to hub.netzgemeinde.eu (requested by zotadel admin)
- Add Russian context help files
- Replace plink URL with share tag if possible
- Catch and exclude trailing punctuation while URL embedding
- Do not limit channel if service class property value is set to zero
- Streamline keyId and creator/actor
- Add daemon_master_summon hook
- Serve static files directly if not caught by web server
- Update cacert.pem
- Calendar: allow different date/time format inputs
- Calendar: hide timezone select for allday events
⁻ Add opengraph meta info to channel page
- Begin directory migration to zot6
- Support zot and zot6 in social graph operations
- Lowlevel support for zot6 direct messages
- Consolidate HTTP signatures
- Allow api login by address or url
- Provide auto redirect from zot6 /item permalinks
- Export all items except photos in channel_export_items_date()
- Calendar: clicking a day or week number will now open the day or week view
- Remove cached photo location directory on delete if empty
- Include zot6 hubs in the Grid scope
- Fix os_path replace for thumbnails
- Avoid to process original images using storeThumbnail()
Bugfixes
- Fix URLs on imported item taxonomy
- Fix admin not allowed to delete any item
- Fix webfiunger issue with URLs containing an @
- Fix missing object in emoji reactions
- Fix appschema to include diaspora:guid
- Fix zotfinger in update_directory_entry()
- Fix incorrect media type on links for photo objects
- Fix mid not dbesc'd in item_store()
- Fix calendar encoding issues
Addons
- twitter: various rendering improvements
- cavatar: fix wrong image mimetype
- gravatar: fix wrong image mimetype
- Add license file
- pubcrawl: make repeats render like wall to wall posts
- pubcrawl: fix pubcrawl_import_author() sometimes returning a non activitypub xchan
- pubcrawl: use Lib/Activity for taxonomy en/decoding
- pubcrawl: fix wrong uuid in like activity
- pubcrawl: fix issue with encoding hashtags
- openstreetmap: use https URLs by default
- queueworker: refactor and efficiency improvements
- pubcrawl: use unique IDs for follow and accept activities
- pubcrawl: implement thread completion
- pubcrawl: implement delete activity
- photocache: reduce the size of the photo cache subdirectories tree
- photocache: use html_entity_decode() for cached photo URL
- diaspora: fix possible issue with diaspora relay not initializing
Hubzilla 4.2.1 (2019-06-17)
- Deprecate mod events
- Revisit mod cal
- Fix issues with deletion of linked items and resources
- Fix zot6 delete issue
- Fix attach sync issue
- Remove sizeRangeSuffixes in justified gallery wrapper
- Fix storageconv issue with postgres
- Fix embedphotos image size
- pubcrawl: use URI instead of object for actor url
- diaspora: adjust loglevel
- gallery: remove workaround for margin issue which has been fixed upstream
- cart: warn about unsaved changes
Hubzilla 4.2 (2019-06-04)
- Introduce Calendar app which deprecates Events and CalDAV apps and streamlines the featuresets
- Update mod cal to reflect changes in the calendar app
- Improve timezone detection for CalDAV calendars
- Add mention support to event description in channel calendar
- Update jgrowl library
- Do not try to oembed URLs without embed tags
- Optimise pdf oembed processing
- Add form security token to mod register
- Replace URLs for mod gallery, mod photos and mod photo on cloned channel post sync
- Update justified gallery library
- Update bootstrap libraries
- Use "cache" flag for bbcode() on content destined for zot6
- Improve DB indexing
- Drop deprecated columns from channel the table
- Replace own image URL in clonned channel posts
- Improve DB update handling
- Improve item deletion when a contact was removed
- Zot6 compatibility for emoji reactions
- Add threaded comments support (disabled by default)
- Improve xmlify()/unxmlify() performance
- Update blueimp/jquery-file-uplad library
- Update sabre/vobject library
- Various doco updates
- Implement remove profile photo button (reset to default photo)
- Implement remove cover photo button
- Update the homeinstall script
- Add command line tool for photo thumbnails storage conversion
- Implement option to store photo thumbnails in filesystem instead of DB
Bugfixes
- Fix category widget when using articles
- Fix live update not triggering in mod search
- Fix encoded URLs in code blocks
- Fix wiki headers not escaped
- Fix possible xchan protocol confusion in new_contact()
- Fix xchan_url not displayed if xchan_addr not available
- Fix suggestion ordering in mod directory
- Fix event attachment delivery to zot6
Addons
- pubcrawl: improve friendica compatibility by adding the nonstandard diaspora:guid field
- pubcrawl: initial suport for events
- pubcrawl: improve permalink detection
- flashcards: fix moving learn buttons if viewport sizes changes
- flashcards: Move card details to the bottom of a card
- upgrade_info: provide links to changelog
- photocache: do not save filename for cached photos
- pubcrawl: save local comment activitypub payload in iconfig to be used for relay
- flashcards: UI improvements in box settings
- pubcrawl: implement profile update messages
- pubcrawl: use URI instead of object for actor
- flashcards: fix jumping sync button
- pubcrawl: add threaded comments support
- pubcrawl: ignore target encoding errors
- pubcrawl: format photo items for activitypub
Hubzilla 4.0.3 (2019-04-26)
- Add attachments to zot6 event objects
- Add zot6 to federated transports
- Update import/export to handle zot6 hublocs and xchans
- Update fix_system_urls() to handle zot6 hublocs
- Fix infinite loop using postgres as backend
- Fix magic auth in combination with zot6
- Fix check for required PHP version
- Diaspora: favour diaspora protocol identities over others with same hubloc or xchan address
Hubzilla 4.0.2 (2019-04-08)
- Port cdav calendar to fullcalendar version 4
- Fix perms_pending not evaluated correctly
- Fix return wrong profile photo modification date by plugin
- Fix suggestion widget using feature_enabled still
- Fix check service class limits when syncing files
- Remove xchan_instance_url from notifier query - it is not used anymore
- Implement remove cover photo functionality
- Fix z6_discover() and create a zot6 hubloc on import if applicable
- Add backend support for connections ordering
- Deduplicate items in item_store() by uuid if we got one otherwise by mid
- Add ITEM_TYPE_CUSTOM support to mod display
- Fix mod subthread on sys channel items
- Fix "recipient not found" dreport spaming with own xchan
- Fix wrong variables in dirsearch
- Fix 48 hours timeframe check in mod changeaddr
- Fix wrong variable in Libsync
- Pubcrawl: revert adding additional receivers to comments
- Diaspora: fix intro received when being banned
- Pubcrawl: add diaspora:guid from friendica AP posts for deduplication
- Diaspora: fix friendica plink
- Photocache: fix issue with spaces and quotes in original filenames
Hubzilla 4.0.1 (2019-03-21)
- Fix permissions not getting decrypted on follow
- Add option to add a poster to the video bbcode
- Fix SQL performance issue with queries including thr_parent
- Fix share encoding issue between hz and zap
- Fix edge case in unsupported advisory privacy
- Messagefilter enhancements
- Fix XSS issues
- Clone systems apps to the extent possible
- Auto-configure imagick thumbnail binary during setup if possible
- Fix array not unserialized in util/service_class
- Add phpmd and phpcs to composer require-dev for code linting
- Fix issue with email encoding
- Fix signature issue for zot6 content imported from zotfeeds to hubzilla
- Find unregistered z6 clones on hubzilla sites
- Add zot6 to clonable networks
- Add owner permission checks to AS item fetch
- Perform zot6 discovery in import_author_xchan
- Fix authenticated fetches
- Port zot_record_preferred() from zap
Addons:
- Pubcrawl: deliver comments to abook contacts and thread participants
- Pubcrawl: fix can_comment_on_post()
- Deliverynotice: do not save empty postopts
- Gravatar: fix URL and use z_fetch_url()
- Pubcrawl: improve SQL queries in pubcrawl_item_mod_init()
- Pubcrawl: fix authenticated item fetch
Hubzilla 4.0 (2019-03-08)
- Add CURLOPT_CONNECTTIMEOUT option
- Allow parameters as final path argument in API router
- Remove clones from delivery recipients for top-level posts in favor of clone sync
- Mention php-zip module dependency in administrator guide
- Iron out some kinks with scrollToItem() in combination with collapsed content and images
- Zot API changes to support combined content (items+files) import addon
- Update PHP Version check during setup - min version is now 7.1
- Urlencode links in category widget
- Implement ability for channel visitors to be able to delete their own content
- Support zot location independent urls
- MySQL 8 admin summary compatibility
- Improved gitlab-ci environment
- Deprecate and remove addon settings in favour of per app settings
- Refactor PhotoDriver class and add tests
- Convert affinity tool to app
- Refactor linkify_tags() so it works with xchans across multiple protocols
- Add the actual mid to viewsrc for debuging reasons
- Add filter hooks and the ability to add buttons to the default status editor
- Prevent Hubzilla usage for SEO backlinks
- Implement privacy warning for forum posts via !-tag
- Set document title when title changes on a page update
- Cache embeds in the background on initial storage rather than on first access
- Custom sessionhandler support
- Update nginx and lighttpd sample server configs to explicit disallow access to util
- Introduce command line tool for managing site admins
- Various doxygen improvements
- Add privacygroup_extras_post/drop hooks
- Add collect_public_recipients hook
- Prevent memory exhaustion on zot message pickup with large message queue
- Remove experimental worker queue from core
- Add get_base_apps hook
- Improve handling of notification updates while commenting
- Add warning if upload_filesize < 4MB
- Add ITEM_TYPE_CUSTOM and hooks for processing custom item types
- Set min/maxversion for plugins to STD_VERSION unless otherwise specified
- Add option to make affinity slider 'sticky' across page loads
- Add photo_view_filter hook
- Reset page title if article has no title
- Implement the zot6 protocol
- Add PHOTO_CACHE photo type
- Basic support for HTTP3
- Add native summary support
- Disable image caching if personal or group permissions enabled
Bugfixes
- Fix guest access token xchan record not created on URL login
- Fix regression where mod oep was still using hex2bin/bin2hex instead of album hash
- Fix regression when selecting multiple images in embed images
- Fix broken sync_an_item()
- Fix page jumping on like if comments are expanded (show all x comments)
- Fix regression in mod display where an page update could display items from multiple channels
- Fix starring and filing allowed for other unsupported item types
- Fix wrong variable in z_get_temp_dir()
- Fix page jumping when liking a collapsed/expanded post
- Fix tags detection in URL
- Fix warnings in mod embedphotos
- Fix wrong variable in can_comment_on_post()
- Fix mod new_channel counting removed channels
- Fix regression where not all content variables were sslified
- Fix default values for affinity tool and other information which could be lost when approving a connection
- Fix regression in linkdropper()
- Fix issue with unset auto_save_draft variable which resultet in a javascript error
- Fix home notifications won't expand if there are more than 300 unseen network notifications ahead of them
- Fix total_identities count
- Fix delayed items propagate before publication on cloned channels
Addons
- twitter_api: fedilab needs profile_image_url_https
- New addon: content_import - imports items and files to cloned channels (this obsoletes hzfiles)
- Diaspora: prevent processing of incomplete messages in various places
- hzfiles: fix add missing load/unload functions
- chess: do not look for games if we have no game_id - improves initial pageload performance
- chess: convert to app
- channelreputation: convert to app
- irc: convert to per app
- Provide the addon_common directory for common addon libraries
- fuzzloc: convert to app
- flattrwidget: convert to app
- jappixmini: convert to app
- xmpp: convert to app
- visage: convert to app
- diaspora: reflect linkify_tags() rewrite
- twitter: convert to app
- smileybutton: convert to app
- skeleton: convert to app
- planets: convert to app
- pumpio: convert to app
- pageheader: convert to app
- nsabait: convert to app
- dwpost: convert to app
- diaspora: set the preserve_lf option in various places
- diaspora: fix comments from unknown persons are not accpted
- nofed: convert to app
- ljpost: convert to app
- diaspora: call update_queue_item() if delivery failed
- pubcrawl: call update_queue_item() if delivery failed
- libertree: convert to app
- New addon: queueworker advanced - queue handling (experimental)
- gallery: extended functionality: implements stream image viewer, converts images at the beginning of a post to a gallery
- authchoose: correction to query, add affinity setting
- New addon: photocache - local caching for public photos
- New addon: totp - two factor authentication using time-based one-time passwords
Hubzilla 3.8.9 (2018-02-03)
- Fix typos in mod oep
- Fix page jumping when liking collapsed/expanded post
- Fix failure to import mail in mod import
- Fix wrong channel count in mod new_channel
- Fix diaspora addon regression
- Remove deprecated diaspora addon endpoint
- Fix wrong function call in gallery addon
Hubzilla 3.8.8 (2018-12-22)
- Fix issue with linkinfo
- Fix cURL with HTTP/2
- Remove scale_external_images()
- Style highlight bbcode via css
- Make mod channel deal with b64 encoded mid's
- Fix email retrieval in OAuth2Storage
- Add reinstall option to util/addons
- Remove deprecated caching protection from mod photo
- Add missing check for observer in mod like
- Articles: default to logged in channel if channel name is not passed
- Wiki: fix preview issue with hyperlinks
- Cart: backport fixes from osada
- Gallery: provide file extensions for better compatibility
- Hsse: fix issue when linkinfo data was inserted
- Diaspora: remove deprecated scale_external_images()
Hubzilla 3.8.7 (2018-12-14)
- Fix issue with linkdropper in comment area
- Fix regression wit app ordering
- Fix return if readImnageBlob() throws an exception
- Introduce photo_view_filter hook
- Fix home notifications not expanding in certain situations
- Fix for dark schema
- Fix total identities restriction
- Fix article page title not updating if article has no title
- Gallery: the gallery app will now act as the full-size photo viewer in /photos if installed
Hubzilla 3.8.6 (2018-12-03)
- Prevent incompatible export files (osada/zap) from being imported
- Catch exception if readImageBlob() receives bogus data
- Streamline PDF previews
- Allow notification filtering by name or address
- Fix too restrictive attached photo permissions
- Update ES translation
- Use flex for the default template
- Do not store serialized pconfig value received via to Module/Pconfig.php
- Update jquery-file-upload lib and move to composer
- Update imagesloaded lib and move to composer
- Fix activitypub tag notifications
- Fix call to undefined function in PConfig
- Fix typo which prevented propagation of comments to zot6 (dev)
- Activitypub: add support for pterotype (wordpress plugin)
- Openstreetmap: check validity of lat+lon before rendering a map
Hubzilla 3.8.5 (2018-11-19)
- Fix pconfig for new installs
- Fix delayed publication of posts in combination with channel clones
- Fix issue where photo filesize was not updated in the DB when a photo was edited
- Fix issue where the original photo size was not set correct in the DB
- Fix delivery issue in zot_fetch()
- Fix typo in channel reputation addon
Hubzilla 3.8.4 (2018-11-14)
- Fix xss issue (thanks to Eduardo)
- Implement hook in enotify to be used by superblock
- Various css fixes
- Improve photo cache handling
- Provide a function hz_syslog() to log to syslog
- Fix request_target in z_post_url()
- Fix plural handling for various languages
- Some preparatory work for zot6
- Fix warning in gallery addon
- Fix date issue on xchan photo update in diaspora and pubcrawl addons
- Fix typos in startpage addon
- Improve activitypub addressing
- Fix taxonomy in activitypub direct messages
- Fix syntax error in diaspora addon
- New e-learning addon flashcards
- Remove DNS check for database connection during installation
- Implement timestamps for pconfig
Hubzilla 3.8.3 (2018-11-05)
- Do not count likes in forum notifications if likes notifications are disabled
- Fix typo in spanish translation which broke javascript
- Improve linkinfo charset handling and image detection
- Fix wrong image resize for some external images
- Move blueimp upload lib to composer and update to version 9.25
- Remove primary/clone counts from admin summary until we have a mechanism to update the fixed counts
- Fix html2markdown() and re-enable previously failing tests
- Improve look of oembed content for Hubzilla links
- Fix forum notifications count not correct
- Fix gallery addon which broke mod apps in some situations
- Fix wiki_list widget not working on every page respectively level
Hubzilla 3.8.2 (2018-10-29)
- Merge unmerged changes from dev into master
- Fix issues with forum handling in mod network and ping
- Fix delivery chain linkage messed up if original post was edited
- Fix issues with the experimental queue worker
- Fix call to image source {1} from html template
- Group stream filters by threaded and unthreaded default view
- Show only unseen forum messages when clicking on forum notification
- Improve editor contact autocomplete performance
- Convert non UTF-8 content on link embeding
- Make textcomplete return up to 100 items
- Look for for matches in the entire string when suggesting emojis
- Add [summary] bbcode to autocomplete list
- Update blueimp_upload to version 9.23
- Update spanish strings
Addons
- Cart: don't allow items to be added unless user is logged into the Grid.
- Pubcrawl: simplify asencode_activity() addressing to reflect upcoming changes in mastodon 2.6
- Rendezvous: Update rendezvous_group.tpl to fix broken Bootstrap library reference
Hubzilla 3.8.1 (2018-10-21)
- Fix issue with too long navbar banners
- Fix menu item edit link
- Fix issue with jquery file upload
Hubzilla 3.8 (2018-10-19)
- Re-implement basic build test via gitlab-ci
- Rework wiki encoding/decoding
- Implement improved worker (experimental - off by default)
- Rework hubzilla settings infrastructure
- Port the features to stand-alone apps
- Add app_destroy hook
- Improve mod network search
- Extend app_install() to allow installing by app name
- Remove tech levels
- Hide channel creation form when at or over service_class['limit_identities']
- Rename groups and group_members tables for MySQL 8 compatibility
- Improve checks for image magick and pdo at setup
- Allow a second url in apd files for settings
- Add contact autocomplete to mod photo comments
- Add hook to allow addons to filter the list returned by app_list
- Do not sync channel moved field
- Add attach_delete hook
- Catch errors in template rendering
- Provide a noscript_content switch for mod channel and display
- Install and update bootstrap via composer
- Improve cover-photo handling
- Improve notification handling on small screens
- Detect and automatically repair duplicate plugin hook scenarios
- Add dreport_process hook
- Redirect stdout/stderr on cron command
- Update composer libs and add ramsey/uuid
- Add hook to extend conv_item cog dropdown menu
- Trigger the query options off of the active module rather than passed parameters in first_post_date()
- Tweak archive widget for articles
- Add api_not_found hook
- Ignore deleted hublocs in zot finger
- Don't use "checkjs" with an associated page reload - wrap a static copy of the content in noscript tags instead
- Add possibility to override helpfiles
- Add support for overriding the default template location and individual templates via .htconfig.php
- Add table support to markdown
- Make channel_remove less memory hungry
- Prevent json-ld bombing
- Turn off browser autocomplete on channel sources creation
- Add alter_pdl hook
- Add ability for addons to create .pdl files and load them automatically
- Sanitise vcard fields
- Don't sync system apps
Bugfixes
- Fix issue with timeago plurals
- Fix issue with HTTP signatures
- Fix issues with channel import
- Fix double linebreaks in viewsrc output
- Fix jsonld signature issue (library is using sha1, spec requires sha256)
- Fix bookmarks not syncing between clones
- Fix combined view getting lost when deleting first message in pm thread
- Fix authors unable to comment on posts they authored when owned by others in certain circumstances
- Fix syschannel included in total channels count
- Fix html-to-markdown adds a backslash infront of a hash after each new line
- Fix profile likes dropdown
- Fix tags corruption when editing posts
- Fix duplicate info() messages
- Fix zid leaking to nonzot sites if markdown is enabled
- Fix app delete issue with base installed apps and app photo being reloaded uneccessarily
- Fix app update and ownership issues
Addons
- Upgrade Info: new addon to inform channel owners about system upgrades
- Superblock: fix issue with not removeable channels
- Cart: fix subscription table not created on install
- Hsse: new addon - a WYSIWYG editor for certain modules
- Rainbowtag: convert to app infrastructure
- Superblock: convert to app infrastructure
- Send ZID: convert to app infrastructure
- Adultphotoflag: move setting to mod photos
- GNU-Social: convert to app infrastructure
- Pubcrawl: convert to app infrastructure
- Startpage: convert to app infrastructure
- Wppost: convert to app infrastructure
- Diaspora: convert to app infrastructure
- Mdpost: move setting to editor settings
- Cart: convert to app infrastructure
- Cart: reflect renaming of groups table
- Authchoose: convert to app infrastructure
- Channelreputation: new addon - reputation system for community channels (forums, etc.)
- Diaspora: fix commenting on diaspora reshares
- Gallery: convert to app infrastructure
- Nsfw: convert to app infrastructure
- Diaspora: change top level retraction type from StatusMessage to Post
- Delivery Notice: new addon - display delivery status information at the top of items
- Diaspora: exclude xchan_networks rss, anon and unknown from the query to make the results more reliable
- Diaspora: provide xchan_url if we have no xchan_addr for mentions
- Diaspora: fix x-social-relay tags converted to associative array
- Twitter API: improvements for the twidere client
- Pubcrawl: partial support for inbound AP events
- Pubcrawl: add support for image objects
- Gallery: provide a way to direct link to a photo album gallery
- Pubcrawl: improve can_comment_on_post handler
- Pubcrawl: implement pleroma quirks regarding follow activities
- Cart: add ability to create catalog entries for physical and/or manually fulfilled items
- Cart: add subscriptions submodule
Hubzilla 3.6 (2018-07-25)
- Update jquery.timeago library
- Implement Hookable CSP
- ActivityStreams: accept header changes to support plume
+6 -5
View File
@@ -1,4 +1,5 @@
Copyright (c) 2010-2018 the Hubzilla Community
Copyright (c) 2019 Hubzilla Community
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -8,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+4 -1
View File
@@ -25,5 +25,8 @@ Hubzilla is completely decentralised and open source, for you modify or adapt to
The Hubzilla community consists of passionate volunteers creating an open source commons of decentralised services which are highly integrated and can rival the feature set of large centralised providers. We do our best to provide ethical software which places you in control of your online communications and privacy expectations.
Build status master branch:
[![Build Status Master](https://framagit.org/hubzilla/core/badges/master/build.svg)](https://framagit.org/hubzilla/core/badges/master/build.svg)
[![Build Status](https://travis-ci.org/redmatrix/hubzilla.svg)](https://travis-ci.org/redmatrix/hubzilla)
Build status dev branch:
[![Build Status Dev](https://framagit.org/hubzilla/core/badges/dev/build.svg)](https://framagit.org/hubzilla/core/badges/dev/build.svg)
+1 -1
View File
@@ -88,4 +88,4 @@ class PermissionLimits {
return false;
}
}
}
+27
View File
@@ -0,0 +1,27 @@
<?php /** @file */
namespace Zotlabs\Daemon;
class Cache_embeds {
static public function run($argc,$argv) {
if(! $argc == 2)
return;
$c = q("select body from item where id = %d ",
dbesc(intval($argv[1]))
);
if(! $c)
return;
$item = $c[0];
// bbcode conversion by default processes embeds that aren't already cached.
// Ignore the returned html output.
bbcode($item['body']);
}
}
+26 -3
View File
@@ -60,7 +60,7 @@ class Cron {
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'] ] );
Master::Summon( [ 'Notifier', 'drop', $rr['id'] ] );
}
}
}
@@ -94,6 +94,29 @@ class Cron {
@time_sleep_until(microtime(true) + (float) $interval);
}
}
// Clean expired photos from cache
$r = q("SELECT DISTINCT xchan, content FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s",
intval(PHOTO_CACHE),
db_utcnow(),
db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY')
);
if($r) {
q("DELETE FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s",
intval(PHOTO_CACHE),
db_utcnow(),
db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY')
);
foreach($r as $rr) {
$file = dbunescbin($rr['content']);
if(is_file($file)) {
@unlink($file);
@rmdir(dirname($file));
logger('info: deleted cached photo file ' . $file, LOGGER_DEBUG);
}
}
}
// publish any applicable items that were set to be published in the future
// (time travel posts). Restrict to items that have come of age in the last
@@ -164,7 +187,7 @@ class Cron {
if($r) {
require_once('include/photo/photo_driver.php');
foreach($r as $rr) {
$photos = import_xchan_photo($rr['xchan_photo_l'],$rr['xchan_hash']);
$photos = import_xchan_photo($rr['xchan_photo_l'], $rr['xchan_hash'], false, true);
$x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s'
where xchan_hash = '%s'",
dbesc($photos[0]),
@@ -191,7 +214,7 @@ class Cron {
$restart = true;
$generation = intval($argv[2]);
if(! $generation)
killme();
return;
}
reload_plugins();
+6
View File
@@ -44,6 +44,11 @@ class Cron_daily {
db_utcnow(), db_quoteinterval('1 YEAR')
);
// Clean up emdedded content cache
q("DELETE FROM cache WHERE updated < %s - INTERVAL %s",
db_utcnow(),
db_quoteinterval(get_config('system','active_expire_days', '30') . ' DAY')
);
//update statistics in config
require_once('include/statistics_fns.php');
@@ -85,6 +90,7 @@ class Cron_daily {
Master::Summon(array('Cli_suggest'));
remove_obsolete_hublocs();
z6_discover();
call_hooks('cron_daily',datetime_convert());
+3 -3
View File
@@ -13,7 +13,7 @@ class CurlAuth {
static public function run($argc,$argv) {
if($argc != 2)
killme();
return;
\App::$session->start();
@@ -50,6 +50,6 @@ class CurlAuth {
file_put_contents($c,$x);
killme();
return;
}
}
}
+5 -2
View File
@@ -2,6 +2,8 @@
namespace Zotlabs\Daemon;
use Zotlabs\Lib\DReport;
require_once('include/zot.php');
require_once('include/queue_fn.php');
@@ -58,11 +60,12 @@ class Deliver {
foreach($dresult as $xx) {
if(is_array($xx) && array_key_exists('message_id',$xx)) {
if(delivery_report_is_storable($xx)) {
q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_result, dreport_time, dreport_xchan ) values ( '%s', '%s','%s','%s','%s','%s' ) ",
if(DReport::is_storable($xx)) {
q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
dbesc($xx['message_id']),
dbesc($xx['location']),
dbesc($xx['recipient']),
dbesc(($xx['name']) ? $xx['name'] : EMPTY_STR),
dbesc($xx['status']),
dbesc(datetime_convert($xx['date'])),
dbesc($xx['sender'])
+36 -7
View File
@@ -3,14 +3,13 @@
namespace Zotlabs\Daemon;
if(array_search( __file__ , get_included_files()) === 0) {
require_once('include/cli_startup.php');
array_shift($argv);
$argc = count($argv);
if($argc)
Master::Release($argc,$argv);
killme();
return;
}
@@ -18,13 +17,43 @@ if(array_search( __file__ , get_included_files()) === 0) {
class Master {
static public function Summon($arr) {
proc_run('php','Zotlabs/Daemon/Master.php',$arr);
$hookinfo = [
'argv'=>$arr
];
call_hooks ('daemon_master_summon',$hookinfo);
$arr = $hookinfo['argv'];
$argc = count($arr);
if ((!is_array($arr) || (count($arr) < 1))) {
logger("Summon handled by hook.",LOGGER_DEBUG);
return;
}
$phpbin = get_config('system','phpbin','php');
proc_run($phpbin,'Zotlabs/Daemon/Master.php',$arr);
}
static public function Release($argc,$argv) {
cli_startup();
logger('Master: release: ' . print_r($argv,true), LOGGER_ALL,LOG_DEBUG);
$cls = '\\Zotlabs\\Daemon\\' . $argv[0];
$cls::run($argc,$argv);
}
$hookinfo = [
'argv'=>$argv
];
call_hooks ('daemon_master_release',$hookinfo);
$argv = $hookinfo['argv'];
$argc = count($argv);
if ((!is_array($argv) || (count($argv) < 1))) {
logger("Release handled by hook.",LOGGER_DEBUG);
return;
}
logger('Master: release: ' . json_encode($argv), LOGGER_ALL,LOG_DEBUG);
$cls = '\\Zotlabs\\Daemon\\' . $argv[0];
$cls::run($argc,$argv);
}
}
+91 -18
View File
@@ -2,6 +2,8 @@
namespace Zotlabs\Daemon;
use Zotlabs\Lib\Libzot;
require_once('include/queue_fn.php');
require_once('include/html2plain.php');
require_once('include/conversation.php');
@@ -283,8 +285,21 @@ class Notifier {
}
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;
$hookinfo=[
'targetitem'=>$target_item,
'deliver'=>false
];
if (intval($target_item['item_type'] == ITEM_TYPE_CUSTOM)) {
call_hooks('customitem_deliver',$hookinfo);
}
if (!$hookinfo['deliver']) {
logger('notifier: target item not forwardable: type ' . $target_item['item_type'], LOGGER_DEBUG);
return;
}
$target_item = $hookinfo['targetitem'];
}
// Check for non published items, but allow an exclusion for transmitting hidden file activities
@@ -344,7 +359,16 @@ class Notifier {
return;
$encoded_item = encode_item($target_item);
// activitystreams version
$m = get_iconfig($target_item,'activitystreams','signed_data');
if($m) {
$activity = json_decode($m,true);
}
else {
$activity = \Zotlabs\Lib\Activity::encode_activity($target_item);
}
// Send comments to the owner to re-deliver to everybody in the conversation
// We only do this if the item in question originated on this site. This prevents looping.
// To clarify, a site accepting a new comment is responsible for sending it to the owner for relay.
@@ -401,6 +425,12 @@ class Notifier {
$private = false;
$recipients = collect_recipients($parent_item,$private);
if ($top_level_post) {
// remove clones who will receive the post via sync
$recipients = array_diff($recipients, [ $target_item['owner_xchan'] ]);
}
// FIXME add any additional recipients such as mentions, etc.
// don't send deletions onward for other people's stuff
@@ -423,6 +453,8 @@ class Notifier {
$x['body'] = 'private';
logger('notifier: encoded item: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG);
//logger('notifier: encoded activity: ' . print_r($activity,true), LOGGER_DATA, LOG_DEBUG);
stringify_array_elms($recipients);
if(! $recipients) {
logger('no recipients');
@@ -433,7 +465,7 @@ class Notifier {
$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 (" . protect_sprintf(implode(',',$recipients)) . ")");
$details = q("select xchan_hash, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . protect_sprintf(implode(',',$recipients)) . ")");
$recip_list = array();
@@ -559,7 +591,9 @@ class Notifier {
foreach($dhubs as $hub) {
if($hub['hubloc_network'] !== 'zot') {
logger('notifier_hub: ' . $hub['hubloc_url'],LOGGER_DEBUG);
if(! in_array($hub['hubloc_network'], [ 'zot','zot6' ])) {
$narr = [
'channel' => $channel,
'upstream' => $upstream,
@@ -608,20 +642,32 @@ class Notifier {
continue;
}
// default: zot protocol
if(! in_array($hub['hubloc_network'], [ 'zot','zot6' ])) {
continue;
}
// Do not change this to a uuid as long as we have traditional zot servers
// in the loop. The signature verification step can't handle dashes in the
// hashes.
$hash = random_string(48);
$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($hub['hubloc_network'] === 'zot6') {
$packet = Libzot::build_packet($channel, $packet_type, ids_to_array($packet_recips,'hash'));
}
else {
$packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
}
}
if($packet_type === 'keychange') {
if($packet_type === 'keychange' && $hub['hubloc_network'] === 'zot') {
$pmsg = get_pconfig($channel['channel_id'],'system','keychange');
$packet = zot_build_packet($channel,$packet_type,(($packet_recips) ? $packet_recips : null));
}
elseif($packet_type === 'request') {
elseif($packet_type === 'request' && $hub['hubloc_network'] === 'zot') {
$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)
@@ -634,6 +680,7 @@ class Notifier {
'account_id' => $channel['channel_account_id'],
'channel_id' => $channel['channel_id'],
'posturl' => $hub['hubloc_callback'],
'driver' => $hub['hubloc_network'],
'notify' => $packet,
'msg' => (($pmsg) ? json_encode($pmsg) : '')
));
@@ -641,18 +688,43 @@ class Notifier {
else {
$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);
if($hub['hubloc_network'] === 'zot6') {
$zenv = [];
if($env) {
foreach($env as $e) {
$zenv[] = $e['hash'];
}
}
$packet_type = (($upstream || $uplink) ? 'response' : 'activity');
// block zot private reshares from zot6, as this could cause a number of privacy issues
// due to parenting differences between the reshare implementations. In zot a reshare is
// a standalone parent activity and in zot6 it is a followup/child of the original activity.
// For public reshares, some comments to the reshare on the zot fork will not make it to zot6
// due to these different message models. This cannot be prevented at this time.
if($packet_type === 'activity' && $activity['type'] === 'Announce' && intval($target_item['item_private'])) {
continue;
}
$packet = Libzot::build_packet($channel,$packet_type,$zenv,$activity,'activitystreams',(($private) ? $hub['hubloc_sitekey'] : null),$hub['site_crypto']);
}
else {
$packet = zot_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash);
// 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(
@@ -661,6 +733,7 @@ class Notifier {
'account_id' => $target_item['aid'],
'channel_id' => $target_item['uid'],
'posturl' => $hub['hubloc_callback'],
'driver' => $hub['hubloc_network'],
'notify' => $packet,
'msg' => json_encode($encoded_item)
]
+8 -6
View File
@@ -61,15 +61,17 @@ class Onepoll {
if($contact['xchan_network'] === 'rss') {
logger('onepoll: processing feed ' . $contact['xchan_name'], LOGGER_DEBUG);
handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']);
q("update abook set abook_connected = '%s' where abook_id = %d",
dbesc(datetime_convert()),
intval($contact['abook_id'])
);
$alive = handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']);
if ($alive) {
q("update abook set abook_connected = '%s' where abook_id = %d",
dbesc(datetime_convert()),
intval($contact['abook_id'])
);
}
return;
}
if($contact['xchan_network'] !== 'zot')
if(! in_array($contact['xchan_network'],['zot','zot6']))
return;
// update permissions
+3 -2
View File
@@ -47,7 +47,7 @@ class Poller {
$restart = true;
$generation = intval($argv[2]);
if(! $generation)
killme();
return;
}
if(($argc > 1) && intval($argv[1])) {
@@ -110,7 +110,7 @@ class Poller {
}
if($contact['xchan_network'] !== 'zot')
if(! in_array($contact['xchan_network'],['zot','zot6']))
continue;
if($c == $t) {
@@ -199,6 +199,7 @@ class Poller {
set_config('system','lastpoll',datetime_convert());
//All done - clear the lockfile
@unlink($lockfile);
return;
+12 -3
View File
@@ -12,7 +12,6 @@ class Queue {
require_once('include/items.php');
require_once('include/bbcode.php');
if($argc > 1)
$queue_id = $argv[1];
else
@@ -61,10 +60,20 @@ class Queue {
// or just prior to this query based on recent and long-term delivery history. If we have good reason to believe
// the site is permanently down, there's no reason to attempt delivery at all, or at most not more than once
// or twice a day.
$r = q("SELECT * FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s ",
$sqlrandfunc = db_getfunc('rand');
$r = q("SELECT *,$sqlrandfunc as rn FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s order by rn limit 1",
db_utcnow()
);
while ($r) {
foreach($r as $rv) {
queue_deliver($rv);
}
$r = q("SELECT *,$sqlrandfunc as rn FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s order by rn limit 1",
db_utcnow()
);
}
}
if(! $r)
return;
+48
View File
@@ -0,0 +1,48 @@
<?php
namespace Zotlabs\Extend;
class Route {
static function register($file,$modname) {
$rt = self::get();
$rt[] = [ $file, $modname ];
self::set($rt);
}
static function unregister($file,$modname) {
$rt = self::get();
if($rt) {
$n = [];
foreach($rt as $r) {
if($r[0] !== $file && $r[1] !== $modname) {
$n[] = $r;
}
}
self::set($n);
}
}
static function unregister_by_file($file) {
$rt = self::get();
if($rt) {
$n = [];
foreach($rt as $r) {
if($r[0] !== $file) {
$n[] = $r;
}
}
self::set($n);
}
}
static function get() {
return get_config('system','routes',[]);
}
static function set($r) {
return set_config('system','routes',$r);
}
}
+47
View File
@@ -0,0 +1,47 @@
<?php
namespace Zotlabs\Extend;
class Widget {
static function register($file,$widget) {
$rt = self::get();
$rt[] = [ $file, $widget ];
self::set($rt);
}
static function unregister($file,$widget) {
$rt = self::get();
if($rt) {
$n = [];
foreach($rt as $r) {
if($r[0] !== $file && $r[1] !== $widget) {
$n[] = $r;
}
}
self::set($n);
}
}
static function unregister_by_file($file) {
$rt = self::get();
if($rt) {
$n = [];
foreach($rt as $r) {
if($r[0] !== $file) {
$n[] = $r;
}
}
self::set($n);
}
}
static function get() {
return get_config('system','widgets',[]);
}
static function set($r) {
return set_config('system','widgets',$r);
}
}
+3 -2
View File
@@ -4,7 +4,7 @@ namespace Zotlabs\Identity;
class OAuth2Server extends \OAuth2\Server {
public function __construct(OAuth2Storage $storage, $config = []) {
public function __construct(OAuth2Storage $storage, $config = null) {
if(! is_array($config)) {
$config = [
@@ -19,7 +19,8 @@ class OAuth2Server extends \OAuth2\Server {
$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));
// Need to use OpenID\GrantType to return id_token (see:https://github.com/bshaffer/oauth2-server-php/issues/443)
$this->addGrantType(new \OAuth2\OpenID\GrantType\AuthorizationCode($storage));
$keyStorage = new \OAuth2\Storage\Memory( [
'keys' => [
+65 -7
View File
@@ -50,20 +50,78 @@ class OAuth2Storage extends \OAuth2\Storage\Pdo {
public function getUser($username)
{
$x = channelx_by_nick($username);
$x = channelx_by_n($username);
if(! $x) {
return false;
}
$a = q("select * from account where account_id = %d",
intval($x['channel_account_id'])
);
$n = explode(' ', $x['channel_name']);
return( [
'username' => $x['channel_address'],
'user_id' => $x['channel_id'],
'firstName' => $x['channel_name'],
'lastName' => '',
'password' => 'NotARealPassword'
'webfinger' => channel_reddress($x),
'portable_id' => $x['channel_hash'],
'email' => $a[0]['account_email'],
'username' => $x['channel_address'],
'user_id' => $x['channel_id'],
'name' => $x['channel_name'],
'firstName' => ((count($n) > 1) ? $n[1] : $n[0]),
'lastName' => ((count($n) > 2) ? $n[count($n) - 1] : ''),
'picture' => $x['xchan_photo_l']
] );
}
public function scopeExists($scope) {
// Report that the scope is valid even if it's not.
// We will only return a very small subset no matter what.
// @TODO: Truly validate the scope
// see vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ScopeInterface.php and
// vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/Pdo.php
// for more info.
return true;
}
public function getDefaultScope($client_id=null) {
// Do not REQUIRE a scope
// see vendor/bshaffer/oauth2-server-php/src/OAuth2/Storage/ScopeInterface.php and
// for more info.
return null;
}
public function getUserClaims ($user_id, $claims) {
// Populate the CLAIMS requested (if any).
// @TODO: create a more reasonable/comprehensive list.
// @TODO: present claims on the AUTHORIZATION screen
$userClaims = Array();
$claims = explode (' ', trim($claims));
$validclaims = Array ("name","preferred_username","webfinger","portable_id","email","picture","firstName","lastName");
$claimsmap = Array (
"webfinger" => 'webfinger',
"portable_id" => 'portable_id',
"name" => 'name',
"email" => 'email',
"preferred_username" => 'username',
"picture" => 'picture',
"given_name" => 'firstName',
"family_name" => 'lastName'
);
$userinfo = $this->getUser($user_id);
foreach ($validclaims as $validclaim) {
if (in_array($validclaim,$claims)) {
$claimkey = $claimsmap[$validclaim];
$userClaims[$validclaim] = $userinfo[$claimkey];
} else {
$userClaims[$validclaim] = $validclaim;
}
}
$userClaims["sub"]=$user_id;
return $userClaims;
}
/**
* plaintext passwords are bad! Override this for your application
*
@@ -78,4 +136,4 @@ class OAuth2Storage extends \OAuth2\Storage\Pdo {
return true;
}
}
}
File diff suppressed because it is too large Load Diff
+163 -31
View File
@@ -7,22 +7,25 @@ namespace Zotlabs\Lib;
*
* 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 = null;
public $data = null;
public $valid = false;
public $deleted = false;
public $id = '';
public $parent_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;
/**
@@ -35,16 +38,49 @@ class ActivityStreams {
function __construct($string) {
$this->raw = $string;
$this->data = json_decode($string, true);
if(is_array($string)) {
$this->data = $string;
}
else {
$this->data = json_decode($string, true);
}
if($this->data) {
// verify and unpack JSalmon signature if present
if(is_array($this->data) && array_key_exists('signed',$this->data)) {
$ret = JSalmon::verify($this->data);
$tmp = JSalmon::unpack($this->data['data']);
if($ret && $ret['success']) {
if($ret['signer']) {
$saved = json_encode($this->data,JSON_UNESCAPED_SLASHES);
$this->data = $tmp;
$this->data['signer'] = $ret['signer'];
$this->data['signed_data'] = $saved;
if($ret['hubloc']) {
$this->data['hubloc'] = $ret['hubloc'];
}
}
}
}
$this->valid = true;
if(array_key_exists('type',$this->data) && array_key_exists('actor',$this->data) && array_key_exists('object',$this->data)) {
if($this->data['type'] === 'Delete' && $this->data['actor'] === $this->data['object']) {
$this->deleted = $this->data['actor'];
$this->valid = false;
}
}
}
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->actor = $this->get_actor('actor','','');
$this->obj = $this->get_compound_property('object');
$this->tgt = $this->get_compound_property('target');
$this->origin = $this->get_compound_property('origin');
@@ -53,14 +89,31 @@ class ActivityStreams {
$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->signer && is_array($this->signer) && array_key_exists('publicKey',$this->signer) && is_array($this->signer['publicKey']) && $this->signer['publicKey']['publicKeyPem']) {
$this->sigok = LDSignatures::verify($this->data,$this->signer['publicKey']['publicKeyPem']);
}
}
if(($this->type === 'Note') && (! $this->obj)) {
if(! $this->obj) {
$this->obj = $this->data;
$this->type = 'Create';
if(! $this->actor) {
$this->actor = $this->get_actor('attributedTo',$this->obj);
}
}
if($this->obj && is_array($this->obj) && $this->obj['actor'])
$this->obj['actor'] = $this->get_actor('actor',$this->obj);
if($this->tgt && is_array($this->tgt) && $this->tgt['actor'])
$this->tgt['actor'] = $this->get_actor('actor',$this->tgt);
$this->parent_id = $this->get_property_obj('inReplyTo');
if((! $this->parent_id) && is_array($this->obj)) {
$this->parent_id = $this->obj['inReplyTo'];
}
if((! $this->parent_id) && is_array($this->obj)) {
$this->parent_id = $this->obj['id'];
}
}
}
@@ -190,28 +243,32 @@ class ActivityStreams {
$base = (($base) ? $base : $this->data);
$propname = (($prefix) ? $prefix . ':' : '') . $property;
if(! is_array($base)) {
btlogger('not an array: ' . print_r($base,true));
return null;
}
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;
}
return self::fetch($url);
}
$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);
static function fetch($url,$channel = null) {
return Activity::fetch($url,$channel);
}
return null;
static function is_an_actor($s) {
return(in_array($s,[ 'Application','Group','Organization','Person','Service' ]));
}
/**
@@ -222,10 +279,71 @@ class ActivityStreams {
* @param string $namespace (optional) default empty
* @return NULL|mixed
*/
function get_compound_property($property, $base = '', $namespace = '') {
function get_actor($property,$base='',$namespace = '') {
$x = $this->get_property_obj($property, $base, $namespace);
if($this->is_url($x)) {
$x = $this->fetch_property($x);
// SECURITY: If we have already stored the actor profile, re-generate it
// from cached data - don't refetch it from the network
$r = q("select * from xchan left join hubloc on xchan_hash = hubloc_hash where hubloc_id_url = '%s' limit 1",
dbesc($x)
);
if($r) {
$y = Activity::encode_person($r[0]);
$y['cached'] = true;
return $y;
}
}
$actor = $this->get_compound_property($property,$base,$namespace,true);
if(is_array($actor) && self::is_an_actor($actor['type'])) {
if(array_key_exists('id',$actor) && (! array_key_exists('inbox',$actor))) {
$actor = $this->fetch_property($actor['id']);
}
return $actor;
}
return null;
}
/**
* @brief
*
* @param string $property
* @param array $base
* @param string $namespace (optional) default empty
* @param boolean $first (optional) default false, if true and result is a sequential array return only the first element
* @return NULL|mixed
*/
function get_compound_property($property, $base = '', $namespace = '', $first = false) {
$x = $this->get_property_obj($property, $base, $namespace);
if($this->is_url($x)) {
$y = $this->fetch_property($x);
if (is_array($y)) {
$x = $y;
}
}
// verify and unpack JSalmon signature if present
if(is_array($x) && array_key_exists('signed',$x)) {
$ret = JSalmon::verify($x);
$tmp = JSalmon::unpack($x['data']);
if($ret && $ret['success']) {
if($ret['signer']) {
$saved = json_encode($x,JSON_UNESCAPED_SLASHES);
$x = $tmp;
$x['signer'] = $ret['signer'];
$x['signed_data'] = $saved;
if($ret['hubloc']) {
$x['hubloc'] = $ret['hubloc'];
}
}
}
}
if($first && is_array($x) && array_key_exists(0,$x)) {
return $x[0];
}
return $x;
@@ -273,4 +391,18 @@ class ActivityStreams {
return $x;
}
static function is_as_request() {
$x = getBestSupportedMimeType([
'application/ld+json;profile="https://www.w3.org/ns/activitystreams"',
'application/activity+json',
'application/ld+json;profile="http://www.w3.org/ns/activitystreams"'
]);
return(($x) ? true : false);
}
}
+9 -1
View File
@@ -12,8 +12,16 @@ class Api_router {
}
static function find($path) {
if(array_key_exists($path,self::$routes))
if (array_key_exists($path,self::$routes)) {
return self::$routes[$path];
}
$with_params = dirname($path) . '/[id]';
if (array_key_exists($with_params,self::$routes)) {
return self::$routes[$with_params];
}
return null;
}
+428 -168
View File
File diff suppressed because it is too large Load Diff
+4 -9
View File
@@ -11,8 +11,10 @@ class Cache {
$hash = hash('whirlpool',$key);
$r = q("SELECT v FROM cache WHERE k = '%s' limit 1",
dbesc($hash)
$r = q("SELECT v FROM cache WHERE k = '%s' AND updated > %s - INTERVAL %s LIMIT 1",
dbesc($hash),
db_utcnow(),
db_quoteinterval(get_config('system','object_cache_days', '30') . ' DAY')
);
if ($r)
@@ -40,12 +42,5 @@ class Cache {
dbesc(datetime_convert()));
}
}
public static function clear() {
q("DELETE FROM cache WHERE updated < '%s'",
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
}
}
+8 -1
View File
@@ -58,10 +58,15 @@ class DB_Upgrade {
$c = new $cls();
$retval = $c->run();
if($retval != UPDATE_SUCCESS) {
$source = t('Source code of failed update: ') . "\n\n" . @file_get_contents('Zotlabs/Update/' . $s . '.php');
// Prevent sending hundreds of thousands of emails by creating
// a lockfile.
@@ -86,7 +91,9 @@ class DB_Upgrade {
'$sitename' => \App::$config['system']['sitename'],
'$siteurl' => z_root(),
'$update' => $x,
'$error' => sprintf( t('Update %s failed. See error logs.'), $x)
'$error' => sprintf( t('Update %s failed. See error logs.'), $x),
'$baseurl' => z_root(),
'$source' => $source
]
)
]
+94 -2
View File
@@ -14,6 +14,7 @@ class DReport {
$this->location = $location;
$this->sender = $sender;
$this->recipient = $recipient;
$this->name = EMPTY_STR;
$this->message_id = $message_id;
$this->status = $status;
$this->date = datetime_convert();
@@ -24,8 +25,8 @@ class DReport {
$this->date = datetime_convert();
}
function addto_recipient($name) {
$this->recipient = $this->recipient . ' ' . $name;
function set_name($name) {
$this->name = $name;
}
function addto_update($status) {
@@ -37,6 +38,7 @@ class DReport {
$this->location = $arr['location'];
$this->sender = $arr['sender'];
$this->recipient = $arr['recipient'];
$this->name = $arr['name'];
$this->message_id = $arr['message_id'];
$this->status = $arr['status'];
$this->date = $arr['date'];
@@ -47,9 +49,99 @@ class DReport {
'location' => $this->location,
'sender' => $this->sender,
'recipient' => $this->recipient,
'name' => $this->name,
'message_id' => $this->message_id,
'status' => $this->status,
'date' => $this->date
);
}
/**
* @brief decide whether to store a returned delivery report
*
* @param array $dr
* @return boolean
*/
static function is_storable($dr) {
if(get_config('system', 'disable_dreport'))
return false;
/**
* @hooks dreport_is_storable
* Called before storing a dreport record to determine whether to store it.
* * \e array
*/
call_hooks('dreport_is_storable', $dr);
// let plugins accept or reject - if neither, continue on
if(array_key_exists('accept',$dr) && intval($dr['accept']))
return true;
if(array_key_exists('reject',$dr) && intval($dr['reject']))
return false;
if(! ($dr['sender']))
return false;
// Is the sender one of our channels?
$c = q("select channel_id from channel where channel_hash = '%s' or channel_portable_id = '%s' limit 1",
dbesc($dr['sender']),
dbesc($dr['sender'])
);
if(! $c)
return false;
// legacy zot recipients add a space and their name to the xchan. remove it if true.
$legacy_recipient = strpos($dr['recipient'], ' ');
if($legacy_recipient !== false) {
$legacy_recipient_parts = explode(' ', $dr['recipient'], 2);
$rxchan = $legacy_recipient_parts[0];
}
else {
$rxchan = $dr['recipient'];
}
// is the recipient one of our connections, or do we want to store every report?
$pcf = get_pconfig($c[0]['channel_id'],'system','dreport_store_all');
if($pcf)
return true;
// We always add ourself as a recipient to private and relayed posts
// So if a remote site says they can't find us, that's no big surprise
// and just creates a lot of extra report noise
if(($dr['location'] !== z_root()) && ($dr['sender'] === $rxchan) && ($dr['status'] === 'recipient not found'))
return false;
// If you have a private post with a recipient list, every single site is going to report
// back a failed delivery for anybody on that list that isn't local to them. We're only
// concerned about this if we have a local hubloc record which says we expected them to
// have a channel on that site.
$r = q("select hubloc_id from hubloc where hubloc_hash = '%s' and hubloc_url = '%s'",
dbesc($rxchan),
dbesc($dr['location'])
);
if((! $r) && ($dr['status'] === 'recipient_not_found'))
return false;
$r = q("select abook_id from abook where abook_xchan = '%s' and abook_channel = %d limit 1",
dbesc($rxchan),
intval($c[0]['channel_id'])
);
if($r)
return true;
return false;
}
}
+35 -17
View File
@@ -754,9 +754,9 @@ class Enotify {
// generate a multipart/alternative message header
$messageHeader =
$params['additionalMailHeader'] .
"From: $fromName <{$params['fromEmail']}>\n" .
"Reply-To: $fromName <{$params['replyTo']}>\n" .
"MIME-Version: 1.0\n" .
"From: $fromName <{$params['fromEmail']}>" . PHP_EOL .
"Reply-To: $fromName <{$params['replyTo']}>" . PHP_EOL .
"MIME-Version: 1.0" . PHP_EOL .
"Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\"";
// assemble the final multipart message body with the text and html types included
@@ -764,15 +764,15 @@ class Enotify {
$htmlBody = chunk_split(base64_encode($params['htmlVersion']));
$multipartMessageBody =
"--" . $mimeBoundary . "\n" . // plain text section
"Content-Type: text/plain; charset=UTF-8\n" .
"Content-Transfer-Encoding: base64\n\n" .
$textBody . "\n" .
"--" . $mimeBoundary . "\n" . // text/html section
"Content-Type: text/html; charset=UTF-8\n" .
"Content-Transfer-Encoding: base64\n\n" .
$htmlBody . "\n" .
"--" . $mimeBoundary . "--\n"; // message ending
"--" . $mimeBoundary . PHP_EOL . // plain text section
"Content-Type: text/plain; charset=UTF-8" . PHP_EOL .
"Content-Transfer-Encoding: base64" . PHP_EOL . PHP_EOL .
$textBody . PHP_EOL .
"--" . $mimeBoundary . PHP_EOL . // text/html section
"Content-Type: text/html; charset=UTF-8" . PHP_EOL .
"Content-Transfer-Encoding: base64" . PHP_EOL . PHP_EOL .
$htmlBody . PHP_EOL .
"--" . $mimeBoundary . "--" . PHP_EOL; // message ending
// send the message
$res = mail(
@@ -807,6 +807,11 @@ class Enotify {
$itemem_text = (($item['item_thread_top'])
? t('created a new post')
: sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
if($item['verb'] === ACTIVITY_SHARE) {
$itemem_text = sprintf( t('repeated %s\'s post'), $item['author']['xchan_name']);
}
}
$edit = false;
@@ -825,19 +830,32 @@ class Enotify {
// convert this logic into a json array just like the system notifications
return array(
$who = (($item['verb'] === ACTIVITY_SHARE) ? 'owner' : 'author');
$x = array(
'notify_link' => $item['llink'],
'name' => $item['author']['xchan_name'],
'url' => $item['author']['xchan_url'],
'photo' => $item['author']['xchan_photo_s'],
'name' => $item[$who]['xchan_name'],
'addr' => (($item[$who]['xchan_addr']) ? $item[$who]['xchan_addr'] : $item[$who]['xchan_url']),
'url' => $item[$who]['xchan_url'],
'photo' => $item[$who]['xchan_photo_s'],
'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))
'message' => strip_tags(bbcode($itemem_text)),
// these are for the superblock addon
'hash' => $item[$who]['xchan_hash'],
'uid' => local_channel(),
'display' => true
);
call_hooks('enotify_format',$x);
if(! $x['display']) {
return [];
}
return $x;
}
}
+405
View File
@@ -0,0 +1,405 @@
<?php
namespace Zotlabs\Lib;
use Zotlabs\Lib\Libsync;
class Group {
static function add($uid,$name,$public = 0) {
$ret = false;
if(x($uid) && x($name)) {
$r = self::byname($uid,$name); // check for dups
if($r !== false) {
// This could be a problem.
// Let's assume we've just created a group which we once deleted
// all the old members are gone, but the group remains so we don't break any security
// access lists. What we're doing here is reviving the dead group, but old content which
// was restricted to this group may now be seen by the new group members.
$z = q("SELECT * FROM pgrp WHERE id = %d LIMIT 1",
intval($r)
);
if(($z) && $z[0]['deleted']) {
q('UPDATE pgrp SET deleted = 0 WHERE id = %d', intval($z[0]['id']));
notice( t('A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name.') . EOL);
}
return true;
}
do {
$dups = false;
$hash = random_string(32) . str_replace(['<','>'],['.','.'], $name);
$r = q("SELECT id FROM pgrp WHERE hash = '%s' LIMIT 1", dbesc($hash));
if($r)
$dups = true;
} while($dups == true);
$r = q("INSERT INTO pgrp ( hash, uid, visible, gname )
VALUES( '%s', %d, %d, '%s' ) ",
dbesc($hash),
intval($uid),
intval($public),
dbesc($name)
);
$ret = $r;
}
Libsync::build_sync_packet($uid,null,true);
return $ret;
}
static function remove($uid,$name) {
$ret = false;
if(x($uid) && x($name)) {
$r = q("SELECT id, hash FROM pgrp WHERE uid = %d AND gname = '%s' LIMIT 1",
intval($uid),
dbesc($name)
);
if($r) {
$group_id = $r[0]['id'];
$group_hash = $r[0]['hash'];
}
if(! $group_id)
return false;
// remove group from default posting lists
$r = q("SELECT channel_default_group, channel_allow_gid, channel_deny_gid FROM channel WHERE channel_id = %d LIMIT 1",
intval($uid)
);
if($r) {
$user_info = $r[0];
$change = false;
if($user_info['channel_default_group'] == $group_hash) {
$user_info['channel_default_group'] = '';
$change = true;
}
if(strpos($user_info['channel_allow_gid'], '<' . $group_hash . '>') !== false) {
$user_info['channel_allow_gid'] = str_replace('<' . $group_hash . '>', '', $user_info['channel_allow_gid']);
$change = true;
}
if(strpos($user_info['channel_deny_gid'], '<' . $group_hash . '>') !== false) {
$user_info['channel_deny_gid'] = str_replace('<' . $group_hash . '>', '', $user_info['channel_deny_gid']);
$change = true;
}
if($change) {
q("UPDATE channel SET channel_default_group = '%s', channel_allow_gid = '%s', channel_deny_gid = '%s'
WHERE channel_id = %d",
intval($user_info['channel_default_group']),
dbesc($user_info['channel_allow_gid']),
dbesc($user_info['channel_deny_gid']),
intval($uid)
);
}
}
// remove all members
$r = q("DELETE FROM pgrp_member WHERE uid = %d AND gid = %d ",
intval($uid),
intval($group_id)
);
// remove group
$r = q("UPDATE pgrp SET deleted = 1 WHERE uid = %d AND gname = '%s'",
intval($uid),
dbesc($name)
);
$ret = $r;
}
Libsync::build_sync_packet($uid,null,true);
return $ret;
}
static function byname($uid,$name) {
if((! $uid) || (! strlen($name)))
return false;
$r = q("SELECT * FROM pgrp WHERE uid = %d AND gname = '%s' LIMIT 1",
intval($uid),
dbesc($name)
);
if($r)
return $r[0]['id'];
return false;
}
static function rec_byhash($uid,$hash) {
if((! $uid) || (! strlen($hash)))
return false;
$r = q("SELECT * FROM pgrp WHERE uid = %d AND hash = '%s' LIMIT 1",
intval($uid),
dbesc($hash)
);
if($r)
return $r[0];
return false;
}
static function member_remove($uid,$name,$member) {
$gid = self::byname($uid,$name);
if(! $gid)
return false;
if(! ( $uid && $gid && $member))
return false;
$r = q("DELETE FROM pgrp_member WHERE uid = %d AND gid = %d AND xchan = '%s' ",
intval($uid),
intval($gid),
dbesc($member)
);
Libsync::build_sync_packet($uid,null,true);
return $r;
}
static function member_add($uid,$name,$member,$gid = 0) {
if(! $gid)
$gid = self::byname($uid,$name);
if((! $gid) || (! $uid) || (! $member))
return false;
$r = q("SELECT * FROM pgrp_member WHERE uid = %d AND gid = %d AND xchan = '%s' LIMIT 1",
intval($uid),
intval($gid),
dbesc($member)
);
if($r)
return true; // You might question this, but
// we indicate success because the group member was in fact created
// -- It was just created at another time
if(! $r)
$r = q("INSERT INTO pgrp_member (uid, gid, xchan)
VALUES( %d, %d, '%s' ) ",
intval($uid),
intval($gid),
dbesc($member)
);
Libsync::build_sync_packet($uid,null,true);
return $r;
}
static function members($gid) {
$ret = array();
if(intval($gid)) {
$r = q("SELECT * FROM pgrp_member
LEFT JOIN abook ON abook_xchan = pgrp_member.xchan left join xchan on xchan_hash = abook_xchan
WHERE gid = %d AND abook_channel = %d and pgrp_member.uid = %d and xchan_deleted = 0 and abook_self = 0 and abook_blocked = 0 and abook_pending = 0 ORDER BY xchan_name ASC ",
intval($gid),
intval(local_channel()),
intval(local_channel())
);
if($r)
$ret = $r;
}
return $ret;
}
static function members_xchan($gid) {
$ret = [];
if(intval($gid)) {
$r = q("SELECT xchan FROM pgrp_member WHERE gid = %d AND uid = %d",
intval($gid),
intval(local_channel())
);
if($r) {
foreach($r as $rr) {
$ret[] = $rr['xchan'];
}
}
}
return $ret;
}
static function members_profile_xchan($uid,$gid) {
$ret = [];
if(intval($gid)) {
$r = q("SELECT abook_xchan as xchan from abook left join profile on abook_profile = profile_guid where profile.id = %d and profile.uid = %d",
intval($gid),
intval($uid)
);
if($r) {
foreach($r as $rr) {
$ret[] = $rr['xchan'];
}
}
}
return $ret;
}
static function select($uid,$group = '') {
$grps = [];
$o = '';
$r = q("SELECT * FROM pgrp WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
intval($uid)
);
$grps[] = array('name' => '', 'hash' => '0', 'selected' => '');
if($r) {
foreach($r as $rr) {
$grps[] = array('name' => $rr['gname'], 'id' => $rr['hash'], 'selected' => (($group == $rr['hash']) ? 'true' : ''));
}
}
logger('select: ' . print_r($grps,true), LOGGER_DATA);
$o = replace_macros(get_markup_template('group_selection.tpl'), array(
'$label' => t('Add new connections to this privacy group'),
'$groups' => $grps
));
return $o;
}
static function widget($every="connections",$each="group",$edit = false, $group_id = 0, $cid = '',$mode = 1) {
$o = '';
if(! (local_channel() && feature_enabled(local_channel(),'groups'))) {
return '';
}
$groups = array();
$r = q("SELECT * FROM pgrp WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
intval($_SESSION['uid'])
);
$member_of = array();
if($cid) {
$member_of = self::containing(local_channel(),$cid);
}
if($r) {
foreach($r as $rr) {
$selected = (($group_id == $rr['id']) ? ' group-selected' : '');
if ($edit) {
$groupedit = [ 'href' => "group/".$rr['id'], 'title' => t('edit') ];
}
else {
$groupedit = null;
}
$groups[] = [
'id' => $rr['id'],
'enc_cid' => base64url_encode($cid),
'cid' => $cid,
'text' => $rr['gname'],
'selected' => $selected,
'href' => (($mode == 0) ? $each.'?f=&gid='.$rr['id'] : $each."/".$rr['id']) . ((x($_GET,'new')) ? '&new=' . $_GET['new'] : '') . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : ''),
'edit' => $groupedit,
'ismember' => in_array($rr['id'],$member_of),
];
}
}
$tpl = get_markup_template("group_side.tpl");
$o = replace_macros($tpl, array(
'$title' => t('Privacy Groups'),
'$edittext' => t('Edit group'),
'$createtext' => t('Add privacy group'),
'$ungrouped' => (($every === 'contacts') ? t('Channels not in any privacy group') : ''),
'$groups' => $groups,
'$add' => t('add'),
));
return $o;
}
static function expand($g) {
if(! (is_array($g) && count($g)))
return array();
$ret = [];
$x = [];
// private profile linked virtual groups
foreach($g as $gv) {
if(substr($gv,0,3) === 'vp.') {
$profile_hash = substr($gv,3);
if($profile_hash) {
$r = q("select abook_xchan from abook where abook_profile = '%s'",
dbesc($profile_hash)
);
if($r) {
foreach($r as $rv) {
$ret[] = $rv['abook_xchan'];
}
}
}
}
else {
$x[] = $gv;
}
}
if($x) {
stringify_array_elms($x,true);
$groups = implode(',', $x);
if($groups) {
$r = q("SELECT xchan FROM pgrp_member WHERE gid IN ( select id from pgrp where hash in ( $groups ))");
if($r) {
foreach($r as $rr) {
$ret[] = $rr['xchan'];
}
}
}
}
return $ret;
}
static function member_of($c) {
$r = q("SELECT pgrp.gname, pgrp.id FROM pgrp LEFT JOIN pgrp_member ON pgrp_member.gid = pgrp.id WHERE pgrp_member.xchan = '%s' AND pgrp.deleted = 0 ORDER BY pgrp.gname ASC ",
dbesc($c)
);
return $r;
}
static function containing($uid,$c) {
$r = q("SELECT gid FROM pgrp_member WHERE uid = %d AND pgrp_member.xchan = '%s' ",
intval($uid),
dbesc($c)
);
$ret = array();
if($r) {
foreach($r as $rr)
$ret[] = $rr['gid'];
}
return $ret;
}
}
+42 -8
View File
@@ -2,15 +2,13 @@
namespace Zotlabs\Lib;
use Zotlabs\Web\HTTPSig;
class JSalmon {
static function sign($data,$key_id,$key) {
static function sign($data,$key_id,$key,$data_type = 'application/x-zot+json') {
$arr = $data;
$data = json_encode($data,JSON_UNESCAPED_SLASHES);
$data = base64url_encode($data, false); // do not strip padding
$data_type = 'application/x-zot+json';
$data = base64url_encode(json_encode($data,true),true); // strip padding
$encoding = 'base64url';
$algorithm = 'RSA-SHA256';
@@ -18,9 +16,9 @@ class JSalmon {
// precomputed base64url encoding of data_type, encoding, algorithm concatenated with periods
$precomputed = '.' . base64url_encode($data_type,false) . '.YmFzZTY0dXJs.UlNBLVNIQTI1Ng==';
$precomputed = '.' . base64url_encode($data_type,true) . '.YmFzZTY0dXJs.UlNBLVNIQTI1Ng';
$signature = base64url_encode(rsa_sign($data . $precomputed, $key), false);
$signature = base64url_encode(rsa_sign($data . $precomputed, $key), true);
return ([
'signed' => true,
@@ -30,9 +28,45 @@ class JSalmon {
'alg' => $algorithm,
'sigs' => [
'value' => $signature,
'key_id' => base64url_encode($key_id)
'key_id' => base64url_encode($key_id, true)
]
]);
}
static function verify($x) {
logger('verify');
$ret = [ 'results' => [] ];
if(! is_array($x)) {
return $false;
}
if(! ( array_key_exists('signed',$x) && $x['signed'])) {
return $false;
}
$signed_data = preg_replace('/\s+/','',$x['data']) . '.'
. base64url_encode($x['data_type'],true) . '.'
. base64url_encode($x['encoding'],true) . '.'
. base64url_encode($x['alg'],true);
$key = HTTPSig::get_key(EMPTY_STR,base64url_decode($x['sigs']['key_id']));
logger('key: ' . print_r($key,true));
if($key['portable_id'] && $key['public_key']) {
if(rsa_verify($signed_data,base64url_decode($x['sigs']['value']),$key['public_key'])) {
logger('verified');
$ret = [ 'success' => true, 'signer' => $key['portable_id'], 'hubloc' => $key['hubloc'] ];
}
}
return $ret;
}
static function unpack($data) {
return json_decode(base64url_decode($data),true);
}
}
+4 -4
View File
@@ -29,8 +29,8 @@ class LDSignatures {
$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')
'creator' => z_root() . '/channel/' . $channel['channel_address'],
'created' => datetime_convert('UTC','UTC', 'now', 'Y-m-d\TH:i:s\Z')
];
$ohash = self::hash(self::signable_options($options));
@@ -124,7 +124,7 @@ class LDSignatures {
'meDataType' => $data_type,
'meEncoding' => $encoding,
'meAlgorithm' => $algorithm,
'meCreator' => z_root() . '/channel/' . $channel['channel_address'] . '/public_key_pem',
'meCreator' => z_root() . '/channel/' . $channel['channel_address'],
'meSignatureValue' => $signature
]);
@@ -132,4 +132,4 @@ class LDSignatures {
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+654
View File
@@ -0,0 +1,654 @@
<?php
namespace Zotlabs\Lib;
use Zotlabs\Lib\Libzot;
require_once('include/permissions.php');
class Libzotdir {
/**
* @brief
*
* @param int $dirmode
* @return array
*/
static function find_upstream_directory($dirmode) {
global $DIRECTORY_FALLBACK_SERVERS;
$preferred = get_config('system','directory_server');
// Thwart attempts to use a private directory
if(($preferred) && ($preferred != z_root())) {
$r = q("select * from site where site_url = '%s' limit 1",
dbesc($preferred)
);
if(($r) && ($r[0]['site_flags'] & DIRECTORY_MODE_STANDALONE)) {
$preferred = '';
}
}
if (! $preferred) {
/*
* No directory has yet been set. For most sites, pick one at random
* from our list of directory servers. However, if we're a directory
* server ourself, point at the local instance
* We will then set this value so this should only ever happen once.
* Ideally there will be an admin setting to change to a different
* directory server if you don't like our choice or if circumstances change.
*/
$dirmode = intval(get_config('system','directory_mode'));
if ($dirmode == DIRECTORY_MODE_NORMAL) {
$toss = mt_rand(0,count($DIRECTORY_FALLBACK_SERVERS));
$preferred = $DIRECTORY_FALLBACK_SERVERS[$toss];
if(! $preferred) {
$preferred = DIRECTORY_FALLBACK_MASTER;
}
set_config('system','directory_server',$preferred);
}
else {
set_config('system','directory_server',z_root());
}
}
if($preferred) {
return [ 'url' => $preferred ];
}
else {
return [];
}
}
/**
* Directories may come and go over time. We will need to check that our
* directory server is still valid occasionally, and reset to something that
* is if our directory has gone offline for any reason
*/
static function check_upstream_directory() {
$directory = get_config('system', 'directory_server');
// it's possible there is no directory server configured and the local hub is being used.
// If so, default to preserving the absence of a specific server setting.
$isadir = true;
if ($directory) {
$j = Zotfinger::exec($directory);
if(array_path_exists('data/directory_mode',$j)) {
if ($j['data']['directory_mode'] === 'normal') {
$isadir = false;
}
}
}
if (! $isadir)
set_config('system', 'directory_server', '');
}
static function get_directory_setting($observer, $setting) {
if ($observer)
$ret = get_xconfig($observer, 'directory', $setting);
else
$ret = ((array_key_exists($setting,$_SESSION)) ? intval($_SESSION[$setting]) : false);
if($ret === false)
$ret = get_config('directory', $setting);
// 'safemode' is the default if there is no observer or no established preference.
if($setting === 'safemode' && $ret === false)
$ret = 1;
if($setting === 'globaldir' && intval(get_config('system','localdir_hide')))
$ret = 1;
return $ret;
}
/**
* @brief Called by the directory_sort widget.
*/
static function dir_sort_links() {
$safe_mode = 1;
$observer = get_observer_hash();
$safe_mode = self::get_directory_setting($observer, 'safemode');
$globaldir = self::get_directory_setting($observer, 'globaldir');
$pubforums = self::get_directory_setting($observer, 'pubforums');
$hide_local = intval(get_config('system','localdir_hide'));
if($hide_local)
$globaldir = 1;
// Build urls without order and pubforums so it's easy to tack on the changed value
// Probably there's an easier way to do this
$directory_sort_order = get_config('system','directory_sort_order');
if(! $directory_sort_order)
$directory_sort_order = 'date';
$current_order = (($_REQUEST['order']) ? $_REQUEST['order'] : $directory_sort_order);
$suggest = (($_REQUEST['suggest']) ? '&suggest=' . $_REQUEST['suggest'] : '');
$url = 'directory?f=';
$tmp = array_merge($_GET,$_POST);
unset($tmp['suggest']);
unset($tmp['pubforums']);
unset($tmp['global']);
unset($tmp['safe']);
unset($tmp['q']);
unset($tmp['f']);
$forumsurl = $url . http_build_query($tmp) . $suggest;
$o = replace_macros(get_markup_template('dir_sort_links.tpl'), [
'$header' => t('Directory Options'),
'$forumsurl' => $forumsurl,
'$safemode' => array('safemode', t('Safe Mode'),$safe_mode,'',array(t('No'), t('Yes')),' onchange=\'window.location.href="' . $forumsurl . '&safe="+(this.checked ? 1 : 0)\''),
'$pubforums' => array('pubforums', t('Public Forums Only'),$pubforums,'',array(t('No'), t('Yes')),' onchange=\'window.location.href="' . $forumsurl . '&pubforums="+(this.checked ? 1 : 0)\''),
'$hide_local' => $hide_local,
'$globaldir' => array('globaldir', t('This Website Only'), 1-intval($globaldir),'',array(t('No'), t('Yes')),' onchange=\'window.location.href="' . $forumsurl . '&global="+(this.checked ? 0 : 1)\''),
]);
return $o;
}
/**
* @brief Checks the directory mode of this hub.
*
* Checks the directory mode of this hub to see if it is some form of directory server. If it is,
* get the directory realm of this hub. Fetch a list of all other directory servers in this realm and request
* a directory sync packet. This will contain both directory updates and new ratings. Store these all in the DB.
* In the case of updates, we will query each of them asynchronously from a poller task. Ratings are stored
* directly if the rater's signature matches.
*
* @param int $dirmode;
*/
static function sync_directories($dirmode) {
if ($dirmode == DIRECTORY_MODE_STANDALONE || $dirmode == DIRECTORY_MODE_NORMAL)
return;
$realm = get_directory_realm();
if ($realm == DIRECTORY_REALM) {
$r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_type = %d and ( site_realm = '%s' or site_realm = '') ",
intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
dbesc(z_root()),
intval(SITE_TYPE_ZOT),
dbesc($realm)
);
}
else {
$r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_realm like '%s' and site_type = %d ",
intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
dbesc(z_root()),
dbesc(protect_sprintf('%' . $realm . '%')),
intval(SITE_TYPE_ZOT)
);
}
// If there are no directory servers, setup the fallback master
/** @FIXME What to do if we're in a different realm? */
if ((! $r) && (z_root() != DIRECTORY_FALLBACK_MASTER)) {
$x = site_store_lowlevel(
[
'site_url' => DIRECTORY_FALLBACK_MASTER,
'site_flags' => DIRECTORY_MODE_PRIMARY,
'site_update' => NULL_DATE,
'site_directory' => DIRECTORY_FALLBACK_MASTER . '/dirsearch',
'site_realm' => DIRECTORY_REALM,
'site_valid' => 1,
]
);
$r = q("select * from site where site_flags in (%d, %d) and site_url != '%s' and site_type = %d ",
intval(DIRECTORY_MODE_PRIMARY),
intval(DIRECTORY_MODE_SECONDARY),
dbesc(z_root()),
intval(SITE_TYPE_ZOT)
);
}
if (! $r)
return;
foreach ($r as $rr) {
if (! $rr['site_directory'])
continue;
logger('sync directories: ' . $rr['site_directory']);
// for brand new directory servers, only load the last couple of days.
// It will take about a month for a new directory to obtain the full current repertoire of channels.
/** @FIXME Go back and pick up earlier ratings if this is a new directory server. These do not get refreshed. */
$token = get_config('system','realm_token');
$syncdate = (($rr['site_sync'] <= NULL_DATE) ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']);
$x = z_fetch_url($rr['site_directory'] . '?f=&sync=' . urlencode($syncdate) . (($token) ? '&t=' . $token : ''));
if (! $x['success'])
continue;
$j = json_decode($x['body'],true);
if (!($j['transactions']) || ($j['ratings']))
continue;
q("update site set site_sync = '%s' where site_url = '%s'",
dbesc(datetime_convert()),
dbesc($rr['site_url'])
);
logger('sync_directories: ' . $rr['site_url'] . ': ' . print_r($j,true), LOGGER_DATA);
if (is_array($j['transactions']) && count($j['transactions'])) {
foreach ($j['transactions'] as $t) {
$r = q("select * from updates where ud_guid = '%s' limit 1",
dbesc($t['transaction_id'])
);
if($r)
continue;
$ud_flags = 0;
if (is_array($t['flags']) && in_array('deleted',$t['flags']))
$ud_flags |= UPDATE_FLAGS_DELETED;
if (is_array($t['flags']) && in_array('forced',$t['flags']))
$ud_flags |= UPDATE_FLAGS_FORCED;
$z = q("insert into updates ( ud_hash, ud_guid, ud_date, ud_flags, ud_addr )
values ( '%s', '%s', '%s', %d, '%s' ) ",
dbesc($t['hash']),
dbesc($t['transaction_id']),
dbesc($t['timestamp']),
intval($ud_flags),
dbesc($t['address'])
);
}
}
}
}
/**
* @brief
*
* Given an update record, probe the channel, grab a zot-info packet and refresh/sync the data.
*
* Ignore updating records marked as deleted.
*
* If successful, sets ud_last in the DB to the current datetime for this
* reddress/webbie.
*
* @param array $ud Entry from update table
*/
static function update_directory_entry($ud) {
logger('update_directory_entry: ' . print_r($ud,true), LOGGER_DATA);
if ($ud['ud_addr'] && (! ($ud['ud_flags'] & UPDATE_FLAGS_DELETED))) {
$success = false;
$href = \Zotlabs\Lib\Webfinger::zot_url(punify($ud['ud_addr']));
if($href) {
$zf = \Zotlabs\Lib\Zotfinger::exec($href);
}
if(is_array($zf) && array_path_exists('signature/signer',$zf) && $zf['signature']['signer'] === $href && intval($zf['signature']['header_valid'])) {
$xc = Libzot::import_xchan($zf['data'], 0, $ud);
}
else {
q("update updates set ud_last = '%s' where ud_addr = '%s'",
dbesc(datetime_convert()),
dbesc($ud['ud_addr'])
);
}
}
}
/**
* @brief Push local channel updates to a local directory server.
*
* This is called from include/directory.php if a profile is to be pushed to the
* directory and the local hub in this case is any kind of directory server.
*
* @param int $uid
* @param boolean $force
*/
static function local_dir_update($uid, $force) {
logger('local_dir_update: uid: ' . $uid, LOGGER_DEBUG);
$p = q("select channel.channel_hash, channel_address, channel_timezone, profile.* from profile left join channel on channel_id = uid where uid = %d and is_default = 1",
intval($uid)
);
$profile = array();
$profile['encoding'] = 'zot';
if ($p) {
$hash = $p[0]['channel_hash'];
$profile['description'] = $p[0]['pdesc'];
$profile['birthday'] = $p[0]['dob'];
if ($age = age($p[0]['dob'],$p[0]['channel_timezone'],''))
$profile['age'] = $age;
$profile['gender'] = $p[0]['gender'];
$profile['marital'] = $p[0]['marital'];
$profile['sexual'] = $p[0]['sexual'];
$profile['locale'] = $p[0]['locality'];
$profile['region'] = $p[0]['region'];
$profile['postcode'] = $p[0]['postal_code'];
$profile['country'] = $p[0]['country_name'];
$profile['about'] = $p[0]['about'];
$profile['homepage'] = $p[0]['homepage'];
$profile['hometown'] = $p[0]['hometown'];
if ($p[0]['keywords']) {
$tags = array();
$k = explode(' ', $p[0]['keywords']);
if ($k)
foreach ($k as $kk)
if (trim($kk))
$tags[] = trim($kk);
if ($tags)
$profile['keywords'] = $tags;
}
$hidden = (1 - intval($p[0]['publish']));
logger('hidden: ' . $hidden);
$r = q("select xchan_hidden from xchan where xchan_hash = '%s' limit 1",
dbesc($p[0]['channel_hash'])
);
if(intval($r[0]['xchan_hidden']) != $hidden) {
$r = q("update xchan set xchan_hidden = %d where xchan_hash = '%s'",
intval($hidden),
dbesc($p[0]['channel_hash'])
);
}
$arr = [ 'channel_id' => $uid, 'hash' => $hash, 'profile' => $profile ];
call_hooks('local_dir_update', $arr);
$address = channel_reddress($p[0]);
if (perm_is_allowed($uid, '', 'view_profile')) {
self::import_directory_profile($hash, $arr['profile'], $address, 0);
}
else {
// they may have made it private
$r = q("delete from xprof where xprof_hash = '%s'",
dbesc($hash)
);
$r = q("delete from xtag where xtag_hash = '%s'",
dbesc($hash)
);
}
}
$ud_hash = random_string() . '@' . \App::get_hostname();
self::update_modtime($hash, $ud_hash, channel_reddress($p[0]),(($force) ? UPDATE_FLAGS_FORCED : UPDATE_FLAGS_UPDATED));
}
/**
* @brief Imports a directory profile.
*
* @param string $hash
* @param array $profile
* @param string $addr
* @param number $ud_flags (optional) UPDATE_FLAGS_UPDATED
* @param number $suppress_update (optional) default 0
* @return boolean $updated if something changed
*/
static function import_directory_profile($hash, $profile, $addr, $ud_flags = UPDATE_FLAGS_UPDATED, $suppress_update = 0) {
logger('import_directory_profile', LOGGER_DEBUG);
if (! $hash)
return false;
$arr = array();
$arr['xprof_hash'] = $hash;
$arr['xprof_dob'] = (($profile['birthday'] === '0000-00-00') ? $profile['birthday'] : datetime_convert('','',$profile['birthday'],'Y-m-d')); // !!!! check this for 0000 year
$arr['xprof_age'] = (($profile['age']) ? intval($profile['age']) : 0);
$arr['xprof_desc'] = (($profile['description']) ? htmlspecialchars($profile['description'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_gender'] = (($profile['gender']) ? htmlspecialchars($profile['gender'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_marital'] = (($profile['marital']) ? htmlspecialchars($profile['marital'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_sexual'] = (($profile['sexual']) ? htmlspecialchars($profile['sexual'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_locale'] = (($profile['locale']) ? htmlspecialchars($profile['locale'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_region'] = (($profile['region']) ? htmlspecialchars($profile['region'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_postcode'] = (($profile['postcode']) ? htmlspecialchars($profile['postcode'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_country'] = (($profile['country']) ? htmlspecialchars($profile['country'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_about'] = (($profile['about']) ? htmlspecialchars($profile['about'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_homepage'] = (($profile['homepage']) ? htmlspecialchars($profile['homepage'], ENT_COMPAT,'UTF-8',false) : '');
$arr['xprof_hometown'] = (($profile['hometown']) ? htmlspecialchars($profile['hometown'], ENT_COMPAT,'UTF-8',false) : '');
$clean = array();
if (array_key_exists('keywords', $profile) and is_array($profile['keywords'])) {
self::import_directory_keywords($hash,$profile['keywords']);
foreach ($profile['keywords'] as $kw) {
$kw = trim(htmlspecialchars($kw,ENT_COMPAT, 'UTF-8', false));
$kw = trim($kw, ',');
$clean[] = $kw;
}
}
$arr['xprof_keywords'] = implode(' ',$clean);
// Self censored, make it so
// These are not translated, so the German "erwachsenen" keyword will not censor the directory profile. Only the English form - "adult".
if(in_arrayi('nsfw',$clean) || in_arrayi('adult',$clean)) {
q("update xchan set xchan_selfcensored = 1 where xchan_hash = '%s'",
dbesc($hash)
);
}
$r = q("select * from xprof where xprof_hash = '%s' limit 1",
dbesc($hash)
);
if ($arr['xprof_age'] > 150)
$arr['xprof_age'] = 150;
if ($arr['xprof_age'] < 0)
$arr['xprof_age'] = 0;
if ($r) {
$update = false;
foreach ($r[0] as $k => $v) {
if ((array_key_exists($k,$arr)) && ($arr[$k] != $v)) {
logger('import_directory_profile: update ' . $k . ' => ' . $arr[$k]);
$update = true;
break;
}
}
if ($update) {
q("update xprof set
xprof_desc = '%s',
xprof_dob = '%s',
xprof_age = %d,
xprof_gender = '%s',
xprof_marital = '%s',
xprof_sexual = '%s',
xprof_locale = '%s',
xprof_region = '%s',
xprof_postcode = '%s',
xprof_country = '%s',
xprof_about = '%s',
xprof_homepage = '%s',
xprof_hometown = '%s',
xprof_keywords = '%s'
where xprof_hash = '%s'",
dbesc($arr['xprof_desc']),
dbesc($arr['xprof_dob']),
intval($arr['xprof_age']),
dbesc($arr['xprof_gender']),
dbesc($arr['xprof_marital']),
dbesc($arr['xprof_sexual']),
dbesc($arr['xprof_locale']),
dbesc($arr['xprof_region']),
dbesc($arr['xprof_postcode']),
dbesc($arr['xprof_country']),
dbesc($arr['xprof_about']),
dbesc($arr['xprof_homepage']),
dbesc($arr['xprof_hometown']),
dbesc($arr['xprof_keywords']),
dbesc($arr['xprof_hash'])
);
}
} else {
$update = true;
logger('New profile');
q("insert into xprof (xprof_hash, xprof_desc, xprof_dob, xprof_age, xprof_gender, xprof_marital, xprof_sexual, xprof_locale, xprof_region, xprof_postcode, xprof_country, xprof_about, xprof_homepage, xprof_hometown, xprof_keywords) values ('%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
dbesc($arr['xprof_hash']),
dbesc($arr['xprof_desc']),
dbesc($arr['xprof_dob']),
intval($arr['xprof_age']),
dbesc($arr['xprof_gender']),
dbesc($arr['xprof_marital']),
dbesc($arr['xprof_sexual']),
dbesc($arr['xprof_locale']),
dbesc($arr['xprof_region']),
dbesc($arr['xprof_postcode']),
dbesc($arr['xprof_country']),
dbesc($arr['xprof_about']),
dbesc($arr['xprof_homepage']),
dbesc($arr['xprof_hometown']),
dbesc($arr['xprof_keywords'])
);
}
$d = [
'xprof' => $arr,
'profile' => $profile,
'update' => $update
];
/**
* @hooks import_directory_profile
* Called when processing delivery of a profile structure from an external source (usually for directory storage).
* * \e array \b xprof
* * \e array \b profile
* * \e boolean \b update
*/
call_hooks('import_directory_profile', $d);
if (($d['update']) && (! $suppress_update))
self::update_modtime($arr['xprof_hash'],random_string() . '@' . \App::get_hostname(), $addr, $ud_flags);
return $d['update'];
}
/**
* @brief
*
* @param string $hash An xtag_hash
* @param array $keywords
*/
static function import_directory_keywords($hash, $keywords) {
$existing = array();
$r = q("select * from xtag where xtag_hash = '%s' and xtag_flags = 0",
dbesc($hash)
);
if($r) {
foreach($r as $rr)
$existing[] = $rr['xtag_term'];
}
$clean = array();
foreach($keywords as $kw) {
$kw = trim(htmlspecialchars($kw,ENT_COMPAT, 'UTF-8', false));
$kw = trim($kw, ',');
$clean[] = $kw;
}
foreach($existing as $x) {
if(! in_array($x, $clean))
$r = q("delete from xtag where xtag_hash = '%s' and xtag_term = '%s' and xtag_flags = 0",
dbesc($hash),
dbesc($x)
);
}
foreach($clean as $x) {
if(! in_array($x, $existing)) {
$r = q("insert into xtag ( xtag_hash, xtag_term, xtag_flags) values ( '%s' ,'%s', 0 )",
dbesc($hash),
dbesc($x)
);
}
}
}
/**
* @brief
*
* @param string $hash
* @param string $guid
* @param string $addr
* @param int $flags (optional) default 0
*/
static function update_modtime($hash, $guid, $addr, $flags = 0) {
$dirmode = intval(get_config('system', 'directory_mode'));
if($dirmode == DIRECTORY_MODE_NORMAL)
return;
if($flags) {
q("insert into updates (ud_hash, ud_guid, ud_date, ud_flags, ud_addr ) values ( '%s', '%s', '%s', %d, '%s' )",
dbesc($hash),
dbesc($guid),
dbesc(datetime_convert()),
intval($flags),
dbesc($addr)
);
}
else {
q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and not (ud_flags & %d)>0 ",
intval(UPDATE_FLAGS_UPDATED),
dbesc($addr),
intval(UPDATE_FLAGS_UPDATED)
);
}
}
}
+15 -1
View File
@@ -19,7 +19,7 @@ class MessageFilter {
$lang = null;
if((strpos($incl,'lang=') !== false) || (strpos($excl,'lang=') !== false)) {
if((strpos($incl,'lang=') !== false) || (strpos($excl,'lang=') !== false) || (strpos($incl,'lang!=') !== false) || (strpos($excl,'lang!=') !== false)) {
$lang = detect_language($text);
}
@@ -39,10 +39,17 @@ class MessageFilter {
if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
return false;
}
elseif(substr($word,0,1) === '$' && $tags) {
foreach($tags as $t)
if(($t['ttype'] == TERM_CATEGORY) && (($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((strpos($word,'lang!=') === 0) && ($lang) && (strcasecmp($lang,trim(substr($word,6))) != 0))
return false;
elseif(stristr($text,$word) !== false)
return false;
}
@@ -60,10 +67,17 @@ class MessageFilter {
if((($t['ttype'] == TERM_HASHTAG) || ($t['ttype'] == TERM_COMMUNITYTAG)) && (($t['term'] === substr($word,1)) || (substr($word,1) === '*')))
return true;
}
elseif(substr($word,0,1) === '$' && $tags) {
foreach($tags as $t)
if(($t['ttype'] == TERM_CATEGORY) && (($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((strpos($word,'lang!=') === 0) && ($lang) && (strcasecmp($lang,trim(substr($word,6))) != 0))
return true;
elseif(stristr($text,$word) !== false)
return true;
}
+39 -17
View File
@@ -26,7 +26,8 @@ class NativeWiki {
$w['rawName'] = get_iconfig($w, 'wiki', 'rawName');
$w['htmlName'] = escape_tags($w['rawName']);
$w['urlName'] = urlencode(urlencode($w['rawName']));
//$w['urlName'] = urlencode(urlencode($w['rawName']));
$w['urlName'] = self::name_encode($w['rawName']);
$w['mimeType'] = get_iconfig($w, 'wiki', 'mimeType');
$w['typelock'] = get_iconfig($w, 'wiki', 'typelock');
$w['lockstate'] = (($w['allow_cid'] || $w['allow_gid'] || $w['deny_cid'] || $w['deny_gid']) ? 'lock' : 'unlock');
@@ -39,26 +40,17 @@ class NativeWiki {
function create_wiki($channel, $observer_hash, $wiki, $acl) {
// Generate unique resource_id using the same method as item_message_id()
do {
$dups = false;
$resource_id = random_string();
$r = q("SELECT mid FROM item WHERE resource_id = '%s' AND resource_type = '%s' AND uid = %d LIMIT 1",
dbesc($resource_id),
dbesc(NWIKI_ITEM_RESOURCE_TYPE),
intval($channel['channel_id'])
);
if($r)
$dups = true;
} while($dups == true);
$resource_id = new_uuid();
$uuid = new_uuid();
$ac = $acl->get();
$mid = item_message_id();
$mid = z_root() . '/item/' . $uuid;
$arr = array(); // Initialize the array of parameters for the post
$item_hidden = ((intval($wiki['postVisible']) === 0) ? 1 : 0);
$wiki_url = z_root() . '/wiki/' . $channel['channel_address'] . '/' . $wiki['urlName'];
$arr['aid'] = $channel['channel_account_id'];
$arr['uuid'] = $uuid;
$arr['uid'] = $channel['channel_id'];
$arr['mid'] = $mid;
$arr['parent_mid'] = $mid;
@@ -199,7 +191,7 @@ class NativeWiki {
return array('item' => null, 'success' => false);
}
else {
$drop = drop_item($item['id'], false, DROPITEM_NORMAL, true);
$drop = drop_item($item['id'], false, DROPITEM_NORMAL);
}
info( t('Wiki files deleted successfully'));
@@ -233,7 +225,8 @@ class NativeWiki {
'wiki' => $w,
'rawName' => $rawName,
'htmlName' => escape_tags($rawName),
'urlName' => urlencode(urlencode($rawName)),
//'urlName' => urlencode(urlencode($rawName)),
'urlName' => self::name_encode($rawName),
'mimeType' => $mimeType,
'typelock' => $typelock
);
@@ -249,7 +242,8 @@ class NativeWiki {
WHERE resource_type = '%s' AND iconfig.v = '%s' AND uid = %d
AND item_deleted = 0 $sql_extra limit 1",
dbesc(NWIKI_ITEM_RESOURCE_TYPE),
dbesc(urldecode($urlName)),
//dbesc(urldecode($urlName)),
dbesc(self::name_decode($urlName)),
intval($uid)
);
@@ -286,4 +280,32 @@ class NativeWiki {
return array('read' => true, 'write' => $write, 'success' => true);
}
}
public static function name_encode ($string) {
$string = html_entity_decode($string);
$encoding = mb_internal_encoding();
mb_internal_encoding("UTF-8");
$ret = mb_ereg_replace_callback ('[^A-Za-z0-9\-\_\.\~]',function ($char) {
$charhex = unpack('H*',$char[0]);
$ret = '('.$charhex[1].')';
return $ret;
}
,$string);
mb_internal_encoding($encoding);
return $ret;
}
public static function name_decode ($string) {
$encoding = mb_internal_encoding();
mb_internal_encoding("UTF-8");
$ret = mb_ereg_replace_callback ('(\(([0-9a-f]+)\))',function ($chars) {
return pack('H*',$chars[2]);
}
,$string);
mb_internal_encoding($encoding);
return $ret;
}
}
+13 -7
View File
@@ -44,7 +44,8 @@ class NativeWikiPage {
$pages[] = [
'resource_id' => $resource_id,
'title' => escape_tags($title),
'url' => str_replace('%2F','/',urlencode(str_replace('%2F','/',urlencode($title)))),
//'url' => str_replace('%2F','/',urlencode(str_replace('%2F','/',urlencode($title)))),
'url' => Zlib\NativeWiki::name_encode($title),
'link_id' => 'id_' . substr($resource_id, 0, 10) . '_' . $page_item['id']
];
}
@@ -98,7 +99,8 @@ class NativeWikiPage {
$page = [
'rawName' => $name,
'htmlName' => escape_tags($name),
'urlName' => urlencode($name),
//'urlName' => urlencode($name),
'urlName' => Zlib\NativeWiki::name_encode($name)
];
@@ -154,7 +156,8 @@ class NativeWikiPage {
$page = [
'rawName' => $pageNewName,
'htmlName' => escape_tags($pageNewName),
'urlName' => urlencode(escape_tags($pageNewName))
//'urlName' => urlencode(escape_tags($pageNewName))
'urlName' => Zlib\NativeWiki::name_encode($pageNewName)
];
return [ 'success' => true, 'page' => $page ];
@@ -365,7 +368,6 @@ class NativeWikiPage {
unset($item['id']);
unset($item['author']);
$item['parent'] = 0;
$item['body'] = $content;
$item['author_xchan'] = $observer_hash;
@@ -527,7 +529,8 @@ class NativeWikiPage {
$pages = $pageURLs = array();
foreach ($match[1] as $m) {
// TODO: Why do we need to double urlencode for this to work?
$pageURLs[] = urlencode(urlencode(escape_tags($m)));
//$pageURLs[] = urlencode(urlencode(escape_tags($m)));
$pageURLs[] = Zlib\NativeWiki::name_encode(escape_tags($m));
$pages[] = $m;
}
$idx = 0;
@@ -556,7 +559,10 @@ class NativeWikiPage {
'$pageHistory' => $pageHistory['history'],
'$permsWrite' => $arr['permsWrite'],
'$name_lbl' => t('Name'),
'$msg_label' => t('Message','wiki_history')
'$msg_label' => t('Message','wiki_history'),
'$date_lbl' => t('Date'),
'$revert_btn' => t('Revert'),
'$compare_btn' => t('Compare')
));
}
@@ -613,7 +619,7 @@ class NativeWikiPage {
$s = str_replace('[observer.webname]', '', $s);
$s = str_replace('[observer.photo]', '', $s);
}
return $s;
}
+93 -16
View File
@@ -57,6 +57,7 @@ class PConfig {
\App::$config[$uid][$c]['config_loaded'] = true;
}
\App::$config[$uid][$c][$k] = $rr['v'];
\App::$config[$uid][$c]['pcfgud:'.$k] = $rr['updated'];
}
}
}
@@ -111,9 +112,11 @@ class PConfig {
* The configuration key to set
* @param string $value
* The value to store
* @param string $updated (optional)
* The datetime to store
* @return mixed Stored $value or false
*/
static public function Set($uid, $family, $key, $value) {
static public function Set($uid, $family, $key, $value, $updated = NULL) {
// this catches subtle errors where this function has been called
// with local_channel() when not logged in (which returns false)
@@ -130,29 +133,79 @@ class PConfig {
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
$now = datetime_convert();
if (! $updated) {
//Sometimes things happen fast... very fast.
//To make sure legitimate updates aren't rejected
//because not enough time has passed. We say our updates
//happened just a short time in the past rather than right now.
$updated = datetime_convert('UTC','UTC','-2 seconds');
}
$hash = hash('sha256',$family.':'.$key);
if (self::Get($uid, 'hz_delpconfig', $hash) !== false) {
if (self::Get($uid, 'hz_delpconfig', $hash) > $now) {
logger('Refusing to update pconfig with outdated info (Item deleted more recently).', LOGGER_NORMAL, LOG_ERR);
return self::Get($uid,$family,$key);
} else {
self::Delete($uid,'hz_delpconfig',$hash);
}
}
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]))
\App::$config[$uid][$family] = array();
$ret = q("INSERT INTO pconfig ( uid, cat, k, v ) VALUES ( %d, '%s', '%s', '%s' ) ",
$ret = q("INSERT INTO pconfig ( uid, cat, k, v, updated ) VALUES ( %d, '%s', '%s', '%s', '%s' ) ",
intval($uid),
dbesc($family),
dbesc($key),
dbesc($dbvalue)
dbesc($dbvalue),
dbesc($updated)
);
// There is a possible race condition if another process happens
// to insert something after this thread has Loaded and now. We should
// at least make a note of it if it happens.
if (!$ret) {
logger("Error: Insert to pconfig failed.",LOGGER_NORMAL, LOG_ERR);
}
\App::$config[$uid][$family]['pcfgud:'.$key] = $updated;
}
else {
$new = (\App::$config[$uid][$family]['pcfgud:'.$key] < $now);
$ret = q("UPDATE pconfig SET v = '%s' WHERE uid = %d and cat = '%s' AND k = '%s'",
dbesc($dbvalue),
intval($uid),
dbesc($family),
dbesc($key)
);
if ($new) {
// @NOTE There is still a possible race condition under limited circumstances
// where a value will be updated by another thread with more current data than
// we have. At this point there is no easy way to test for it, so we update
// and hope for the best.
$ret = q("UPDATE pconfig SET v = '%s', updated = '%s' WHERE uid = %d and cat = '%s' AND k = '%s' ",
dbesc($dbvalue),
dbesc($updated),
intval($uid),
dbesc($family),
dbesc($key)
);
\App::$config[$uid][$family]['pcfgud:'.$key] = $updated;
} else {
logger('Refusing to update pconfig with outdated info.', LOGGER_NORMAL, LOG_ERR);
return self::Get($uid, $family, $key);
}
}
// keep a separate copy for all variables which were
// set in the life of this page. We need this to
// synchronise channel clones.
@@ -163,7 +216,11 @@ class PConfig {
\App::$config[$uid]['transient'][$family] = array();
\App::$config[$uid][$family][$key] = $value;
\App::$config[$uid]['transient'][$family][$key] = $value;
if ($new) {
\App::$config[$uid]['transient'][$family][$key] = $value;
\App::$config[$uid]['transient'][$family]['pcfgud:'.$key] = $updated;
}
if($ret)
return $value;
@@ -184,20 +241,33 @@ class PConfig {
* The category of the configuration value
* @param string $key
* The configuration key to delete
* @return mixed
* @param string $updated (optional)
* The datetime to store
* @return boolean
*/
static public function Delete($uid, $family, $key) {
static public function Delete($uid, $family, $key, $updated = NULL) {
if(is_null($uid) || $uid === false)
return false;
$updated = ($updated) ? $updated : datetime_convert('UTC','UTC','-2 seconds');
$now = datetime_convert();
$newer = (\App::$config[$uid][$family]['pcfgud:'.$key] < $now);
if (! $newer) {
logger('Refusing to delete pconfig with outdated delete request.', LOGGER_NORMAL, LOG_ERR);
return false;
}
$ret = false;
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]))
if (isset(\App::$config[$uid][$family][$key])) {
unset(\App::$config[$uid][$family][$key]);
}
if (isset(\App::$config[$uid][$family]['pcfgud:'.$key])) {
unset(\App::$config[$uid][$family]['pcfgud:'.$key]);
}
$ret = q("DELETE FROM pconfig WHERE uid = %d AND cat = '%s' AND k = '%s'",
intval($uid),
@@ -205,6 +275,13 @@ class PConfig {
dbesc($key)
);
// Synchronize delete with clones.
if ($family != 'hz_delpconfig') {
$hash = hash('sha256',$family.':'.$key);
set_pconfig($uid,'hz_delpconfig',$hash,$updated);
}
return $ret;
}
+278
View File
@@ -0,0 +1,278 @@
<?php /** @file */
namespace Zotlabs\Lib;
use Zotlabs\Lib\Libzot;
class Queue {
static function update($id, $add_priority = 0) {
logger('queue: requeue item ' . $id,LOGGER_DEBUG);
$x = q("select outq_created, outq_posturl from outq where outq_hash = '%s' limit 1",
dbesc($id)
);
if(! $x)
return;
$y = q("select min(outq_created) as earliest from outq where outq_posturl = '%s'",
dbesc($x[0]['outq_posturl'])
);
// look for the oldest queue entry with this destination URL. If it's older than a couple of days,
// the destination is considered to be down and only scheduled once an hour, regardless of the
// age of the current queue item.
$might_be_down = false;
if($y)
$might_be_down = ((datetime_convert('UTC','UTC',$y[0]['earliest']) < datetime_convert('UTC','UTC','now - 2 days')) ? true : false);
// Set all other records for this destination way into the future.
// The queue delivers by destination. We'll keep one queue item for
// this destination (this one) with a shorter delivery. If we succeed
// once, we'll try to deliver everything for that destination.
// The delivery will be set to at most once per hour, and if the
// queue item is less than 12 hours old, we'll schedule for fifteen
// minutes.
$r = q("UPDATE outq SET outq_scheduled = '%s' WHERE outq_posturl = '%s'",
dbesc(datetime_convert('UTC','UTC','now + 5 days')),
dbesc($x[0]['outq_posturl'])
);
$since = datetime_convert('UTC','UTC',$x[0]['outq_created']);
if(($might_be_down) || ($since < datetime_convert('UTC','UTC','now - 12 hour'))) {
$next = datetime_convert('UTC','UTC','now + 1 hour');
}
else {
$next = datetime_convert('UTC','UTC','now + ' . intval($add_priority) . ' minutes');
}
q("UPDATE outq SET outq_updated = '%s',
outq_priority = outq_priority + %d,
outq_scheduled = '%s'
WHERE outq_hash = '%s'",
dbesc(datetime_convert()),
intval($add_priority),
dbesc($next),
dbesc($id)
);
}
static function remove($id,$channel_id = 0) {
logger('queue: remove queue item ' . $id,LOGGER_DEBUG);
$sql_extra = (($channel_id) ? " and outq_channel = " . intval($channel_id) . " " : '');
q("DELETE FROM outq WHERE outq_hash = '%s' $sql_extra",
dbesc($id)
);
}
static function remove_by_posturl($posturl) {
logger('queue: remove queue posturl ' . $posturl,LOGGER_DEBUG);
q("DELETE FROM outq WHERE outq_posturl = '%s' ",
dbesc($posturl)
);
}
static function set_delivered($id,$channel = 0) {
logger('queue: set delivered ' . $id,LOGGER_DEBUG);
$sql_extra = (($channel_id) ? " and outq_channel = " . intval($channel_id) . " " : '');
// Set the next scheduled run date so far in the future that it will be expired
// long before it ever makes it back into the delivery chain.
q("update outq set outq_delivered = 1, outq_updated = '%s', outq_scheduled = '%s' where outq_hash = '%s' $sql_extra ",
dbesc(datetime_convert()),
dbesc(datetime_convert('UTC','UTC','now + 5 days')),
dbesc($id)
);
}
static function insert($arr) {
// do not queue anything with no destination
if(! (array_key_exists('posturl',$arr) && trim($arr['posturl']))) {
return false;
}
$x = q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_priority,
outq_created, outq_updated, outq_scheduled, outq_notify, outq_msg )
values ( '%s', %d, %d, '%s', '%s', %d, %d, '%s', '%s', '%s', '%s', '%s' )",
dbesc($arr['hash']),
intval($arr['account_id']),
intval($arr['channel_id']),
dbesc(($arr['driver']) ? $arr['driver'] : 'zot'),
dbesc($arr['posturl']),
intval(1),
intval(($arr['priority']) ? $arr['priority'] : 0),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc($arr['notify']),
dbesc(($arr['msg']) ? $arr['msg'] : '')
);
return $x;
}
static function deliver($outq, $immediate = false) {
$base = null;
$h = parse_url($outq['outq_posturl']);
if($h !== false)
$base = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : '');
if(($base) && ($base !== z_root()) && ($immediate)) {
$y = q("select site_update, site_dead from site where site_url = '%s' ",
dbesc($base)
);
if($y) {
if(intval($y[0]['site_dead'])) {
self::remove_by_posturl($outq['outq_posturl']);
logger('dead site ignored ' . $base);
return;
}
if($y[0]['site_update'] < datetime_convert('UTC','UTC','now - 1 month')) {
self::update($outq['outq_hash'],10);
logger('immediate delivery deferred for site ' . $base);
return;
}
}
else {
// zot sites should all have a site record, unless they've been dead for as long as
// your site has existed. Since we don't know for sure what these sites are,
// call them unknown
site_store_lowlevel(
[
'site_url' => $base,
'site_update' => datetime_convert(),
'site_dead' => 0,
'site_type' => intval(($outq['outq_driver'] === 'post') ? SITE_TYPE_NOTZOT : SITE_TYPE_UNKNOWN),
'site_crypto' => ''
]
);
}
}
$arr = array('outq' => $outq, 'base' => $base, 'handled' => false, 'immediate' => $immediate);
call_hooks('queue_deliver',$arr);
if($arr['handled'])
return;
// "post" queue driver - used for diaspora and friendica-over-diaspora communications.
if($outq['outq_driver'] === 'post') {
$result = z_post_url($outq['outq_posturl'],$outq['outq_msg']);
if($result['success'] && $result['return_code'] < 300) {
logger('deliver: queue post success to ' . $outq['outq_posturl'], LOGGER_DEBUG);
if($base) {
q("update site set site_update = '%s', site_dead = 0 where site_url = '%s' ",
dbesc(datetime_convert()),
dbesc($base)
);
}
q("update dreport set dreport_result = '%s', dreport_time = '%s' where dreport_queue = '%s'",
dbesc('accepted for delivery'),
dbesc(datetime_convert()),
dbesc($outq['outq_hash'])
);
self::remove($outq['outq_hash']);
// server is responding - see if anything else is going to this destination and is piled up
// and try to send some more. We're relying on the fact that do_delivery() results in an
// immediate delivery otherwise we could get into a queue loop.
if(! $immediate) {
$x = q("select outq_hash from outq where outq_posturl = '%s' and outq_delivered = 0",
dbesc($outq['outq_posturl'])
);
$piled_up = array();
if($x) {
foreach($x as $xx) {
$piled_up[] = $xx['outq_hash'];
}
}
if($piled_up) {
// call do_delivery() with the force flag
do_delivery($piled_up, true);
}
}
}
else {
logger('deliver: queue post returned ' . $result['return_code']
. ' from ' . $outq['outq_posturl'],LOGGER_DEBUG);
self::update($outq['outq_hash'],10);
}
return;
}
// normal zot delivery
logger('deliver: dest: ' . $outq['outq_posturl'], LOGGER_DEBUG);
if($outq['outq_posturl'] === z_root() . '/zot') {
// local delivery
$zot = new \Zotlabs\Zot6\Receiver(new \Zotlabs\Zot6\Zot6Handler(),$outq['outq_notify']);
$result = $zot->run(true);
logger('returned_json: ' . json_encode($result,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES), LOGGER_DATA);
logger('deliver: local zot delivery succeeded to ' . $outq['outq_posturl']);
Libzot::process_response($outq['outq_posturl'],[ 'success' => true, 'body' => json_encode($result) ], $outq);
}
else {
logger('remote');
$channel = null;
if($outq['outq_channel']) {
$channel = channelx_by_n($outq['outq_channel']);
}
$host_crypto = null;
if($channel && $base) {
$h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' and hubloc_sitekey != '' order by hubloc_id desc limit 1",
dbesc($base)
);
if($h) {
$host_crypto = $h[0];
}
}
$msg = $outq['outq_notify'];
$result = Libzot::zot($outq['outq_posturl'],$msg,$channel,$host_crypto);
if($result['success']) {
logger('deliver: remote zot delivery succeeded to ' . $outq['outq_posturl']);
Libzot::process_response($outq['outq_posturl'],$result, $outq);
}
else {
logger('deliver: remote zot delivery failed to ' . $outq['outq_posturl']);
logger('deliver: remote zot delivery fail data: ' . print_r($result,true), LOGGER_DATA);
self::update($outq['outq_hash'],10);
}
}
return;
}
}
+1
View File
@@ -54,6 +54,7 @@ class Share {
if(! $this->item)
return $obj;
$obj['asld'] = $this->item['mid'];
$obj['type'] = $this->item['obj_type'];
$obj['id'] = $this->item['mid'];
$obj['content'] = $this->item['body'];
+150
View File
@@ -0,0 +1,150 @@
<?php
namespace Zotlabs\Lib;
use DomDocument;
/**
* SVGSantiizer
*
* Whitelist-based PHP SVG sanitizer.
*
* @link https://github.com/alister-/SVG-Sanitizer}
* @author Alister Norris
* @copyright Copyright (c) 2013 Alister Norris
* @license http://opensource.org/licenses/mit-license.php The MIT License
* @package svgsanitizer
*/
class SvgSanitizer {
private $xmlDoc; // PHP XML DOMDocument
private $removedattrs = [];
private static $allowed_functions = [ 'matrix', 'url', 'translate', 'rgb' ];
// defines the whitelist of elements and attributes allowed.
private static $whitelist = [
'a' => [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'href', 'xlink:href', 'xlink:title' ],
'circle' => [ 'class', 'clip-path', 'clip-rule', 'cx', 'cy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'r', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
'clipPath' => [ 'class', 'clipPathUnits', 'id' ],
'defs' => [ ],
'style' => [ 'type' ],
'desc' => [ ],
'ellipse' => [ 'class', 'clip-path', 'clip-rule', 'cx', 'cy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'mask', 'opacity', 'requiredFeatures', 'rx', 'ry', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
'feGaussianBlur' => [ 'class', 'color-interpolation-filters', 'id', 'requiredFeatures', 'stdDeviation' ],
'filter' => [ 'class', 'color-interpolation-filters', 'filterRes', 'filterUnits', 'height', 'id', 'primitiveUnits', 'requiredFeatures', 'width', 'x', 'xlink:href', 'y' ],
'foreignObject' => [ 'class', 'font-size', 'height', 'id', 'opacity', 'requiredFeatures', 'style', 'transform', 'width', 'x', 'y' ],
'g' => [ 'class', 'clip-path', 'clip-rule', 'id', 'display', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'font-family', 'font-size', 'font-style', 'font-weight', 'text-anchor' ],
'image' => [ 'class', 'clip-path', 'clip-rule', 'filter', 'height', 'id', 'mask', 'opacity', 'requiredFeatures', 'style', 'systemLanguage', 'transform', 'width', 'x', 'xlink:href', 'xlink:title', 'y' ],
'line' => [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'x1', 'x2', 'y1', 'y2' ],
'linearGradient' => [ 'class', 'id', 'gradientTransform', 'gradientUnits', 'requiredFeatures', 'spreadMethod', 'systemLanguage', 'x1', 'x2', 'xlink:href', 'y1', 'y2' ],
'marker' => [ 'id', 'class', 'markerHeight', 'markerUnits', 'markerWidth', 'orient', 'preserveAspectRatio', 'refX', 'refY', 'systemLanguage', 'viewBox' ],
'mask' => [ 'class', 'height', 'id', 'maskContentUnits', 'maskUnits', 'width', 'x', 'y' ],
'metadata' => [ 'class', 'id' ],
'path' => [ 'class', 'clip-path', 'clip-rule', 'd', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
'pattern' => [ 'class', 'height', 'id', 'patternContentUnits', 'patternTransform', 'patternUnits', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xlink:href', 'y' ],
'polygon' => [ 'class', 'clip-path', 'clip-rule', 'id', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'id', 'class', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'points', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
'polyline' => [ 'class', 'clip-path', 'clip-rule', 'id', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'marker-end', 'marker-mid', 'marker-start', 'mask', 'opacity', 'points', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform' ],
'radialGradient' => [ 'class', 'cx', 'cy', 'fx', 'fy', 'gradientTransform', 'gradientUnits', 'id', 'r', 'requiredFeatures', 'spreadMethod', 'systemLanguage', 'xlink:href' ],
'rect' => [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'height', 'id', 'mask', 'opacity', 'requiredFeatures', 'rx', 'ry', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'width', 'x', 'y' ],
'stop' => [ 'class', 'id', 'offset', 'requiredFeatures', 'stop-color', 'stop-opacity', 'style', 'systemLanguage' ],
'svg' => [ 'class', 'clip-path', 'clip-rule', 'filter', 'id', 'height', 'mask', 'preserveAspectRatio', 'requiredFeatures', 'style', 'systemLanguage', 'viewBox', 'width', 'x', 'xmlns', 'xmlns:se', 'xmlns:xlink', 'y' ],
'switch' => [ 'class', 'id', 'requiredFeatures', 'systemLanguage' ],
'symbol' => [ 'class', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'opacity', 'preserveAspectRatio', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'transform', 'viewBox' ],
'text' => [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'mask', 'opacity', 'requiredFeatures', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'text-anchor', 'transform', 'x', 'xml:space', 'y' ],
'textPath' => [ 'class', 'id', 'method', 'requiredFeatures', 'spacing', 'startOffset', 'style', 'systemLanguage', 'transform', 'xlink:href' ],
'title' => [ ],
'tspan' => [ 'class', 'clip-path', 'clip-rule', 'dx', 'dy', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'font-family', 'font-size', 'font-style', 'font-weight', 'id', 'mask', 'opacity', 'requiredFeatures', 'rotate', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'systemLanguage', 'text-anchor', 'textLength', 'transform', 'x', 'xml:space', 'y' ],
'use' => [ 'class', 'clip-path', 'clip-rule', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'height', 'id', 'mask', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'style', 'transform', 'width', 'x', 'xlink:href', 'y' ],
];
function __construct() {
$this->xmlDoc = new DOMDocument('1.0','UTF-8');
$this->xmlDoc->preserveWhiteSpace = false;
libxml_use_internal_errors(true);
}
// load XML SVG
function load($file) {
$this->xmlDoc->load($file);
}
function loadXML($str) {
if (! $this->xmlDoc->loadXML($str)) {
logger('loadxml: ' . print_r(libxml_get_errors(),true), LOGGER_DEBUG);
return false;
}
return true;
}
function sanitize()
{
// all elements in xml doc
$allElements = $this->xmlDoc->getElementsByTagName('*');
// loop through all elements
for($i = 0; $i < $allElements->length; $i++)
{
$this->removedattrs = [];
$currentNode = $allElements->item($i);
// logger('current_node: ' . print_r($currentNode,true));
// array of allowed attributes in specific element
$whitelist_attr_arr = self::$whitelist[$currentNode->tagName];
// does element exist in whitelist?
if(isset($whitelist_attr_arr)) {
$total = $currentNode->attributes->length;
for($x = 0; $x < $total; $x++) {
// get attributes name
$attrName = $currentNode->attributes->item($x)->nodeName;
// logger('checking: ' . print_r($currentNode->attributes->item($x),true));
$matches = false;
// check if attribute isn't in whitelist
if(! in_array($attrName, $whitelist_attr_arr)) {
$this->removedattrs[] = $attrName;
}
// check for disallowed functions
elseif (preg_match_all('/([a-zA-Z0-9]+)[\s]*\(/',
$currentNode->attributes->item($x)->textContent,$matches,PREG_SET_ORDER)) {
if ($attrName === 'text') {
continue;
}
foreach ($matches as $match) {
if(! in_array($match[1],self::$allowed_functions)) {
logger('queue_remove_function: ' . $match[1],LOGGER_DEBUG);
$this->removedattrs[] = $attrName;
}
}
}
}
if ($this->removedattrs) {
foreach ($this->removedattrs as $attr) {
$currentNode->removeAttribute($attr);
logger('removed: ' . $attr, LOGGER_DEBUG);
}
}
}
// else remove element
else {
logger('remove_node: ' . print_r($currentNode,true));
$currentNode->parentNode->removeChild($currentNode);
}
}
return true;
}
function saveSVG() {
$this->xmlDoc->formatOutput = true;
return($this->xmlDoc->saveXML());
}
}
+63 -28
View File
@@ -2,6 +2,8 @@
namespace Zotlabs\Lib;
use Zotlabs\Lib\Apps;
require_once('include/text.php');
/**
@@ -36,6 +38,9 @@ class ThreadItem {
$this->data = $data;
$this->toplevel = ($this->get_id() == $this->get_data_value('parent'));
$this->threaded = get_config('system','thread_allow');
$observer = \App::get_observer();
// Prepare the children
if($data['children']) {
@@ -49,6 +54,7 @@ class ThreadItem {
continue;
}
$child = new ThreadItem($item);
$this->add_child($child);
}
@@ -71,7 +77,7 @@ class ThreadItem {
* _ false on failure
*/
public function get_template_data($conv_responses, $thread_level=1) {
public function get_template_data($conv_responses, $thread_level=1, $conv_flags = []) {
$result = array();
@@ -92,10 +98,11 @@ class ThreadItem {
$conv = $this->get_conversation();
$observer = $conv->get_observer();
$lock = ((($item['item_private'] == 1) || (($item['uid'] == local_channel()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
$lock = (((intval($item['item_private'])) || (($item['uid'] == local_channel()) && (strlen($item['allow_cid']) || strlen($item['allow_gid'])
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? t('Private Message')
: false);
$shareable = ((($conv->get_profile_owner() == local_channel() && local_channel()) && ($item['item_private'] != 1)) ? true : false);
// allow an exemption for sharing stuff from your private feeds
@@ -103,13 +110,26 @@ class ThreadItem {
$shareable = true;
$privacy_warning = false;
if(($item['item_private'] == 1) && ($item['owner']['xchan_network'] === 'activitypub')) {
if(intval($item['item_private']) && ($item['owner']['xchan_network'] === 'activitypub')) {
$recips = get_iconfig($item['parent'], 'activitypub', 'recips');
if(! in_array($observer['xchan_url'], $recips['to']))
$privacy_warning = true;
}
if ($lock) {
if (($item['mid'] == $item['parent_mid']) && count(get_terms_oftype($item['term'],TERM_FORUM))) {
$privacy_warning = true;
$conv_flags['parent_privacy_warning'] = true;
}
}
$privacy_warning = (isset($conv_flags['parent_privacy_warning'])) ? $conv_flags['parent_privacy_warning'] : $privacy_warning;
if ($lock && $privacy_warning) {
$lock = t('Privacy conflict. Discretion advised.');
}
$mode = $conv->get_mode();
switch($item['item_type']) {
@@ -259,7 +279,7 @@ class ThreadItem {
$forged = ((($item['sig']) && (! intval($item['item_verified']))) ? t('Message signature incorrect') : '');
$unverified = '' ; // (($this->is_wall_to_wall() && (! intval($item['item_verified']))) ? t('Message cannot be verified') : '');
$settings = '';
// FIXME - check this permission
if($conv->get_profile_owner() == local_channel()) {
@@ -267,12 +287,14 @@ class ThreadItem {
'tagit' => t("Add Tag"),
'classtagger' => "",
);
$settings = t('Conversation Tools');
}
$has_bookmarks = false;
if(is_array($item['term'])) {
if(Apps::system_app_installed(local_channel(), 'Bookmarks') && is_array($item['term'])) {
foreach($item['term'] as $t) {
if((get_account_techlevel() > 0) && ($t['ttype'] == TERM_BOOKMARK))
if(($t['ttype'] == TERM_BOOKMARK))
$has_bookmarks = true;
}
}
@@ -284,10 +306,18 @@ class ThreadItem {
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"));
$reply_to = array( t("Reply on this comment"), t("reply"), t("Reply to"));
}
if ($shareable)
$share = array( t('Share This'), t('share'));
if ($shareable) {
// This actually turns out not to be possible in some protocol stacks without opening up hundreds of new issues.
// Will allow it only for uri resolvable sources.
if(strpos($item['mid'],'http') === 0) {
$share = []; //Not yet ready for primetime
//$share = array( t('Repeat This'), t('repeat'));
}
$embed = array( t('Share This'), t('share'));
}
$dreport = '';
@@ -295,13 +325,14 @@ class ThreadItem {
if($keep_reports === 0)
$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)
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');
$dreport_link = gen_link_id($item['mid']);
}
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
$is_new = true;
localize_item($item);
$body = prepare_body($item,true);
@@ -312,19 +343,19 @@ class ThreadItem {
$owner_address = substr($item['owner']['xchan_addr'],0,strpos($item['owner']['xchan_addr'],'@'));
$viewthread = $item['llink'];
if($conv->get_mode() === 'channel')
$viewthread = z_root() . '/channel/' . $owner_address . '?f=&mid=' . urlencode($item['mid']);
$viewthread = z_root() . '/channel/' . $owner_address . '?f=&mid=' . urlencode(gen_link_id($item['mid']));
$comment_count_txt = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
$list_unseen_txt = (($unseen_comments) ? sprintf('%d unseen',$unseen_comments) : '');
$children = $this->get_children();
$has_tags = (($body['tags'] || $body['categories'] || $body['mentions'] || $body['attachments'] || $body['folders']) ? true : false);
$dropdown_extras_arr = [ 'item' => $item , 'dropdown_extras' => '' ];
call_hooks('dropdown_extras',$dropdown_extras_arr);
$dropdown_extras = $dropdown_extras_arr['dropdown_extras'];
$tmp_item = array(
'template' => $this->get_template(),
'mode' => $mode,
@@ -339,13 +370,15 @@ class ThreadItem {
'text' => strip_tags($body['html']),
'id' => $this->get_id(),
'mid' => $item['mid'],
'parent' => $item['parent'],
'author_id' => (($item['author']['xchan_addr']) ? $item['author']['xchan_addr'] : $item['author']['xchan_url']),
'isevent' => $isevent,
'attend' => $attend,
'consensus' => $consensus,
'conlabels' => $conlabels,
'canvote' => $canvote,
'linktitle' => sprintf( t('View %s\'s profile - %s'), $profile_name, $item['author']['xchan_addr']),
'olinktitle' => sprintf( t('View %s\'s profile - %s'), $this->get_owner_name(), $item['owner']['xchan_addr']),
'linktitle' => sprintf( t('View %s\'s profile - %s'), $profile_name, (($item['author']['xchan_addr']) ? $item['author']['xchan_addr'] : $item['author']['xchan_url'])),
'olinktitle' => sprintf( t('View %s\'s profile - %s'), $this->get_owner_name(), (($item['owner']['xchan_addr']) ? $item['owner']['xchan_addr'] : $item['owner']['xchan_url'])),
'llink' => $item['llink'],
'viewthread' => $viewthread,
'to' => t('to'),
@@ -356,6 +389,7 @@ class ThreadItem {
'thread_action_menu' => thread_action_menu($item,$conv->get_mode()),
'thread_author_menu' => thread_author_menu($item,$conv->get_mode()),
'dreport' => $dreport,
'dreport_link' => $dreport_link,
'name' => $profile_name,
'thumb' => $profile_avatar,
'osparkle' => $osparkle,
@@ -390,22 +424,25 @@ class ThreadItem {
'has_tags' => $has_tags,
'reactions' => $this->reactions,
// Item toolbar buttons
'emojis' => (($this->is_toplevel() && $this->is_commentable() && $observer && 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 : ''),
'reply_to' => (((! $this->is_toplevel()) && feature_enabled($conv->get_profile_owner(),'reply_to')) ? $reply_to : ''),
'top_hint' => t("Go to previous comment"),
'share' => $share,
'embed' => $embed,
'rawmid' => $item['mid'],
'plink' => get_plink($item),
'edpost' => $edpost, // ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''),
'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts') && ($item['item_type'] == ITEM_TYPE_POST)) ? $star : ''),
'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''),
'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''),
'filer' => ((feature_enabled($conv->get_profile_owner(),'filing') && ($item['item_type'] == ITEM_TYPE_POST)) ? $filer : ''),
'bookmark' => (($conv->get_profile_owner() == local_channel() && local_channel() && $has_bookmarks) ? t('Save Bookmarks') : ''),
'addtocal' => (($has_event) ? t('Add to Calendar') : ''),
'drop' => $drop,
'multidrop' => ((feature_enabled($conv->get_profile_owner(),'multi_delete')) ? $multidrop : ''),
'dropdown_extras' => $dropdown_extras,
// end toolbar buttons
'unseen_comments' => $unseen_comments,
'comment_count' => $total_children,
'comment_count_txt' => $comment_count_txt,
@@ -431,7 +468,9 @@ class ThreadItem {
'preview_lbl' => t('This is an unsaved preview'),
'wait' => t('Please wait'),
'submid' => str_replace(['+','='], ['',''], base64_encode($item['mid'])),
'thread_level' => $thread_level
'thread_level' => $thread_level,
'settings' => $settings,
'thr_parent' => (($item['parent_mid'] != $item['thr_parent']) ? $item['thr_parent'] : '')
);
$arr = array('item' => $item, 'output' => $tmp_item);
@@ -454,7 +493,7 @@ class ThreadItem {
if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
foreach($children as $child) {
$result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1);
$result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1,$conv_flags);
}
// Collapse
if(($nb_children > $visible_comments) || ($thread_level > 1)) {
@@ -739,8 +778,6 @@ class ThreadItem {
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(),
@@ -775,8 +812,7 @@ class ThreadItem {
'$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,
'$anonurl' => [ 'anonurl', t('Your website URL (optional)') ]
));
return $comment_box;
@@ -831,4 +867,3 @@ class ThreadItem {
}
+53
View File
@@ -0,0 +1,53 @@
<?php
namespace Zotlabs\Lib;
class ThreadListener {
static public function store($target_id,$portable_id,$ltype = 0) {
$x = self::fetch($target_id,$portable_id,$ltype = 0);
if(! $x) {
$r = q("insert into listeners ( target_id, portable_id, ltype ) values ( '%s', '%s' , %d ) ",
dbesc($target_id),
dbesc($portable_id),
intval($ltype)
);
}
}
static public function fetch($target_id,$portable_id,$ltype = 0) {
$x = q("select * from listeners where target_id = '%s' and portable_id = '%s' and ltype = %d limit 1",
dbesc($target_id),
dbesc($portable_id),
intval($ltype)
);
if($x) {
return $x[0];
}
return false;
}
static public function fetch_by_target($target_id,$ltype = 0) {
$x = q("select * from listeners where target_id = '%s' and ltype = %d",
dbesc($target_id),
intval($ltype)
);
return $x;
}
static public function delete_by_target($target_id, $ltype = 0) {
return q("delete from listeners where target_id = '%s' and ltype = %d",
dbesc($target_id),
intval($ltype)
);
}
static public function delete_by_pid($portable_id, $ltype = 0) {
return q("delete from listeners where portable_id = '%s' and ltype = %d",
dbesc($portable_id),
intval($ltype)
);
}
}
-1
View File
@@ -196,7 +196,6 @@ class ThreadStream {
$item->set_commentable(false);
}
require_once('include/channel.php');
$item->set_conversation($this);
$this->threads[] = $item;
+109
View File
@@ -0,0 +1,109 @@
<?php
namespace Zotlabs\Lib;
/**
* @brief Fetch and return a webfinger for a resource
*
* @param string $resource - The resource
* @return boolean|string false or associative array from result JSON
*/
class Webfinger {
static private $server = EMPTY_STR;
static private $resource = EMPTY_STR;
static function exec($resource) {
if(! $resource) {
return false;
}
self::parse_resource($resource);
if(! ( self::$server && self::$resource)) {
return false;
}
if(! check_siteallowed(self::$server)) {
logger('blacklisted: ' . self::$server);
return false;
}
btlogger('fetching resource: ' . self::$resource . ' from ' . self::$server, LOGGER_DEBUG, LOG_INFO);
$url = 'https://' . self::$server . '/.well-known/webfinger?f=&resource=' . self::$resource ;
$counter = 0;
$s = z_fetch_url($url, false, $counter, [ 'headers' => [ 'Accept: application/jrd+json, */*' ] ]);
if($s['success']) {
$j = json_decode($s['body'], true);
return($j);
}
return false;
}
static function parse_resource($resource) {
self::$resource = urlencode($resource);
if(strpos($resource,'http') === 0) {
$m = parse_url($resource);
if($m) {
if($m['scheme'] !== 'https') {
return false;
}
self::$server = $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
}
else {
return false;
}
}
elseif(strpos($resource,'tag:') === 0) {
$arr = explode(':',$resource); // split the tag
$h = explode(',',$arr[1]); // split the host,date
self::$server = $h[0];
}
else {
$x = explode('@',$resource);
$username = $x[0];
if(count($x) > 1) {
self::$server = $x[1];
}
else {
return false;
}
if(strpos($resource,'acct:') !== 0) {
self::$resource = urlencode('acct:' . $resource);
}
}
}
/**
* @brief fetch a webfinger resource and return a zot6 discovery url if present
*
*/
static function zot_url($resource) {
$arr = self::exec($resource);
if(is_array($arr) && array_key_exists('links',$arr)) {
foreach($arr['links'] as $link) {
if(array_key_exists('rel',$link) && $link['rel'] === PROTOCOL_ZOT6) {
if(array_key_exists('href',$link) && $link['href'] !== EMPTY_STR) {
return $link['href'];
}
}
}
}
return false;
}
}
+91
View File
@@ -0,0 +1,91 @@
<?php
namespace Zotlabs\Lib;
use Zotlabs\Web\HTTPSig;
class ZotURL {
static public function fetch($url,$channel) {
$ret = [ 'success' => false ];
if(strpos($url,'x-zot:') !== 0) {
return $ret;
}
if(! $url) {
return $ret;
}
$portable_url = substr($url,6);
$u = explode('/',$portable_url);
$portable_id = $u[0];
$hosts = self::lookup($portable_id);
if(! $hosts) {
return $ret;
}
foreach($hosts as $h) {
$newurl = $h . '/id/' . $portable_url;
$m = parse_url($newurl);
$data = json_encode([ 'zot_token' => random_string() ]);
if($channel && $m) {
$headers = [
'Accept' => 'application/x-zot+json',
'Content-Type' => 'application/x-zot+json',
'X-Zot-Token' => random_string(),
'Digest' => HTTPSig::generate_digest_header($data),
'Host' => $m['host'],
'(request-target)' => 'post ' . get_request_string($newurl)
];
$h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false);
}
else {
$h = [ 'Accept: application/x-zot+json' ];
}
$result = [];
$redirects = 0;
$x = z_post_url($newurl,$data,$redirects, [ 'headers' => $h ] );
if($x['success']) {
return $x;
}
}
return $ret;
}
static public function is_zoturl($url) {
if(strpos($url,'x-zot:') === 0) {
return true;
}
return false;
}
static public function lookup($portable_id) {
$r = q("select * from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and site_dead = 0 order by hubloc_primary desc",
dbesc($portable_id)
);
if(! $r) {
// extend to network lookup
return false;
}
return ids_to_array($r,'hubloc_url');
}
}
+63
View File
@@ -0,0 +1,63 @@
<?php
namespace Zotlabs\Lib;
use Zotlabs\Web\HTTPSig;
class Zotfinger {
static function exec($resource,$channel = null) {
if(! $resource) {
return false;
}
$m = parse_url($resource);
$data = json_encode([ 'zot_token' => random_string() ]);
if($channel && $m) {
$headers = [
'Accept' => 'application/x-zot+json',
'Content-Type' => 'application/x-zot+json',
'X-Zot-Token' => random_string(),
'Digest' => HTTPSig::generate_digest_header($data),
'Host' => $m['host'],
'(request-target)' => 'post ' . get_request_string($resource)
];
$h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false);
}
else {
$h = [ 'Accept: application/x-zot+json' ];
}
$result = [];
$redirects = 0;
$x = z_post_url($resource,$data,$redirects, [ 'headers' => $h ] );
logger('fetch: ' . print_r($x,true));
if($x['success']) {
$result['signature'] = HTTPSig::verify($x);
$result['data'] = json_decode($x['body'],true);
if($result['data'] && is_array($result['data']) && array_key_exists('encrypted',$result['data']) && $result['data']['encrypted']) {
$result['data'] = json_decode(crypto_unencapsulate($result['data'],get_config('system','prvkey')),true);
}
logger('decrypted: ' . print_r($result,true));
return $result;
}
return false;
}
}
+12 -11
View File
@@ -81,9 +81,10 @@ class Acl extends \Zotlabs\Web\Controller {
if($search) {
$sql_extra = " AND groups.gname LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ";
$sql_extra = " AND pgrp.gname LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ";
$sql_extra2 = "AND ( xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'%" . dbesc(punify($search)) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") ";
$sql_extra2_xchan = "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
// Otherwise we could just
@@ -128,13 +129,13 @@ class Acl extends \Zotlabs\Web\Controller {
// Normal privacy groups
$r = q("SELECT groups.id, groups.hash, groups.gname
FROM groups, group_member
WHERE groups.deleted = 0 AND groups.uid = %d
AND group_member.gid = groups.id
$r = q("SELECT pgrp.id, pgrp.hash, pgrp.gname
FROM pgrp, pgrp_member
WHERE pgrp.deleted = 0 AND pgrp.uid = %d
AND pgrp_member.gid = pgrp.id
$sql_extra
GROUP BY groups.id
ORDER BY groups.gname
GROUP BY pgrp.id
ORDER BY pgrp.gname
LIMIT %d OFFSET %d",
intval(local_channel()),
intval($count),
@@ -165,7 +166,7 @@ class Acl extends \Zotlabs\Web\Controller {
if($extra_channels) {
foreach($extra_channels as $channel) {
if(perm_is_allowed(intval($channel), get_observer_hash(),'view_contacts')) {
if($extra_channel_sql)
if($extra_channels_sql)
$extra_channels_sql .= ',';
$extra_channels_sql .= intval($channel);
}
@@ -226,7 +227,7 @@ class Acl extends \Zotlabs\Web\Controller {
else { // Visitors
$r = q("SELECT xchan_hash 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 left join xlink on xlink_link = xchan_hash
WHERE xlink_xchan = '%s' AND xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
WHERE xlink_xchan = '%s' AND xchan_deleted = 0 $sql_extra2_xchan order by $order_extra2 xchan_name asc" ,
dbesc(get_observer_hash())
);
@@ -270,7 +271,7 @@ class Acl extends \Zotlabs\Web\Controller {
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"
WHERE xchan_deleted = 0 and not xchan_network in ('rss','anon','unknown') $sql_extra2_xchan order by $order_extra2 xchan_name asc"
);
if($r2) {
$r = array_merge($r,$r2);
+2 -4
View File
@@ -86,7 +86,7 @@ class Admin extends \Zotlabs\Web\Controller {
// list total user accounts, expirations etc.
$accounts = array();
$r = q("SELECT COUNT(*) AS total, COUNT(CASE WHEN account_expires > %s THEN 1 ELSE NULL END) AS expiring, COUNT(CASE WHEN account_expires < %s AND account_expires > '%s' THEN 1 ELSE NULL END) AS expired, COUNT(CASE WHEN (account_flags & %d)>0 THEN 1 ELSE NULL END) AS blocked FROM account",
$r = q("SELECT COUNT(CASE WHEN account_id > 0 THEN 1 ELSE NULL END) AS total, COUNT(CASE WHEN account_expires > %s THEN 1 ELSE NULL END) AS expiring, COUNT(CASE WHEN account_expires < %s AND account_expires > '%s' THEN 1 ELSE NULL END) AS expired, COUNT(CASE WHEN (account_flags & %d)>0 THEN 1 ELSE NULL END) AS blocked FROM account",
db_utcnow(),
db_utcnow(),
dbesc(NULL_DATE),
@@ -109,11 +109,9 @@ class Admin extends \Zotlabs\Web\Controller {
// 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");
$r = q("SELECT COUNT(*) AS total FROM channel WHERE channel_removed = 0 and channel_system = 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']);
}
// We can do better, but this is a quick queue status
+2 -3
View File
@@ -31,7 +31,7 @@ class Account_edit {
}
$service_class = trim($_REQUEST['service_class']);
$account_level = intval(trim($_REQUEST['account_level']));
$account_level = 5;
$account_language = trim($_REQUEST['account_language']);
$r = q("update account set account_service_class = '%s', account_level = %d, account_language = '%s'
@@ -68,7 +68,6 @@ class Account_edit {
'$title' => t('Account Edit'),
'$pass1' => [ 'pass1', t('New Password'), ' ','' ],
'$pass2' => [ 'pass2', t('New Password again'), ' ','' ],
'$account_level' => [ 'account_level', t('Technical skill level'), $x[0]['account_level'], '', \Zotlabs\Lib\Techlevels::levels() ],
'$account_language' => [ 'account_language' , t('Account language (for emails)'), $x[0]['account_language'], '', language_list() ],
'$service_class' => [ 'service_class', t('Service class'), $x[0]['account_service_class'], '' ],
'$submit' => t('Submit'),
@@ -81,4 +80,4 @@ class Account_edit {
}
}
}
+20 -16
View File
@@ -2,6 +2,7 @@
namespace Zotlabs\Module\Admin;
use App;
use \Zotlabs\Storage\GitRepo;
use \Michelf\MarkdownExtra;
@@ -253,14 +254,14 @@ class Addons {
* Single plugin
*/
if (\App::$argc == 3){
$plugin = \App::$argv[2];
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);
$enabled = in_array($plugin,App::$plugins);
$info = get_plugin_info($plugin);
$x = check_plugin_versions($info);
@@ -268,11 +269,11 @@ class Addons {
if($enabled && ! $x) {
$enabled = false;
$idz = array_search($plugin, \App::$plugins);
$idz = array_search($plugin, App::$plugins);
if ($idz !== false) {
unset(\App::$plugins[$idz]);
unset(App::$plugins[$idz]);
uninstall_plugin($plugin);
set_config("system","addon", implode(", ",\App::$plugins));
set_config("system","addon", implode(", ",App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
@@ -281,19 +282,19 @@ class Addons {
check_form_security_token_redirectOnErr('/admin/addons', 'admin_addons', 't');
$pinstalled = false;
// Toggle plugin status
$idx = array_search($plugin, \App::$plugins);
$idx = array_search($plugin, App::$plugins);
if ($idx !== false){
unset(\App::$plugins[$idx]);
unset(App::$plugins[$idx]);
uninstall_plugin($plugin);
$pinstalled = false;
info( sprintf( t("Plugin %s disabled."), $plugin ) );
} else {
\App::$plugins[] = $plugin;
App::$plugins[] = $plugin;
install_plugin($plugin);
$pinstalled = true;
info( sprintf( t("Plugin %s enabled."), $plugin ) );
}
set_config("system","addon", implode(", ",\App::$plugins));
set_config("system","addon", implode(", ",App::$plugins));
if($pinstalled) {
@require_once("addon/$plugin/$plugin.php");
@@ -305,7 +306,7 @@ class Addons {
// display plugin details
if (in_array($plugin, \App::$plugins)){
if (in_array($plugin, App::$plugins)){
$status = 'on';
$action = t('Disable');
} else {
@@ -375,20 +376,23 @@ class Addons {
if($files) {
foreach($files as $file) {
if (is_dir($file)){
if($file == 'addon/addon_common/')
continue;
list($tmp, $id) = array_map('trim', explode('/', $file));
$info = get_plugin_info($id);
$enabled = in_array($id,\App::$plugins);
$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);
$idz = array_search($id, App::$plugins);
if ($idz !== false) {
unset(\App::$plugins[$idz]);
unset(App::$plugins[$idz]);
uninstall_plugin($id);
set_config("system","addon", implode(", ",\App::$plugins));
set_config("system","addon", implode(", ",App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
@@ -476,4 +480,4 @@ class Addons {
return(strcmp(strtolower($a[2]['name']),strtolower($b[2]['name'])));
}
}
}
+43 -2
View File
@@ -19,7 +19,47 @@ class Dbsync {
info( t('Update has been marked successful') . EOL);
goaway(z_root() . '/admin/dbsync');
}
if(argc() > 3 && intval(argv(3)) && argv(2) === 'verify') {
$s = '_' . intval(argv(3));
$cls = '\\Zotlabs\Update\\' . $s ;
if(class_exists($cls)) {
$c = new $cls();
if(method_exists($c,'verify')) {
$retval = $c->verify();
if($retval === UPDATE_FAILED) {
$o .= sprintf( t('Verification of update %s failed. Check system logs.'), $s);
}
elseif($retval === UPDATE_SUCCESS) {
$o .= sprintf( t('Update %s was successfully applied.'), $s);
set_config('database',$s, 'success');
}
else
$o .= sprintf( t('Verifying update %s did not return a status. Unknown if it succeeded.'), $s);
}
else {
$o .= sprintf( t('Update %s does not contain a verification function.'), $s );
}
}
else
$o .= sprintf( t('Update function %s could not be found.'), $s);
return $o;
// 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))) {
$x = intval(argv(2));
$s = '_' . $x;
@@ -28,14 +68,14 @@ class Dbsync {
$c = new $cls();
$retval = $c->run();
if($retval === UPDATE_FAILED) {
$o .= sprintf( t('Executing %s failed. Check system logs.'), $s);
$o .= sprintf( t('Executing update procedure %s failed. Check system logs.'), $s);
}
elseif($retval === UPDATE_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.'), $s);
$o .= sprintf( t('Update %s did not return a status. It cannot be determined if it was successful.'), $s);
}
else
$o .= sprintf( t('Update function %s could not be found.'), $s);
@@ -59,6 +99,7 @@ class Dbsync {
'$banner' => t('Failed Updates'),
'$desc' => '',
'$mark' => t('Mark success (if update was manually applied)'),
'$verify' => t('Attempt to verify this update if a verification procedure exists'),
'$apply' => t('Attempt to execute this update step automatically'),
'$failed' => $failed
));
+11 -3
View File
@@ -43,6 +43,12 @@ class Security {
$be = $this->trim_array_elems(explode("\n",$_POST['embed_deny']));
set_config('system','embed_deny',$be);
$thumbnail_security = ((x($_POST,'thumbnail_security')) ? intval($_POST['thumbnail_security']) : 0);
set_config('system', 'thumbnail_security' , $thumbnail_security);
$inline_pdf = ((x($_POST,'inline_pdf')) ? intval($_POST['inline_pdf']) : 0);
set_config('system', 'inline_pdf' , $inline_pdf);
$ts = ((x($_POST,'transport_security')) ? True : False);
set_config('system','transport_security_header',$ts);
@@ -86,7 +92,7 @@ class Security {
$embedhelp2 = t("The recommended setting is to only allow unfiltered HTML from the following sites:");
$embedhelp3 = t("https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />");
$embedhelp4 = t("All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked.");
$t = get_markup_template('admin_security.tpl');
return replace_macros($t, array(
'$title' => t('Administration'),
@@ -106,7 +112,9 @@ class Security {
'$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(get_config('system','embed_sslonly')),''),
'$embed_allow' => array('embed_allow', t('Allow unfiltered embedded HTML content only from these domains'), $whiteembeds_str, t('One site per line. By default embedded content is filtered.')),
'$embed_deny' => array('embed_deny', t('Block embedded HTML from these domains'), $blackembeds_str, ''),
'$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ],
'$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), get_config('system','inline_pdf',0), '' ],
// '$embed_coop' => array('embed_coop', t('Cooperative embed security'), $embed_coop, t('Enable to share embed security with other compatible sites/hubs')),
'$submit' => t('Submit')
@@ -128,4 +136,4 @@ class Security {
}
}
}
+3 -30
View File
@@ -72,19 +72,13 @@ 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);
$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', 'feed_contacts', $feed_contacts);
set_config('system', 'delivery_interval', $delivery_interval);
set_config('system', 'delivery_batch_count', $delivery_batch_count);
@@ -105,17 +99,10 @@ class Site {
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);
if($directory_server)
set_config('system','directory_server',$directory_server);
@@ -130,7 +117,7 @@ class Site {
del_config('system', 'admininfo');
} else {
require_once('include/text.php');
linkify_tags($a, $admininfo, local_channel());
linkify_tags($admininfo, local_channel());
set_config('system', 'admininfo', $admininfo);
}
set_config('system','siteinfo',$siteinfo);
@@ -284,15 +271,6 @@ class Site {
// now invert the logic for the setting.
$discover_tab = (1 - $discover_tab);
$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')
];
$perm_roles = \Zotlabs\Access\PermissionRoles::roles();
$default_role = get_config('system','default_permissions_role','social');
@@ -316,10 +294,6 @@ class Site {
// name, label, value, help string, extra data...
'$sitename' => array('sitename', t("Site name"), htmlspecialchars(get_config('system','sitename'), ENT_QUOTES, 'UTF-8'),''),
'$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, 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")),
@@ -332,10 +306,10 @@ class Site {
'$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),
'$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system','access_policy'), t("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.")),
'$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), get_config('system','frontpage'), t("example: 'pubstream' 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.')),
'$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")),
@@ -365,7 +339,6 @@ class Site {
'$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)), ''),
+94
View File
@@ -0,0 +1,94 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
use Zotlabs\Lib\Libsync;
class Affinity extends \Zotlabs\Web\Controller {
function post() {
if(! local_channel())
return;
if(! Apps::system_app_installed(local_channel(),'Affinity Tool'))
return;
check_form_security_token_redirectOnErr('affinity', 'affinity');
$cmax = intval($_POST['affinity_cmax']);
if($cmax < 0 || $cmax > 99)
$cmax = 99;
$cmin = intval($_POST['affinity_cmin']);
if($cmin < 0 || $cmin > 99)
$cmin = 0;
$lock = intval($_POST['affinity_lock']);
set_pconfig(local_channel(),'affinity','cmin',$cmin);
set_pconfig(local_channel(),'affinity','cmax',$cmax);
set_pconfig(local_channel(),'affinity','lock',$lock);
info( t('Affinity Tool settings updated.') . EOL);
Libsync::build_sync_packet();
}
function get() {
if(! local_channel())
return;
$desc = t('This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream.');
if(! Apps::system_app_installed(local_channel(),'Affinity Tool')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Affinity Tool App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= $desc;
return $o;
}
$text = t('The numbers below represent the minimum and maximum slider default positions for your network/stream page as a percentage.');
$content = '<div class="section-content-info-wrapper">' . $text . '</div>';
$cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
$cmax = (($cmax) ? $cmax : 99);
$content .= replace_macros(get_markup_template('field_input.tpl'), array(
'$field' => array('affinity_cmax', t('Default maximum affinity level'), $cmax, t('0-99 default 99'))
));
$cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
$cmin = (($cmin) ? $cmin : 0);
$content .= replace_macros(get_markup_template('field_input.tpl'), array(
'$field' => array('affinity_cmin', t('Default minimum affinity level'), $cmin, t('0-99 - default 0'))
));
$lock = intval(get_pconfig(local_channel(),'affinity','lock',1));
$content .= replace_macros(get_markup_template('field_checkbox.tpl'), array(
'$field' => array('affinity_lock', t('Persistent affinity levels'), $lock, t('If disabled the max and min levels will be reset to default after page reload'), ['No','Yes'])
));
$tpl = get_markup_template("settings_addon.tpl");
$o = replace_macros($tpl, array(
'$action_url' => 'affinity',
'$form_security_token' => get_form_security_token("affinity"),
'$title' => t('Affinity Tool Settings'),
'$content' => $content,
'$baseurl' => z_root(),
'$submit' => t('Submit'),
));
return $o;
}
}
+7 -5
View File
@@ -90,12 +90,12 @@ class Appman extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
if(argc() > 2) {
if(argc() > 3) {
if(argv(2) === 'moveup') {
Zlib\Apps::moveup(local_channel(),argv(1));
Zlib\Apps::moveup(local_channel(),argv(1),argv(3));
}
if(argv(2) === 'movedown') {
Zlib\Apps::movedown(local_channel(),argv(1));
Zlib\Apps::movedown(local_channel(),argv(1),argv(3));
}
goaway(z_root() . '/apporder');
}
@@ -113,10 +113,12 @@ class Appman extends \Zotlabs\Web\Controller {
if($r) {
$app = $r[0];
$term = q("select * from term where otype = %d and oid = %d",
$term = q("select * from term where otype = %d and oid = %d and uid = %d",
intval(TERM_OBJ_APP),
intval($r[0]['id'])
intval($r[0]['id']),
intval(local_channel())
);
if($term) {
$app['categories'] = '';
foreach($term as $t) {
+18 -15
View File
@@ -17,25 +17,28 @@ class Apporder extends \Zotlabs\Web\Controller {
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);
foreach( [ 'nav_featured_app', 'nav_pinned_app' ] as $l ) {
$syslist = [];
$list = Zlib\Apps::app_list(local_channel(), false, [ $l ]);
if($list) {
foreach($list as $li) {
$syslist[] = Zlib\Apps::app_encode($li);
}
}
}
Zlib\Apps::translate_system_apps($syslist);
Zlib\Apps::translate_system_apps($syslist);
usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
$syslist = Zlib\Apps::app_order(local_channel(),$syslist);
$syslist = Zlib\Apps::app_order(local_channel(),$syslist, $l);
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');
foreach($syslist as $app) {
if($l === 'nav_pinned_app') {
$navbar_apps[] = Zlib\Apps::app_render($app,'nav-order');
}
elseif(strpos($app['categories'],'nav_pinned_app') === false) {
$nav_apps[] = Zlib\Apps::app_render($app,'nav-order');
}
}
}
+3 -3
View File
@@ -47,11 +47,11 @@ class Apps extends \Zotlabs\Web\Controller {
return replace_macros(get_markup_template('myapps.tpl'), array(
'$sitename' => get_config('system','sitename'),
'$cat' => $cat,
'$title' => t('Apps'),
'$title' => (($available) ? t('Available Apps') : t('Installed Apps')),
'$apps' => $apps,
'$authed' => ((local_channel()) ? true : false),
'$manage' => (($available) ? '' : t('Manage apps')),
'$create' => (($mode == 'edit') ? t('Create new app') : '')
'$manage' => (($available) ? '' : t('Manage Apps')),
'$create' => (($mode == 'edit') ? t('Create Custom App') : '')
));
}
+63
View File
@@ -0,0 +1,63 @@
<?php
namespace Zotlabs\Module;
class Apschema extends \Zotlabs\Web\Controller {
function init() {
$base = z_root();
$arr = [
'@context' => [
'zot' => z_root() . '/apschema#',
'id' => '@id',
'type' => '@type',
'commentPolicy' => 'as:commentPolicy',
'meData' => 'zot:meData',
'meDataType' => 'zot:meDataType',
'meEncoding' => 'zot:meEncoding',
'meAlgorithm' => 'zot:meAlgorithm',
'meCreator' => 'zot:meCreator',
'meSignatureValue' => 'zot:meSignatureValue',
'locationAddress' => 'zot:locationAddress',
'locationPrimary' => 'zot:locationPrimary',
'locationDeleted' => 'zot:locationDeleted',
'nomadicLocation' => 'zot:nomadicLocation',
'nomadicHubs' => 'zot:nomadicHubs',
'emojiReaction' => 'zot:emojiReaction',
'expires' => 'zot:expires',
'directMessage' => 'zot:directMessage',
'magicEnv' => [
'@id' => 'zot:magicEnv',
'@type' => '@id'
],
'nomadicLocations' => [
'@id' => 'zot:nomadicLocations',
'@type' => '@id'
],
'ostatus' => 'http://ostatus.org#',
'conversation' => 'ostatus:conversation',
'diaspora' => 'https://diasporafoundation.org/ns/',
'guid' => 'diaspora:guid',
'Hashtag' => 'as:Hashtag'
]
];
header('Content-Type: application/ld+json');
echo json_encode($arr,JSON_UNESCAPED_SLASHES);
killme();
}
}
+3 -4
View File
@@ -85,10 +85,9 @@ class Article_edit extends \Zotlabs\Web\Controller {
$mimetype = $itm[0]['mimetype'];
$summary = (($itm[0]['summary']) ? '[summary]' . $itm[0]['summary'] . '[/summary]' . "\r\n" : '');
$content = $itm[0]['body'];
$rp = 'articles/' . $channel['channel_address'];
$x = array(
@@ -110,7 +109,7 @@ class Article_edit extends \Zotlabs\Web\Controller {
'ptyp' => $itm[0]['type'],
'mimeselect' => false,
'mimetype' => $itm[0]['mimetype'],
'body' => undo_post_tagging($content),
'body' => $summary . undo_post_tagging($content),
'post_id' => $post_id,
'visitor' => true,
'title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
@@ -122,7 +121,7 @@ class Article_edit extends \Zotlabs\Web\Controller {
'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
);
$editor = status_editor($a, $x);
$editor = status_editor($a, $x, false, 'Article_edit');
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Article'),
+59 -24
View File
@@ -1,19 +1,33 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\PermissionDescription;
require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
require_once('include/opengraph.php');
class Articles extends \Zotlabs\Web\Controller {
class Articles extends Controller {
function init() {
if(argc() > 1)
$which = argv(1);
else
return;
if(! $which) {
if(local_channel()) {
$channel = App::get_channel();
if($channel && $channel['channel_address'])
$which = $channel['channel_address'];
} else {
return;
}
}
profile_load($which);
@@ -25,22 +39,27 @@ class Articles extends \Zotlabs\Web\Controller {
return login();
}
if(! \App::$profile) {
if(! App::$profile) {
notice( t('Requested profile is not available.') . EOL );
\App::$error = 404;
App::$error = 404;
return;
}
if(! feature_enabled(\App::$profile_uid,'articles')) {
return;
if(! Apps::system_app_installed(App::$profile_uid, 'Articles')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Articles App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('Create interactive articles');
return $o;
}
nav_set_selected(t('Articles'));
nav_set_selected('Articles');
head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . App::$query_string),
'title' => 'oembed'
]);
@@ -48,19 +67,21 @@ class Articles extends \Zotlabs\Web\Controller {
$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));
$sql_extra2 .= protect_sprintf(term_item_parent_query(App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
}
$datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
$datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
$which = argv(1);
$selected_card = ((argc() > 2) ? argv(2) : '');
$_SESSION['return_url'] = \App::$query_string;
$_SESSION['return_url'] = App::$query_string;
$uid = local_channel();
$owner = \App::$profile_uid;
$observer = \App::get_observer();
$owner = App::$profile_uid;
$observer = App::get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
@@ -98,7 +119,7 @@ class Articles extends \Zotlabs\Web\Controller {
'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')) : ''),
PermissionDescription::fromGlobalPermission('view_pages')) : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
'visitor' => true,
@@ -120,7 +141,7 @@ class Articles extends \Zotlabs\Web\Controller {
$x['title'] = $_REQUEST['title'];
if($_REQUEST['body'])
$x['body'] = $_REQUEST['body'];
$editor = status_editor($a,$x);
$editor = status_editor($a,$x,false,'Articles');
}
else {
@@ -128,8 +149,8 @@ class Articles extends \Zotlabs\Web\Controller {
}
$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']));
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);
@@ -143,10 +164,21 @@ class Articles extends \Zotlabs\Web\Controller {
$sql_item = "and item.id = " . intval($r[0]['iid']) . " ";
}
}
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 ";
}
$r = q("select * from item
where item.uid = %d and item_type = %d
$sql_extra $sql_item order by item.created desc $pager_sql",
$sql_extra $sql_extra2 $sql_item order by item.created desc $pager_sql",
intval($owner),
intval(ITEM_TYPE_ARTICLE)
);
@@ -161,23 +193,26 @@ class Articles extends \Zotlabs\Web\Controller {
$parents_str = ids_to_querystr($r,'id');
$items = q("SELECT item.*, item.id AS item_id
$r = 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']),
intval(App::$profile['profile_uid']),
dbesc($parents_str)
);
if($items) {
xchan_query($items);
$items = fetch_post_tags($items, true);
if($r) {
xchan_query($r);
$items = fetch_post_tags($r, true);
$items = conv_sort($items,'updated');
}
else
$items = [];
}
// Add Opengraph markup
opengraph_add_meta((! empty($items) ? $r[0] : []), $channel);
$mode = 'articles';
if(get_pconfig(local_channel(),'system','articles_list_mode') && (! $selected_card))
+34 -24
View File
@@ -7,27 +7,34 @@ use Zotlabs\Identity\OAuth2Storage;
class Authorize extends \Zotlabs\Web\Controller {
function get() {
if (!local_channel()) {
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'] : ''),
}
else {
$name = $_REQUEST['client_name'];
if(! $name) {
$name = (($_REQUEST['client_id']) ?: t('Unknown App'));
}
$app = [
'name' => $name,
'icon' => (x($_REQUEST, 'logo_uri') ? $_REQUEST['logo_uri'] : z_root() . '/images/icons/plugin.png'),
'url' => (x($_REQUEST, 'client_uri') ? $_REQUEST['client_uri'] : ''),
];
$link = (($app['url']) ? '<a style="float: none;" href="' . $app['url'] . '">' . $app['name'] . '</a> ' : $app['name']);
$o .= replace_macros(get_markup_template('oauth_authorize.tpl'), [
'$title' => t('Authorize'),
'$authorize' => sprintf( t('Do you authorize the app %s to access your channel data?'), $link ),
'$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'] : ''),
));
'$state' => (x($_REQUEST, 'state') ? $_REQUEST['state'] : ''),
]);
return $o;
}
}
@@ -60,13 +67,16 @@ class Authorize extends \Zotlabs\Web\Controller {
$request = \OAuth2\Request::createFromGlobals();
$response = new \OAuth2\Response();
// Note, "sub" field must match type and content. $user_id is used to populate - make sure it's a string.
$channel = channelx_by_n(local_channel());
$user_id = $channel['channel_id'];
// If the client is not registered, add to the database
if (!$client = $storage->getClientDetails($client_id)) {
$client_secret = random_string(16);
// Until "Dynamic Client Registration" is pursued - allow new clients to assign their own secret in the REQUEST
$client_secret = (isset($_REQUEST['client_secret'])) ? $_REQUEST['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);
$storage->setClientDetails($client_id, $client_secret, $redirect_uri, 'authorization_code', $_REQUEST['scope'], $user_id);
}
if (!$client = $storage->getClientDetails($client_id)) {
// There was an error registering the client.
@@ -83,7 +93,7 @@ class Authorize extends \Zotlabs\Web\Controller {
// print the authorization code if the user has authorized your client
$is_authorized = ($_POST['authorize'] === 'allow');
$s->handleAuthorizeRequest($request, $response, $is_authorized, local_channel());
$s->handleAuthorizeRequest($request, $response, $is_authorized, $user_id);
if ($is_authorized) {
$code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=') + 5, 40);
logger('Authorization Code: ' . $code);
+1 -1
View File
@@ -109,7 +109,7 @@ class Blocks extends \Zotlabs\Web\Controller {
if($_REQUEST['pagetitle'])
$x['pagetitle'] = $_REQUEST['pagetitle'];
$editor = status_editor($a,$x);
$editor = status_editor($a,$x,false,'Blocks');
$r = q("select iconfig.iid, iconfig.k, iconfig.v, mid, title, body, mimetype, created, edited from iconfig
+17 -4
View File
@@ -1,6 +1,9 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
class Bookmarks extends \Zotlabs\Web\Controller {
@@ -8,7 +11,10 @@ class Bookmarks extends \Zotlabs\Web\Controller {
if(! local_channel())
return;
nav_set_selected('View Bookmarks');
if(! Apps::system_app_installed(local_channel(), 'Bookmarks'))
return;
nav_set_selected('Bookmarks');
$item_id = intval($_REQUEST['item']);
$burl = trim($_REQUEST['burl']);
@@ -59,19 +65,26 @@ class Bookmarks extends \Zotlabs\Web\Controller {
killme();
}
function get() {
function get() {
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
return;
}
if(! Apps::system_app_installed(local_channel(), 'Bookmarks')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Bookmarks App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('Bookmark links from posts and manage them');
return $o;
}
require_once('include/menu.php');
require_once('include/conversation.php');
$channel = \App::get_channel();
//$o = profile_tabs($a,true,$channel['channel_address']);
$o = '';
$o .= '<div class="generic-content-wrapper-styled">';
+149 -292
View File
@@ -1,22 +1,25 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Web\Controller;
require_once('include/conversation.php');
require_once('include/bbcode.php');
require_once('include/datetime.php');
require_once('include/event.php');
require_once('include/items.php');
require_once('include/html2plain.php');
class Cal extends \Zotlabs\Web\Controller {
class Cal extends Controller {
function init() {
if(observer_prohibited()) {
return;
}
$o = '';
if(argc() > 1) {
$nick = argv(1);
@@ -24,19 +27,21 @@ class Cal extends \Zotlabs\Web\Controller {
$channelx = channelx_by_nick($nick);
if(! $channelx)
if(! $channelx) {
notice( t('Channel not found.') . EOL);
return;
}
\App::$data['channel'] = $channelx;
App::$data['channel'] = $channelx;
$observer = \App::get_observer();
\App::$data['observer'] = $observer;
$observer = App::get_observer();
App::$data['observer'] = $observer;
$observer_xchan = (($observer) ? $observer['xchan_hash'] : '');
head_set_icon(\App::$data['channel']['xchan_photo_s']);
head_set_icon(App::$data['channel']['xchan_photo_s']);
\App::$page['htmlhead'] .= "<script> var profile_uid = " . ((\App::$data['channel']) ? \App::$data['channel']['channel_id'] : 0) . "; </script>" ;
App::$page['htmlhead'] .= "<script> var profile_uid = " . ((App::$data['channel']) ? App::$data['channel']['channel_id'] : 0) . "; </script>" ;
}
@@ -51,18 +56,8 @@ class Cal extends \Zotlabs\Web\Controller {
return;
}
$channel = null;
if(argc() > 1) {
$channel = channelx_by_nick(argv(1));
}
if(! $channel) {
notice( t('Channel not found.') . EOL);
return;
}
$channel = App::$data['channel'];
// since we don't currently have an event permission - use the stream permission
if(! perm_is_allowed($channel['channel_id'], get_observer_hash(), 'view_stream')) {
@@ -71,290 +66,152 @@ class Cal extends \Zotlabs\Web\Controller {
}
nav_set_selected('Calendar');
head_add_css('/library/fullcalendar/packages/core/main.min.css');
head_add_css('/library/fullcalendar/packages/daygrid/main.min.css');
head_add_css('cdav_calendar.css');
head_add_js('/library/fullcalendar/packages/core/main.min.js');
head_add_js('/library/fullcalendar/packages/daygrid/main.min.js');
$sql_extra = permissions_sql($channel['channel_id'], get_observer_hash(), 'event');
if(! perm_is_allowed($channel['channel_id'], get_observer_hash(), 'view_contacts') || App::$profile['hide_friends'])
$sql_extra .= " and etype != 'birthday' ";
$sql_extra = permissions_sql($channel['channel_id'],get_observer_hash(),'event');
$first_day = get_pconfig(local_channel(),'system','cal_first_day');
$first_day = feature_enabled($channel['channel_id'], 'cal_first_day');
$first_day = (($first_day) ? $first_day : 0);
$htpl = get_markup_template('event_head.tpl');
\App::$page['htmlhead'] .= replace_macros($htpl,array(
'$baseurl' => z_root(),
'$module_url' => '/cal/' . $channel['channel_address'],
'$modparams' => 2,
'$lang' => \App::$language,
'$first_day' => $first_day
));
$o = '';
//$tabs = profile_tabs($a, True, $channel['channel_address']);
$tabs = '';
$mode = 'view';
$y = 0;
$m = 0;
$ignored = ((x($_REQUEST,'ignored')) ? " and dismissed = " . intval($_REQUEST['ignored']) . " " : '');
// logger('args: ' . print_r(\App::$argv,true));
if(argc() > 3 && intval(argv(2)) && intval(argv(3))) {
$mode = 'view';
$y = intval(argv(2));
$m = intval(argv(3));
}
if(argc() <= 3) {
$mode = 'view';
$event_id = argv(2);
$start = '';
$finish = '';
if (argv(2) === 'json') {
if (x($_GET,'start')) $start = $_GET['start'];
if (x($_GET,'end')) $finish = $_GET['end'];
}
if($mode == 'view') {
/* edit/create form */
if($event_id) {
$r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
dbesc($event_id),
intval($channel['channel_id'])
);
if(count($r))
$orig_event = $r[0];
}
// Passed parameters overrides anything found in the DB
if(!x($orig_event))
$orig_event = array();
$tz = date_default_timezone_get();
if(x($orig_event))
$tz = (($orig_event['adjust']) ? date_default_timezone_get() : 'UTC');
$syear = datetime_convert('UTC', $tz, $sdt, 'Y');
$smonth = datetime_convert('UTC', $tz, $sdt, 'm');
$sday = datetime_convert('UTC', $tz, $sdt, 'd');
$shour = datetime_convert('UTC', $tz, $sdt, 'H');
$sminute = datetime_convert('UTC', $tz, $sdt, 'i');
$stext = datetime_convert('UTC',$tz,$sdt);
$stext = substr($stext,0,14) . "00:00";
$fyear = datetime_convert('UTC', $tz, $fdt, 'Y');
$fmonth = datetime_convert('UTC', $tz, $fdt, 'm');
$fday = datetime_convert('UTC', $tz, $fdt, 'd');
$fhour = datetime_convert('UTC', $tz, $fdt, 'H');
$fminute = datetime_convert('UTC', $tz, $fdt, 'i');
$ftext = datetime_convert('UTC',$tz,$fdt);
$ftext = substr($ftext,0,14) . "00:00";
$type = ((x($orig_event)) ? $orig_event['etype'] : 'event');
$f = get_config('system','event_input_format');
if(! $f)
$f = 'ymd';
$catsenabled = feature_enabled($channel['channel_id'],'categories');
$show_bd = perm_is_allowed($channel['channel_id'], get_observer_hash(), 'view_contacts');
if(! $show_bd) {
$sql_extra .= " and event.etype != 'birthday' ";
}
$category = '';
$thisyear = datetime_convert('UTC',date_default_timezone_get(),'now','Y');
$thismonth = datetime_convert('UTC',date_default_timezone_get(),'now','m');
if(! $y)
$y = intval($thisyear);
if(! $m)
$m = intval($thismonth);
// Put some limits on dates. The PHP date functions don't seem to do so well before 1900.
// An upper limit was chosen to keep search engines from exploring links millions of years in the future.
if($y < 1901)
$y = 1900;
if($y > 2099)
$y = 2100;
$nextyear = $y;
$nextmonth = $m + 1;
if($nextmonth > 12) {
$nextmonth = 1;
$nextyear ++;
}
$prevyear = $y;
if($m > 1)
$prevmonth = $m - 1;
else {
$prevmonth = 12;
$prevyear --;
}
$dim = get_dim($y,$m);
$start = sprintf('%d-%d-%d %d:%d:%d',$y,$m,1,0,0,0);
$finish = sprintf('%d-%d-%d %d:%d:%d',$y,$m,$dim,23,59,59);
if (argv(2) === 'json'){
if (x($_GET,'start')) $start = $_GET['start'];
if (x($_GET,'end')) $finish = $_GET['end'];
}
$start = datetime_convert('UTC','UTC',$start);
$finish = datetime_convert('UTC','UTC',$finish);
$adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start);
$adjust_finish = datetime_convert('UTC', date_default_timezone_get(), $finish);
$start = datetime_convert('UTC','UTC',$start);
$finish = datetime_convert('UTC','UTC',$finish);
$adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start);
$adjust_finish = datetime_convert('UTC', date_default_timezone_get(), $finish);
if(! perm_is_allowed(\App::$profile['uid'],get_observer_hash(),'view_contacts'))
$sql_extra .= " and etype != 'birthday' ";
if (x($_GET, 'id')) {
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id
from event left join item on item.resource_id = event.event_hash
where item.resource_type = 'event' and event.uid = %d and event.id = %d $sql_extra limit 1",
intval($channel['channel_id']),
intval($_GET['id'])
);
}
else {
// fixed an issue with "nofinish" events not showing up in the calendar.
// There's still an issue if the finish date crosses the end of month.
// Noting this for now - it will need to be fixed here and in Friendica.
// Ultimately the finish date shouldn't be involved in the query.
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id
from event left join item on event.event_hash = item.resource_id
where item.resource_type = 'event' and event.uid = %d and event.uid = item.uid
AND (( event.adjust = 0 AND ( event.dtend >= '%s' or event.nofinish = 1 ) AND event.dtstart <= '%s' )
OR ( event.adjust = 1 AND ( event.dtend >= '%s' or event.nofinish = 1 ) AND event.dtstart <= '%s' ))
$sql_extra",
intval($channel['channel_id']),
dbesc($start),
dbesc($finish),
dbesc($adjust_start),
dbesc($adjust_finish)
);
}
if($r) {
xchan_query($r);
$r = fetch_post_tags($r,true);
$r = sort_by_date($r);
}
if (x($_GET,'id')){
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan
from event left join item on resource_id = event_hash where resource_type = 'event' and event.uid = %d and event.id = %d $sql_extra limit 1",
intval($channel['channel_id']),
intval($_GET['id'])
);
}
else {
// fixed an issue with "nofinish" events not showing up in the calendar.
// There's still an issue if the finish date crosses the end of month.
// Noting this for now - it will need to be fixed here and in Friendica.
// Ultimately the finish date shouldn't be involved in the query.
$events = [];
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan
from event left join item on event_hash = resource_id
where resource_type = 'event' and event.uid = %d and event.uid = item.uid $ignored
AND (( adjust = 0 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )
OR ( adjust = 1 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )) $sql_extra ",
intval($channel['channel_id']),
dbesc($start),
dbesc($finish),
dbesc($adjust_start),
dbesc($adjust_finish)
);
}
$links = array();
if($r) {
xchan_query($r);
$r = fetch_post_tags($r,true);
$r = sort_by_date($r);
}
if($r) {
foreach($r as $rr) {
$j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'j') : datetime_convert('UTC','UTC',$rr['dtstart'],'j'));
if(! x($links,$j))
$links[$j] = z_root() . '/' . \App::$cmd . '#link-' . $j;
if($r) {
foreach($r as $rr) {
$tz = get_iconfig($rr, 'event', 'timezone');
if(! $tz)
$tz = 'UTC';
$start = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtstart'], 'c'));
if ($rr['nofinish']){
$end = null;
} else {
$end = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtend'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtend'], 'c'));
}
}
$events=array();
$last_date = '';
$fmt = t('l, F j');
if($r) {
foreach($r as $rr) {
$j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'j') : datetime_convert('UTC','UTC',$rr['dtstart'],'j'));
$d = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], $fmt) : datetime_convert('UTC','UTC',$rr['dtstart'],$fmt));
$d = day_translate($d);
$start = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'c') : datetime_convert('UTC','UTC',$rr['dtstart'],'c'));
if ($rr['nofinish']){
$end = null;
} else {
$end = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtend'], 'c') : datetime_convert('UTC','UTC',$rr['dtend'],'c'));
}
$is_first = ($d !== $last_date);
$last_date = $d;
$edit = false;
$drop = false;
$title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8'));
if(! $title) {
list($title, $_trash) = explode("<br",bbcode($rr['desc']),2);
$title = strip_tags(html_entity_decode($title,ENT_QUOTES,'UTF-8'));
}
$html = '';
if (x($_GET,'id')) {
$rr['timezone'] = $tz;
$html = format_event_html($rr);
$rr['desc'] = zidify_links(smilies(bbcode($rr['desc'])));
$rr['location'] = zidify_links(smilies(bbcode($rr['location'])));
$events[] = array(
'id'=>$rr['id'],
'hash' => $rr['event_hash'],
'start'=> $start,
'end' => $end,
'drop' => $drop,
'allDay' => false,
'title' => $title,
'j' => $j,
'd' => $d,
'edit' => $edit,
'is_first'=>$is_first,
'item'=>$rr,
'html'=>$html,
'plink' => array($rr['plink'],t('Link to Source'),'',''),
);
}
$events[] = array(
'calendar_id' => 'channel_calendar',
'rw' => true,
'id'=>$rr['id'],
'uri' => $rr['event_hash'],
'timezone' => $tz,
'start'=> $start,
'end' => $end,
'drop' => $drop,
'allDay' => (($rr['adjust']) ? 0 : 1),
'title' => html_entity_decode($rr['summary'], ENT_COMPAT, 'UTF-8'),
'editable' => $edit ? true : false,
'item' => $rr,
'plink' => [$rr['plink'], t('Link to source')],
'description' => html_entity_decode($rr['description'], ENT_COMPAT, 'UTF-8'),
'location' => html_entity_decode($rr['location'], ENT_COMPAT, 'UTF-8'),
'allow_cid' => expand_acl($rr['allow_cid']),
'allow_gid' => expand_acl($rr['allow_gid']),
'deny_cid' => expand_acl($rr['deny_cid']),
'deny_gid' => expand_acl($rr['deny_gid']),
'html' => $html
);
}
if (argv(2) === 'json'){
echo json_encode($events); killme();
}
// links: array('href', 'text', 'extra css classes', 'title')
if (x($_GET,'id')){
$tpl = get_markup_template("event_cal.tpl");
}
else {
$tpl = get_markup_template("events_cal-js.tpl");
}
$nick = $channel['channel_address'];
$o = replace_macros($tpl, array(
'$baseurl' => z_root(),
'$new_event' => array(z_root().'/cal',(($event_id) ? t('Edit Event') : t('Create Event')),'',''),
'$previus' => array(z_root()."/cal/$nick/$prevyear/$prevmonth",t('Previous'),'',''),
'$next' => array(z_root()."/cal/$nick/$nextyear/$nextmonth",t('Next'),'',''),
'$export' => array(z_root()."/cal/$nick/$y/$m/export",t('Export'),'',''),
'$calendar' => cal($y,$m,$links, ' eventcal'),
'$events' => $events,
'$upload' => t('Import'),
'$submit' => t('Submit'),
'$prev' => t('Previous'),
'$next' => t('Next'),
'$today' => t('Today'),
'$form' => $form,
'$expandform' => ((x($_GET,'expandform')) ? true : false),
'$tabs' => $tabs
));
if (x($_GET,'id')){ echo $o; killme(); }
return $o;
}
if (argv(2) === 'json') {
echo json_encode($events);
killme();
}
if (x($_GET,'id')) {
$o = replace_macros(get_markup_template("cal_event.tpl"), [
'$events' => $events
]);
echo $o;
killme();
}
$nick = $channel['channel_address'];
$sources = '{
id: \'channel_calendar\',
url: \'/cal/' . $nick . '/json/\',
color: \'#3a87ad\'
}';
$o = replace_macros(get_markup_template("cal_calendar.tpl"), [
'$sources' => $sources,
'$lang' => App::$language,
'$timezone' => date_default_timezone_get(),
'$first_day' => $first_day,
'$prev' => t('Previous'),
'$next' => t('Next'),
'$today' => t('Today'),
'$title' => $title,
'$dtstart' => $dtstart,
'$dtend' => $dtend,
'$nick' => $nick
]);
return $o;
}
+1 -1
View File
@@ -122,7 +122,7 @@ class Card_edit extends \Zotlabs\Web\Controller {
'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
);
$editor = status_editor($a, $x);
$editor = status_editor($a, $x, false, 'Card_edit');
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Card'),
+35 -22
View File
@@ -1,14 +1,22 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\PermissionDescription;
require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
/**
* @brief Provides the Cards module.
*
*/
class Cards extends Controller {
class Cards extends \Zotlabs\Web\Controller {
function init() {
public function init() {
if(argc() > 1)
$which = argv(1);
@@ -16,35 +24,41 @@ class Cards extends \Zotlabs\Web\Controller {
return;
profile_load($which);
}
/**
* {@inheritDoc}
* @see \Zotlabs\Web\Controller::get()
* @see \\Zotlabs\\Web\\Controller::get()
*
* @return string Parsed HTML from template 'cards.tpl'
*/
function get($update = 0, $load = false) {
public function get($update = 0, $load = false) {
if(observer_prohibited(true)) {
return login();
}
if(! \App::$profile) {
if(! App::$profile) {
notice( t('Requested profile is not available.') . EOL );
\App::$error = 404;
App::$error = 404;
return;
}
if(! feature_enabled(\App::$profile_uid, 'cards')) {
return;
if(! Apps::system_app_installed(App::$profile_uid, 'Cards')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Cards App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('Create personal planning cards');
return $o;
}
nav_set_selected(t('Cards'));
nav_set_selected('Cards');
head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . App::$query_string),
'title' => 'oembed'
]);
@@ -52,7 +66,7 @@ class Cards extends \Zotlabs\Web\Controller {
$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));
$sql_extra2 .= protect_sprintf(term_item_parent_query(App::$profile['profile_uid'], 'item', $category, TERM_CATEGORY));
}
@@ -60,11 +74,11 @@ class Cards extends \Zotlabs\Web\Controller {
$selected_card = ((argc() > 2) ? argv(2) : '');
$_SESSION['return_url'] = \App::$query_string;
$_SESSION['return_url'] = App::$query_string;
$uid = local_channel();
$owner = \App::$profile_uid;
$observer = \App::get_observer();
$owner = App::$profile_uid;
$observer = App::get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
@@ -90,7 +104,6 @@ class Cards extends \Zotlabs\Web\Controller {
}
if(perm_is_allowed($owner, $ob_hash, 'write_pages')) {
$x = [
@@ -102,7 +115,7 @@ class Cards extends \Zotlabs\Web\Controller {
'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')) : ''),
PermissionDescription::fromGlobalPermission('view_pages')) : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
'visitor' => true,
@@ -124,7 +137,7 @@ class Cards extends \Zotlabs\Web\Controller {
if($_REQUEST['body'])
$x['body'] = $_REQUEST['body'];
$editor = status_editor($a, $x);
$editor = status_editor($a, $x, false, 'Cards');
}
else {
$editor = '';
@@ -132,8 +145,8 @@ class Cards extends \Zotlabs\Web\Controller {
$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']));
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);
@@ -171,7 +184,7 @@ class Cards extends \Zotlabs\Web\Controller {
WHERE item.uid = %d $item_normal
AND item.parent IN ( %s )
$sql_extra $sql_extra2 ",
intval(\App::$profile['profile_uid']),
intval(App::$profile['profile_uid']),
dbesc($parents_str)
);
if($items) {
+262 -58
View File
@@ -1,12 +1,17 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
use Zotlabs\Web\Controller;
use Zotlabs\Web\HTTPSig;
require_once('include/event.php');
require_once('include/auth.php');
require_once('include/security.php');
class Cdav extends \Zotlabs\Web\Controller {
class Cdav extends Controller {
function init() {
@@ -37,7 +42,7 @@ class Cdav extends \Zotlabs\Web\Controller {
continue;
}
$sigblock = \Zotlabs\Web\HTTPSig::parse_sigheader($_SERVER[$head]);
$sigblock = HTTPSig::parse_sigheader($_SERVER[$head]);
if($sigblock) {
$keyId = str_replace('acct:','',$sigblock['keyId']);
if($keyId) {
@@ -60,7 +65,7 @@ class Cdav extends \Zotlabs\Web\Controller {
continue;
if($record) {
$verified = \Zotlabs\Web\HTTPSig::verify('',$record['channel']['channel_pubkey']);
$verified = HTTPSig::verify('',$record['channel']['channel_pubkey']);
if(! ($verified && $verified['header_signed'] && $verified['header_valid'])) {
$record = null;
}
@@ -126,8 +131,14 @@ class Cdav extends \Zotlabs\Web\Controller {
$auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . 'CalDAV/CardDAV');
if (local_channel()) {
logger('loggedin');
$channel = \App::get_channel();
if((argv(1) == 'addressbooks') && (!Apps::system_app_installed(local_channel(), 'CardDAV'))) {
killme();
}
$channel = App::get_channel();
$auth->setCurrentUser($channel['channel_address']);
$auth->channel_id = $channel['channel_id'];
$auth->channel_hash = $channel['channel_hash'];
@@ -161,12 +172,15 @@ class Cdav extends \Zotlabs\Web\Controller {
$nodes = [
// /principals
new \Sabre\CalDAV\Principal\Collection($principalBackend),
// /calendars
new \Sabre\CalDAV\CalendarRoot($principalBackend, $caldavBackend),
// /addressbook
new \Sabre\CardDAV\AddressBookRoot($principalBackend, $carddavBackend),
new \Sabre\CardDAV\AddressBookRoot($principalBackend, $carddavBackend)
];
// The object tree needs in turn to be passed to the server class
$server = new \Sabre\DAV\Server($nodes);
@@ -204,7 +218,11 @@ class Cdav extends \Zotlabs\Web\Controller {
if(! local_channel())
return;
$channel = \App::get_channel();
if((argv(1) === 'addressbook') && (! Apps::system_app_installed(local_channel(), 'CardDAV'))) {
return;
}
$channel = App::get_channel();
$principalUri = 'principals/' . $channel['channel_address'];
if(!cdav_principal($principalUri))
@@ -254,10 +272,19 @@ class Cdav extends \Zotlabs\Web\Controller {
if(!cdav_perms($id[0],$calendars,true))
return;
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get());
$allday = $_REQUEST['allday'];
$title = $_REQUEST['title'];
$dtstart = new \DateTime($_REQUEST['dtstart']);
if($_REQUEST['dtend'])
$dtend = new \DateTime($_REQUEST['dtend']);
$start = datetime_convert('UTC', 'UTC', $_REQUEST['dtstart']);
$dtstart = new \DateTime($start);
if($_REQUEST['dtend']) {
$end = datetime_convert('UTC', 'UTC', $_REQUEST['dtend']);
$dtend = new \DateTime($end);
}
$description = $_REQUEST['description'];
$location = $_REQUEST['location'];
@@ -281,13 +308,24 @@ class Cdav extends \Zotlabs\Web\Controller {
'DTSTART' => $dtstart
]
]);
if($dtend)
if($dtend) {
$vcalendar->VEVENT->add('DTEND', $dtend);
if($allday)
$vcalendar->VEVENT->DTEND['VALUE'] = 'DATE';
else
$vcalendar->VEVENT->DTEND['TZID'] = $tz;
}
if($description)
$vcalendar->VEVENT->add('DESCRIPTION', $description);
if($location)
$vcalendar->VEVENT->add('LOCATION', $location);
if($allday)
$vcalendar->VEVENT->DTSTART['VALUE'] = 'DATE';
else
$vcalendar->VEVENT->DTSTART['TZID'] = $tz;
$calendarData = $vcalendar->serialize();
$caldavBackend->createCalendarObject($id, $objectUri, $calendarData);
@@ -324,10 +362,19 @@ class Cdav extends \Zotlabs\Web\Controller {
if(!cdav_perms($id[0],$calendars,true))
return;
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get());
$allday = $_REQUEST['allday'];
$uri = $_REQUEST['uri'];
$title = $_REQUEST['title'];
$dtstart = new \DateTime($_REQUEST['dtstart']);
$dtend = $_REQUEST['dtend'] ? new \DateTime($_REQUEST['dtend']) : '';
$start = datetime_convert('UTC', 'UTC', $_REQUEST['dtstart']);
$dtstart = new \DateTime($start);
if($_REQUEST['dtend']) {
$end = datetime_convert('UTC', 'UTC', $_REQUEST['dtend']);
$dtend = new \DateTime($end);
}
$description = $_REQUEST['description'];
$location = $_REQUEST['location'];
@@ -337,12 +384,23 @@ class Cdav extends \Zotlabs\Web\Controller {
if($title)
$vcalendar->VEVENT->SUMMARY = $title;
if($dtstart)
if($dtstart) {
$vcalendar->VEVENT->DTSTART = $dtstart;
if($dtend)
if($allday)
$vcalendar->VEVENT->DTSTART['VALUE'] = 'DATE';
else
$vcalendar->VEVENT->DTSTART['TZID'] = $tz;
}
if($dtend) {
$vcalendar->VEVENT->DTEND = $dtend;
if($allday)
$vcalendar->VEVENT->DTEND['VALUE'] = 'DATE';
else
$vcalendar->VEVENT->DTEND['TZID'] = $tz;
}
else
unset($vcalendar->VEVENT->DTEND);
if($description)
$vcalendar->VEVENT->DESCRIPTION = $description;
if($location)
@@ -378,9 +436,18 @@ class Cdav extends \Zotlabs\Web\Controller {
if(!cdav_perms($id[0],$calendars,true))
return;
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get());
$allday = $_REQUEST['allday'];
$uri = $_REQUEST['uri'];
$dtstart = new \DateTime($_REQUEST['dtstart']);
$dtend = $_REQUEST['dtend'] ? new \DateTime($_REQUEST['dtend']) : '';
$start = datetime_convert('UTC', 'UTC', $_REQUEST['dtstart']);
$dtstart = new \DateTime($start);
if($_REQUEST['dtend']) {
$end = datetime_convert('UTC', 'UTC', $_REQUEST['dtend']);
$dtend = new \DateTime($end);
}
$object = $caldavBackend->getCalendarObject($id, $uri);
@@ -388,13 +455,20 @@ class Cdav extends \Zotlabs\Web\Controller {
if($dtstart) {
$vcalendar->VEVENT->DTSTART = $dtstart;
if($allday)
$vcalendar->VEVENT->DTSTART['VALUE'] = 'DATE';
else
$vcalendar->VEVENT->DTSTART['TZID'] = $tz;
}
if($dtend) {
$vcalendar->VEVENT->DTEND = $dtend;
if($allday)
$vcalendar->VEVENT->DTEND['VALUE'] = 'DATE';
else
$vcalendar->VEVENT->DTEND['TZID'] = $tz;
}
else {
else
unset($vcalendar->VEVENT->DTEND);
}
$calendarData = $vcalendar->serialize();
@@ -722,16 +796,27 @@ class Cdav extends \Zotlabs\Web\Controller {
//Import calendar or addressbook
if(($_FILES) && array_key_exists('userfile',$_FILES) && intval($_FILES['userfile']['size']) && $_REQUEST['target']) {
$src = @file_get_contents($_FILES['userfile']['tmp_name']);
$src = $_FILES['userfile']['tmp_name'];
if($src) {
if($_REQUEST['c_upload']) {
if($_REQUEST['target'] == 'channel_calendar') {
$result = parse_ical_file($src,local_channel());
if($result)
info( t('Calendar entries imported.') . EOL);
else
notice( t('No calendar entries found.') . EOL);
@unlink($src);
return;
}
$id = explode(':', $_REQUEST['target']);
$ext = 'ics';
$table = 'calendarobjects';
$column = 'calendarid';
$objects = new \Sabre\VObject\Splitter\ICalendar($src);
$objects = new \Sabre\VObject\Splitter\ICalendar(@file_get_contents($src));
$profile = \Sabre\VObject\Node::PROFILE_CALDAV;
$backend = new \Sabre\CalDAV\Backend\PDO($pdo);
}
@@ -741,7 +826,7 @@ class Cdav extends \Zotlabs\Web\Controller {
$ext = 'vcf';
$table = 'cards';
$column = 'addressbookid';
$objects = new \Sabre\VObject\Splitter\VCard($src);
$objects = new \Sabre\VObject\Splitter\VCard(@file_get_contents($src));
$profile = \Sabre\VObject\Node::PROFILE_CARDDAV;
$backend = new \Sabre\CardDAV\Backend\PDO($pdo);
}
@@ -807,15 +892,24 @@ class Cdav extends \Zotlabs\Web\Controller {
if(!local_channel())
return;
$channel = \App::get_channel();
if((argv(1) === 'addressbook') && (! Apps::system_app_installed(local_channel(), 'CardDAV'))) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('CardDAV App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('CalDAV capable addressbook');
return $o;
}
App::$profile_uid = local_channel();
$channel = App::get_channel();
$principalUri = 'principals/' . $channel['channel_address'];
$pdo = \DBA::$dba->db;
require_once 'vendor/autoload.php';
head_add_css('cdav.css');
if(!cdav_principal($principalUri)) {
$this->activate($pdo, $channel);
if(!cdav_principal($principalUri)) {
@@ -824,28 +918,98 @@ class Cdav extends \Zotlabs\Web\Controller {
}
if(argv(1) === 'calendar') {
nav_set_selected('CalDAV');
nav_set_selected('Calendar');
$caldavBackend = new \Sabre\CalDAV\Backend\PDO($pdo);
$calendars = $caldavBackend->getCalendarsForUser($principalUri);
}
//Display calendar(s) here
if(argc() == 2 && argv(1) === 'calendar') {
if(argc() <= 3 && argv(1) === 'calendar') {
head_add_css('/library/fullcalendar/fullcalendar.css');
head_add_css('/library/fullcalendar/packages/core/main.min.css');
head_add_css('/library/fullcalendar/packages/daygrid/main.min.css');
head_add_css('/library/fullcalendar/packages/timegrid/main.min.css');
head_add_css('/library/fullcalendar/packages/list/main.min.css');
head_add_css('cdav_calendar.css');
head_add_js('/library/moment/moment.min.js', 1);
head_add_js('/library/fullcalendar/fullcalendar.min.js', 1);
head_add_js('/library/fullcalendar/locale-all.js', 1);
head_add_js('/library/fullcalendar/packages/core/main.min.js');
head_add_js('/library/fullcalendar/packages/interaction/main.min.js');
head_add_js('/library/fullcalendar/packages/daygrid/main.min.js');
head_add_js('/library/fullcalendar/packages/timegrid/main.min.js');
head_add_js('/library/fullcalendar/packages/list/main.min.js');
$sources = '';
$resource_id = '';
$resource = null;
if(argc() == 3)
$resource_id = argv(2);
if($resource_id) {
$r = q("SELECT event.*, item.author_xchan, item.owner_xchan, item.plink, item.id as item_id FROM event LEFT JOIN item ON event.event_hash = item.resource_id
WHERE event.uid = %d AND event.event_hash = '%s' LIMIT 1",
intval(local_channel()),
dbesc($resource_id)
);
if($r) {
xchan_query($r);
$r = fetch_post_tags($r,true);
$tz = get_iconfig($r[0], 'event', 'timezone');
if(! $tz)
$tz = 'UTC';
$r[0]['timezone'] = $tz;
$r[0]['dtstart'] = (($r[0]['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $r[0]['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $r[0]['dtstart'], 'c'));
$r[0]['dtend'] = (($r[0]['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $r[0]['dtend'], 'c') : datetime_convert('UTC', 'UTC' ,$r[0]['dtend'], 'c'));
$r[0]['plink'] = [$r[0]['plink'], t('Link to source')];
$resource = $r[0];
$catsenabled = feature_enabled(local_channel(),'categories');
$categories = '';
if($catsenabled){
if($r[0]['term']) {
$cats = get_terms_oftype($r[0]['term'], TERM_CATEGORY);
foreach ($cats as $cat) {
if(strlen($categories))
$categories .= ', ';
$categories .= $cat['term'];
}
}
}
if($r[0]['dismissed'] == 0) {
q("UPDATE event SET dismissed = 1 WHERE event.uid = %d AND event.event_hash = '%s'",
intval(local_channel()),
dbesc($resource_id)
);
}
}
}
if(get_pconfig(local_channel(), 'cdav_calendar', 'channel_calendar')) {
$sources .= '{
id: \'channel_calendar\',
url: \'/channel_calendar/json/\',
color: \'#3a87ad\'
}, ';
}
$channel_calendars[] = [
'displayname' => $channel['channel_name'],
'id' => 'channel_calendar'
];
foreach($calendars as $calendar) {
$editable = (($calendar['share-access'] == 2) ? 'false' : 'true'); // false/true must be string since we're passing it to javascript
$color = (($calendar['{http://apple.com/ns/ical/}calendar-color']) ? $calendar['{http://apple.com/ns/ical/}calendar-color'] : '#3a87ad');
$color = (($calendar['{http://apple.com/ns/ical/}calendar-color']) ? $calendar['{http://apple.com/ns/ical/}calendar-color'] : '#6cad39');
$sharer = (($calendar['share-access'] == 3) ? $calendar['{urn:ietf:params:xml:ns:caldav}calendar-description'] : '');
$switch = get_pconfig(local_channel(), 'cdav_calendar', $calendar['id'][0]);
if($switch) {
$sources .= '{
id: ' . $calendar['id'][0] . ',
url: \'/cdav/calendar/json/' . $calendar['id'][0] . '/' . $calendar['id'][1] . '\',
color: \'' . $color . '\'
}, ';
@@ -862,19 +1026,34 @@ class Cdav extends \Zotlabs\Web\Controller {
$sources = rtrim($sources, ', ');
$first_day = get_pconfig(local_channel(),'system','cal_first_day');
$first_day = feature_enabled(local_channel(), 'cal_first_day');
$first_day = (($first_day) ? $first_day : 0);
$title = ['title', t('Event title')];
$dtstart = ['dtstart', t('Start date and time'), '', t('Example: YYYY-MM-DD HH:mm')];
$dtend = ['dtend', t('End date and time'), '', t('Example: YYYY-MM-DD HH:mm')];
$title = ['title', t('Event title') ];
$dtstart = ['dtstart', t('Start date and time')];
$dtend = ['dtend', t('End date and time')];
$timezone_select = ['timezone_select' , t('Timezone:'), date_default_timezone_get(), '', get_timezones()];
$description = ['description', t('Description')];
$location = ['location', t('Location')];
$catsenabled = feature_enabled(local_channel(), 'categories');
require_once('include/acl_selectors.php');
$accesslist = new \Zotlabs\Access\AccessList($channel);
$perm_defaults = $accesslist->get();
//$acl = (($orig_event['event_xchan']) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $perm_defaults), false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream')));
$acl = populate_acl($perm_defaults, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'));
$permissions = (($resource_id) ? $resource : $perm_defaults);
$o .= replace_macros(get_markup_template('cdav_calendar.tpl'), [
'$sources' => $sources,
'$color' => $color,
'$lang' => \App::$language,
'$lang' => App::$language,
'$timezone' => date_default_timezone_get(),
'$first_day' => $first_day,
'$prev' => t('Previous'),
'$next' => t('Next'),
@@ -886,6 +1065,7 @@ class Cdav extends \Zotlabs\Web\Controller {
'$list_week' => t('List week'),
'$list_day' => t('List day'),
'$title' => $title,
'$channel_calendars' => $channel_calendars,
'$writable_calendars' => $writable_calendars,
'$dtstart' => $dtstart,
'$dtend' => $dtend,
@@ -893,11 +1073,28 @@ class Cdav extends \Zotlabs\Web\Controller {
'$location' => $location,
'$more' => t('More'),
'$less' => t('Less'),
'$update' => t('Update'),
'$calendar_select_label' => t('Select calendar'),
'$calendar_optiopns_label' => [t('Channel Calendars'), t('CalDAV Calendars')],
'$delete' => t('Delete'),
'$delete_all' => t('Delete all'),
'$cancel' => t('Cancel'),
'$recurrence_warning' => t('Sorry! Editing of recurrent events is not yet implemented.')
'$create' => t('Create'),
'$recurrence_warning' => t('Sorry! Editing of recurrent events is not yet implemented.'),
'$channel_hash' => $channel['channel_hash'],
'$acl' => $acl,
'$lockstate' => (($accesslist->is_private()) ? 'lock' : 'unlock'),
'$allow_cid' => acl2json($permissions['allow_cid']),
'$allow_gid' => acl2json($permissions['allow_gid']),
'$deny_cid' => acl2json($permissions['deny_cid']),
'$deny_gid' => acl2json($permissions['deny_gid']),
'$catsenabled' => $catsenabled,
'$categories_label' => t('Categories'),
'$resource' => json_encode($resource),
'$categories' => $categories,
'$timezone_select' => ((feature_enabled(local_channel(),'event_tz_select')) ? $timezone_select : '')
]);
return $o;
@@ -907,10 +1104,12 @@ class Cdav extends \Zotlabs\Web\Controller {
//Provide json data for calendar
if(argc() == 5 && argv(1) === 'calendar' && argv(2) === 'json' && intval(argv(3)) && intval(argv(4))) {
$events = [];
$id = [argv(3), argv(4)];
if(! cdav_perms($id[0],$calendars))
killme();
json_return_and_die($events);
if (x($_GET,'start'))
$start = new \DateTime($_GET['start']);
@@ -927,13 +1126,16 @@ class Cdav extends \Zotlabs\Web\Controller {
if($uris) {
$objects = $caldavBackend->getMultipleCalendarObjects($id, $uris);
foreach($objects as $object) {
$vcalendar = \Sabre\VObject\Reader::read($object['calendardata']);
if(isset($vcalendar->VEVENT->RRULE))
if(isset($vcalendar->VEVENT->RRULE)) {
// expanding recurrent events seems to loose timezone info
// save it here so we can add it later
$recurrent_timezone = (string)$vcalendar->VEVENT->DTSTART['TZID'];
$vcalendar = $vcalendar->expand($start, $end);
}
foreach($vcalendar->VEVENT as $vevent) {
$title = (string)$vevent->SUMMARY;
@@ -941,29 +1143,33 @@ class Cdav extends \Zotlabs\Web\Controller {
$dtend = (string)$vevent->DTEND;
$description = (string)$vevent->DESCRIPTION;
$location = (string)$vevent->LOCATION;
$timezone_str = (string)$vevent->DTSTART['TZID'];
$rw = ((cdav_perms($id[0],$calendars,true)) ? true : false);
$editable = $rw ? true : false;
$recurrent = ((isset($vevent->{'RECURRENCE-ID'})) ? true : false);
$editable = $rw ? true : false;
if($recurrent)
if($recurrent) {
$editable = false;
$timezone_str = $recurrent_timezone;
}
$allDay = false;
// Try to get an usable olson format timezone
$timezone_obj = \Sabre\VObject\TimeZoneUtil::getTimeZone($timezone_str, $vcalendar);
$timezone = $timezone_obj->getName();
// allDay event rules
if(!strpos($dtstart, 'T') && !strpos($dtend, 'T'))
$allDay = true;
if(strpos($dtstart, 'T000000') && strpos($dtend, 'T000000'))
$allDay = true;
// If we got nothing fallback to UTC
if(! $timezone)
$timezone = 'UTC';
$allDay = (((string)$vevent->DTSTART['VALUE'] == 'DATE') ? true : false);
$events[] = [
'calendar_id' => $id,
'uri' => $object['uri'],
'title' => $title,
'start' => $dtstart,
'end' => $dtend,
'timezone' => $timezone,
'start' => datetime_convert($timezone, date_default_timezone_get(), $dtstart, 'c'),
'end' => (($dtend) ? datetime_convert($timezone, date_default_timezone_get(), $dtend, 'c') : ''),
'description' => $description,
'location' => $location,
'allDay' => $allDay,
@@ -973,15 +1179,12 @@ class Cdav extends \Zotlabs\Web\Controller {
];
}
}
json_return_and_die($events);
}
else {
killme();
}
json_return_and_die($events);
}
//enable/disable calendars
if(argc() == 5 && argv(1) === 'calendar' && argv(2) === 'switch' && intval(argv(3)) && (argv(4) == 1 || argv(4) == 0)) {
if(argc() == 5 && argv(1) === 'calendar' && argv(2) === 'switch' && argv(3) && (argv(4) == 1 || argv(4) == 0)) {
$id = argv(3);
if(! cdav_perms($id,$calendars))
@@ -1240,12 +1443,13 @@ class Cdav extends \Zotlabs\Web\Controller {
$caldavBackend = new \Sabre\CalDAV\Backend\PDO($pdo);
$properties = [
'{DAV:}displayname' => t('Default Calendar'),
'{http://apple.com/ns/ical/}calendar-color' => '#3a87ad',
'{http://apple.com/ns/ical/}calendar-color' => '#6cad39',
'{urn:ietf:params:xml:ns:caldav}calendar-description' => $channel['channel_name']
];
$id = $caldavBackend->createCalendar($uri, 'default', $properties);
set_pconfig(local_channel(), 'cdav_calendar' , $id[0], 1);
set_pconfig(local_channel(), 'cdav_calendar' , 'channel_calendar', 1);
//create default addressbook
$carddavBackend = new \Sabre\CardDAV\Backend\PDO($pdo);
+2 -2
View File
@@ -31,7 +31,7 @@ class Changeaddr extends \Zotlabs\Web\Controller {
if($account['account_password_changed'] > NULL_DATE) {
$d1 = datetime_convert('UTC','UTC','now - 48 hours');
if($account['account_password_changed'] > d1) {
if($account['account_password_changed'] > $d1) {
notice( t('Channel name changes are not allowed within 48 hours of changing the account password.') . EOL);
return;
}
@@ -49,7 +49,7 @@ class Changeaddr extends \Zotlabs\Web\Controller {
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;
return;
}
channel_change_address($channel,$new_address);
+136 -61
View File
@@ -2,19 +2,26 @@
namespace Zotlabs\Module;
require_once('include/contact_widgets.php');
use App;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\PermissionDescription;
use Zotlabs\Web\HTTPSig;
use Zotlabs\Lib\Libzot;
require_once('include/items.php');
require_once("include/bbcode.php");
require_once('include/security.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
require_once('include/permissions.php');
require_once('include/opengraph.php');
/**
* @brief Channel Controller
*
*/
class Channel extends \Zotlabs\Web\Controller {
class Channel extends Controller {
function init() {
@@ -26,7 +33,7 @@ class Channel extends \Zotlabs\Web\Controller {
$which = argv(1);
if(! $which) {
if(local_channel()) {
$channel = \App::get_channel();
$channel = App::get_channel();
if($channel && $channel['channel_address'])
$which = $channel['channel_address'];
}
@@ -37,7 +44,49 @@ class Channel extends \Zotlabs\Web\Controller {
}
$profile = 0;
$channel = \App::get_channel();
$channel = App::get_channel();
if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
$which = $channel['channel_address'];
$profile = argv(1);
}
$channel = channelx_by_nick($which);
if(! $channel) {
http_status_exit(404, 'Not found');
}
// handle zot6 channel discovery
if(Libzot::is_zot_request()) {
$sigdata = HTTPSig::verify(file_get_contents('php://input'));
if($sigdata && $sigdata['signer'] && $sigdata['header_valid']) {
$data = json_encode(Libzot::zotinfo([ 'address' => $channel['channel_address'], 'target_url' => $sigdata['signer'] ]));
$s = q("select site_crypto, hubloc_sitekey from site left join hubloc on hubloc_url = site_url where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($sigdata['signer'])
);
if($s) {
$data = json_encode(crypto_encapsulate($data,$s[0]['hubloc_sitekey'],Libzot::best_algorithm($s[0]['site_crypto'])));
}
}
else {
$data = json_encode(Libzot::zotinfo([ 'address' => $channel['channel_address'] ]));
}
$headers = [
'Content-Type' => 'application/x-zot+json',
'Digest' => HTTPSig::generate_digest_header($data),
'(request-target)' => strtolower($_SERVER['REQUEST_METHOD']) . ' ' . $_SERVER['REQUEST_URI']
];
$h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel));
HTTPSig::set_headers($h);
echo $data;
killme();
}
if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
$which = $channel['channel_address'];
@@ -61,21 +110,38 @@ class Channel extends \Zotlabs\Web\Controller {
// Run profile_load() here to make sure the theme is set before
// we start loading content
profile_load($which,$profile);
// Add Opengraph markup
$mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
if(strpos($mid,'b64.') === 0)
$mid = @base64url_decode(substr($mid,4));
if($mid)
$r = q("SELECT * FROM item WHERE mid = '%s' AND uid = %d AND item_private = 0 LIMIT 1",
dbesc($mid),
intval($channel['channel_id'])
);
opengraph_add_meta($r ? $r[0] : [], $channel);
}
function get($update = 0, $load = false) {
$noscript_content = get_config('system', 'noscript_content', '1');
if($load)
$_SESSION['loadtime'] = datetime_convert();
$checkjs = new \Zotlabs\Web\CheckJS(1);
$category = $datequery = $datequery2 = '';
$mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
if(strpos($mid,'b64.') === 0)
$decoded = @base64url_decode(substr($mid,4));
if($decoded)
$mid = $decoded;
$datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
$datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
@@ -95,22 +161,22 @@ class Channel extends \Zotlabs\Web\Controller {
if($update) {
// Ensure we've got a profile owner if updating.
\App::$profile['profile_uid'] = \App::$profile_uid = $update;
App::$profile['profile_uid'] = App::$profile_uid = $update;
}
$is_owner = (((local_channel()) && (\App::$profile['profile_uid'] == local_channel())) ? true : false);
$is_owner = (((local_channel()) && (App::$profile['profile_uid'] == local_channel())) ? true : false);
$channel = \App::get_channel();
$observer = \App::get_observer();
$channel = App::get_channel();
$observer = App::get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
$perms = get_all_perms(\App::$profile['profile_uid'],$ob_hash);
$perms = get_all_perms(App::$profile['profile_uid'],$ob_hash);
if(! $perms['view_stream']) {
// We may want to make the target of this redirect configurable
if($perms['view_profile']) {
notice( t('Insufficient permissions. Request redirected to profile page.') . EOL);
goaway (z_root() . "/profile/" . \App::$profile['channel_address']);
goaway (z_root() . "/profile/" . App::$profile['channel_address']);
}
notice( t('Permission denied.') . EOL);
return;
@@ -121,7 +187,7 @@ class Channel extends \Zotlabs\Web\Controller {
nav_set_selected('Channel Home');
$static = channel_manual_conv_update(\App::$profile['profile_uid']);
$static = channel_manual_conv_update(App::$profile['profile_uid']);
// search terms header
if($search) {
@@ -147,16 +213,16 @@ class Channel extends \Zotlabs\Web\Controller {
$x = array(
'is_owner' => $is_owner,
'allow_location' => ((($is_owner || $observer) && (intval(get_pconfig(\App::$profile['profile_uid'],'system','use_browser_location')))) ? true : false),
'default_location' => (($is_owner) ? \App::$profile['channel_location'] : ''),
'nickname' => \App::$profile['channel_address'],
'lockstate' => (((strlen(\App::$profile['channel_allow_cid'])) || (strlen(\App::$profile['channel_allow_gid'])) || (strlen(\App::$profile['channel_deny_cid'])) || (strlen(\App::$profile['channel_deny_gid']))) ? 'lock' : 'unlock'),
'acl' => (($is_owner) ? populate_acl($channel_acl,true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''),
'allow_location' => ((($is_owner || $observer) && (intval(get_pconfig(App::$profile['profile_uid'],'system','use_browser_location')))) ? true : false),
'default_location' => (($is_owner) ? App::$profile['channel_location'] : ''),
'nickname' => App::$profile['channel_address'],
'lockstate' => (((strlen(App::$profile['channel_allow_cid'])) || (strlen(App::$profile['channel_allow_gid'])) || (strlen(App::$profile['channel_deny_cid'])) || (strlen(App::$profile['channel_deny_gid']))) ? 'lock' : 'unlock'),
'acl' => (($is_owner) ? populate_acl($channel_acl,true, PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? 'yes' : ''),
'bang' => '',
'visitor' => (($is_owner || $observer) ? true : false),
'profile_uid' => \App::$profile['profile_uid'],
'profile_uid' => App::$profile['profile_uid'],
'editor_autocomplete' => true,
'bbco_autocomplete' => 'bbcode',
'bbcode' => true,
@@ -164,7 +230,7 @@ class Channel extends \Zotlabs\Web\Controller {
'reset' => t('Reset form')
);
$o .= status_editor($a,$x);
$o .= status_editor($a,$x,false,'Channel');
}
}
@@ -176,14 +242,14 @@ 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']);
$sql_extra = item_permissions_sql(App::$profile['profile_uid']);
if(get_pconfig(\App::$profile['profile_uid'],'system','channel_list_mode') && (! $mid))
if(feature_enabled(App::$profile['profile_uid'], 'channel_list_mode') && (! $mid))
$page_mode = 'list';
else
$page_mode = 'client';
$abook_uids = " and abook.abook_channel = " . intval(\App::$profile['profile_uid']) . " ";
$abook_uids = " and abook.abook_channel = " . intval(App::$profile['profile_uid']) . " ";
$simple_update = (($update) ? " AND item_unseen = 1 " : '');
@@ -193,7 +259,8 @@ class Channel extends \Zotlabs\Web\Controller {
$sql_extra .= term_query('item',substr($search,1),TERM_HASHTAG,TERM_COMMUNITYTAG);
}
else {
$sql_extra .= sprintf(" AND item.body like '%s' ",
$sql_extra .= sprintf(" AND (item.body like '%s' OR item.title like '%s') ",
dbesc(protect_sprintf('%' . $search . '%')),
dbesc(protect_sprintf('%' . $search . '%'))
);
}
@@ -203,7 +270,7 @@ class Channel extends \Zotlabs\Web\Controller {
head_add_link([
'rel' => 'alternate',
'type' => 'application/json+oembed',
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string),
'href' => z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . App::$query_string),
'title' => 'oembed'
]);
@@ -221,7 +288,7 @@ class Channel extends \Zotlabs\Web\Controller {
$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'])
intval(App::$profile['profile_uid'])
);
$_SESSION['loadtime'] = datetime_convert();
}
@@ -233,7 +300,7 @@ class Channel extends \Zotlabs\Web\Controller {
AND (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra
ORDER BY created DESC",
intval(\App::$profile['profile_uid'])
intval(App::$profile['profile_uid'])
);
$_SESSION['loadtime'] = datetime_convert();
}
@@ -242,10 +309,10 @@ class Channel extends \Zotlabs\Web\Controller {
else {
if(x($category)) {
$sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
$sql_extra2 .= protect_sprintf(term_item_parent_query(App::$profile['profile_uid'],'item', $category, TERM_CATEGORY));
}
if(x($hashtags)) {
$sql_extra2 .= protect_sprintf(term_item_parent_query(\App::$profile['profile_uid'],'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) {
@@ -256,10 +323,6 @@ class Channel extends \Zotlabs\Web\Controller {
$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
@@ -267,15 +330,15 @@ class Channel extends \Zotlabs\Web\Controller {
$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']));
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($noscript_content || $load) {
if($mid) {
$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 . '%'),
intval(\App::$profile['profile_uid'])
intval(App::$profile['profile_uid'])
);
if (! $r) {
notice( t('Permission denied.') . EOL);
@@ -288,8 +351,8 @@ class Channel extends \Zotlabs\Web\Controller {
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'])
ORDER BY $ordering DESC, item_id $pager_sql ",
intval(App::$profile['profile_uid'])
);
}
}
@@ -301,17 +364,17 @@ class Channel extends \Zotlabs\Web\Controller {
$parents_str = ids_to_querystr($r,'item_id');
$items = q("SELECT item.*, item.id AS item_id
$r = q("SELECT item.*, item.id AS item_id
FROM item
WHERE item.uid = %d $item_normal
AND item.parent IN ( %s )
$sql_extra ",
intval(\App::$profile['profile_uid']),
intval(App::$profile['profile_uid']),
dbesc($parents_str)
);
xchan_query($items);
$items = fetch_post_tags($items, true);
xchan_query($r);
$items = fetch_post_tags($r, true);
$items = conv_sort($items,$ordering);
if($load && $mid && (! count($items))) {
@@ -326,22 +389,25 @@ class Channel extends \Zotlabs\Web\Controller {
if((! $update) && (! $load)) {
if($decoded)
$mid = 'b64.' . base64url_encode($mid);
// This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
// because browser prefetching might change it on us. We have to deliver it with the page.
$maxheight = get_pconfig(\App::$profile['profile_uid'],'system','channel_divmore_height');
$maxheight = get_pconfig(App::$profile['profile_uid'],'system','channel_divmore_height');
if(! $maxheight)
$maxheight = 400;
$o .= '<div id="live-channel"></div>' . "\r\n";
$o .= "<script> var profile_uid = " . \App::$profile['profile_uid']
. "; var netargs = '?f='; var profile_page = " . \App::$pager['page']
$o .= "<script> var profile_uid = " . App::$profile['profile_uid']
. "; var netargs = '?f='; var profile_page = " . App::$pager['page']
. "; divmore_height = " . intval($maxheight) . "; </script>\r\n";
\App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
App::$page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
'$baseurl' => z_root(),
'$pgtype' => 'channel',
'$uid' => ((\App::$profile['profile_uid']) ? \App::$profile['profile_uid'] : '0'),
'$uid' => ((App::$profile['profile_uid']) ? App::$profile['profile_uid'] : '0'),
'$gid' => '0',
'$cid' => '0',
'$cmin' => '(-1)',
@@ -354,15 +420,15 @@ class Channel extends \Zotlabs\Web\Controller {
'$wall' => '1',
'$fh' => '0',
'$static' => $static,
'$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
'$page' => ((App::$pager['page'] != 1) ? App::$pager['page'] : 1),
'$search' => $search,
'$xchan' => '',
'$order' => $order,
'$order' => (($order) ? urlencode($order) : ''),
'$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
'$file' => '',
'$cats' => (($category) ? urlencode($category) : ''),
'$tags' => (($hashtags) ? urlencode($hashtags) : ''),
'$mid' => $mid,
'$mid' => (($mid) ? urlencode($mid) : ''),
'$verb' => '',
'$net' => '',
'$dend' => $datequery,
@@ -405,17 +471,26 @@ class Channel extends \Zotlabs\Web\Controller {
$mode = (($search) ? 'search' : 'channel');
if($checkjs->disabled()) {
$o .= conversation($items,$mode,$update,'traditional');
}
else {
if($update) {
$o .= conversation($items,$mode,$update,$page_mode);
}
else {
$o .= '<noscript>';
if($noscript_content) {
$o .= conversation($items,$mode,$update,'traditional');
$o .= alt_pager(count($items));
}
else {
$o .= '<div class="section-content-warning-wrapper">' . t('You must enable javascript for your browser to be able to view this content.') . '</div>';
}
$o .= '</noscript>';
$o .= conversation($items,$mode,$update,$page_mode);
if((! $update) || ($checkjs->disabled())) {
$o .= alt_pager(count($items));
if ($mid && $items[0]['title'])
\App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
App::$page['title'] = $items[0]['title'] . " - " . App::$page['title'];
}
if($mid)
+495
View File
@@ -0,0 +1,495 @@
<?php
namespace Zotlabs\Module;
require_once('include/conversation.php');
require_once('include/bbcode.php');
require_once('include/datetime.php');
require_once('include/event.php');
require_once('include/items.php');
require_once('include/html2plain.php');
class Channel_calendar extends \Zotlabs\Web\Controller {
function post() {
logger('post: ' . print_r($_REQUEST,true), LOGGER_DATA);
if(! local_channel())
return;
$event_id = ((x($_POST,'event_id')) ? intval($_POST['event_id']) : 0);
$event_hash = ((x($_POST,'event_hash')) ? $_POST['event_hash'] : '');
$xchan = ((x($_POST,'xchan')) ? dbesc($_POST['xchan']) : '');
$uid = local_channel();
// only allow editing your own events.
if(($xchan) && ($xchan !== get_observer_hash()))
return;
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get());
$categories = escape_tags(trim($_POST['categories']));
$adjust = intval($_POST['adjust']);
$start = datetime_convert('UTC', 'UTC', escape_tags($_REQUEST['dtstart']));
$finish = datetime_convert('UTC', 'UTC', escape_tags($_REQUEST['dtend']));
$summary = escape_tags(trim($_POST['summary']));
$desc = escape_tags(trim($_POST['desc']));
$location = escape_tags(trim($_POST['location']));
$type = escape_tags(trim($_POST['type']));
// Don't allow the event to finish before it begins.
// It won't hurt anything, but somebody will file a bug report
// and we'll waste a bunch of time responding to it. Time that
// could've been spent doing something else.
if(strcmp($finish,$start) < 0 && !$nofinish) {
notice( t('Event can not end before it has started.') . EOL);
if(intval($_REQUEST['preview'])) {
echo( t('Unable to generate preview.'));
}
killme();
}
if((! $summary) || (! $start)) {
notice( t('Event title and start time are required.') . EOL);
if(intval($_REQUEST['preview'])) {
echo( t('Unable to generate preview.'));
}
killme();
}
$channel = \App::get_channel();
$acl = new \Zotlabs\Access\AccessList(false);
if($event_id) {
$x = q("select * from event where id = %d and uid = %d limit 1",
intval($event_id),
intval(local_channel())
);
if(! $x) {
notice( t('Event not found.') . EOL);
if(intval($_REQUEST['preview'])) {
echo( t('Unable to generate preview.'));
killme();
}
return;
}
$acl->set($x[0]);
$created = $x[0]['created'];
$edited = datetime_convert();
}
else {
$created = $edited = datetime_convert();
$acl->set_from_array($_POST);
}
$post_tags = array();
$channel = \App::get_channel();
$ac = $acl->get();
$str_contact_allow = $ac['allow_cid'];
$str_group_allow = $ac['allow_gid'];
$str_contact_deny = $ac['deny_cid'];
$str_group_deny = $ac['deny_gid'];
$private = $acl->is_private();
require_once('include/text.php');
$results = linkify_tags($desc, local_channel());
if($results) {
// Set permissions based on tag replacements
set_linkified_perms($results, $str_contact_allow, $str_group_allow, local_channel(), false, $private);
foreach($results as $result) {
$success = $result['success'];
if($success['replaced']) {
$post_tags[] = array(
'uid' => local_channel(),
'ttype' => $success['termtype'],
'otype' => TERM_OBJ_POST,
'term' => $success['term'],
'url' => $success['url']
);
}
}
}
if(strlen($categories)) {
$cats = explode(',',$categories);
foreach($cats as $cat) {
$post_tags[] = array(
'uid' => local_channel(),
'ttype' => TERM_CATEGORY,
'otype' => TERM_OBJ_POST,
'term' => trim($cat),
'url' => $channel['xchan_url'] . '?f=&cat=' . urlencode(trim($cat))
);
}
}
$datarray = array();
$datarray['dtstart'] = $start;
$datarray['dtend'] = $finish;
$datarray['summary'] = $summary;
$datarray['description'] = $desc;
$datarray['location'] = $location;
$datarray['etype'] = $type;
$datarray['adjust'] = $adjust;
$datarray['nofinish'] = 0;
$datarray['uid'] = local_channel();
$datarray['account'] = get_account_id();
$datarray['event_xchan'] = $channel['channel_hash'];
$datarray['allow_cid'] = $str_contact_allow;
$datarray['allow_gid'] = $str_group_allow;
$datarray['deny_cid'] = $str_contact_deny;
$datarray['deny_gid'] = $str_group_deny;
$datarray['private'] = intval($private);
$datarray['id'] = $event_id;
$datarray['created'] = $created;
$datarray['edited'] = $edited;
$datarray['timezone'] = $tz;
if(intval($_REQUEST['preview'])) {
$html = format_event_html($datarray);
echo $html;
killme();
}
$event = event_store_event($datarray);
if($post_tags)
$datarray['term'] = $post_tags;
$item_id = event_store_item($datarray,$event);
if($item_id) {
$r = q("select * from item where id = %d",
intval($item_id)
);
if($r) {
xchan_query($r);
$sync_item = fetch_post_tags($r);
$z = q("select * from event where event_hash = '%s' and uid = %d limit 1",
dbesc($r[0]['resource_id']),
intval($channel['channel_id'])
);
if($z) {
build_sync_packet($channel['channel_id'],array('event_item' => array(encode_item($sync_item[0],true)),'event' => $z));
}
}
}
\Zotlabs\Daemon\Master::Summon(array('Notifier','event',$item_id));
killme();
}
function get() {
if(argc() > 2 && argv(1) == 'ical') {
$event_id = argv(2);
require_once('include/security.php');
$sql_extra = permissions_sql(local_channel());
$r = q("select * from event where event_hash = '%s' $sql_extra limit 1",
dbesc($event_id)
);
if($r) {
header('Content-type: text/calendar');
header('content-disposition: attachment; filename="' . t('event') . '-' . $event_id . '.ics"' );
echo ical_wrapper($r);
killme();
}
else {
notice( t('Event not found.') . EOL );
return;
}
}
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
return;
}
if((argc() > 2) && (argv(1) === 'ignore') && intval(argv(2))) {
$r = q("update event set dismissed = 1 where id = %d and uid = %d",
intval(argv(2)),
intval(local_channel())
);
}
if((argc() > 2) && (argv(1) === 'unignore') && intval(argv(2))) {
$r = q("update event set dismissed = 0 where id = %d and uid = %d",
intval(argv(2)),
intval(local_channel())
);
}
$channel = \App::get_channel();
$mode = 'view';
$export = false;
$ignored = ((x($_REQUEST,'ignored')) ? " and dismissed = " . intval($_REQUEST['ignored']) . " " : '');
if(argc() > 1) {
if(argc() > 2 && argv(1) === 'add') {
$mode = 'add';
$item_id = intval(argv(2));
}
if(argc() > 2 && argv(1) === 'drop') {
$mode = 'drop';
$event_id = argv(2);
}
if(argc() <= 2 && argv(1) === 'export') {
$export = true;
}
if(argc() > 2 && intval(argv(1)) && intval(argv(2))) {
$mode = 'view';
}
if(argc() <= 2) {
$mode = 'view';
$event_id = argv(1);
}
}
if($mode === 'add') {
event_addtocal($item_id,local_channel());
killme();
}
if($mode == 'view') {
/* edit/create form */
if($event_id) {
$r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
dbesc($event_id),
intval(local_channel())
);
if(count($r))
$orig_event = $r[0];
}
$channel = \App::get_channel();
if (argv(1) === 'json'){
if (x($_GET,'start')) $start = $_GET['start'];
if (x($_GET,'end')) $finish = $_GET['end'];
}
$start = datetime_convert('UTC','UTC',$start);
$finish = datetime_convert('UTC','UTC',$finish);
$adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start);
$adjust_finish = datetime_convert('UTC', date_default_timezone_get(), $finish);
if (x($_GET,'id')){
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id
from event left join item on item.resource_id = event.event_hash
where item.resource_type = 'event' and event.uid = %d and event.id = %d limit 1",
intval(local_channel()),
intval($_GET['id'])
);
}
elseif($export) {
$r = q("SELECT event.*, item.id as item_id
from event left join item on item.resource_id = event.event_hash
where event.uid = %d and event.dtstart > '%s' and event.dtend > event.dtstart",
intval(local_channel()),
dbesc(NULL_DATE)
);
}
else {
// fixed an issue with "nofinish" events not showing up in the calendar.
// There's still an issue if the finish date crosses the end of month.
// Noting this for now - it will need to be fixed here and in Friendica.
// Ultimately the finish date shouldn't be involved in the query.
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id
from event left join item on event.event_hash = item.resource_id
where item.resource_type = 'event' and event.uid = %d and event.uid = item.uid $ignored
AND (( event.adjust = 0 AND ( event.dtend >= '%s' or event.nofinish = 1 ) AND event.dtstart <= '%s' )
OR ( event.adjust = 1 AND ( event.dtend >= '%s' or event.nofinish = 1 ) AND event.dtstart <= '%s' )) ",
intval(local_channel()),
dbesc($start),
dbesc($finish),
dbesc($adjust_start),
dbesc($adjust_finish)
);
}
if($r && ! $export) {
xchan_query($r);
$r = fetch_post_tags($r,true);
$r = sort_by_date($r);
}
$events = [];
if($r) {
foreach($r as $rr) {
$tz = get_iconfig($rr, 'event', 'timezone');
if(! $tz)
$tz = 'UTC';
$start = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtstart'], 'c'));
if ($rr['nofinish']){
$end = null;
} else {
$end = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtend'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtend'], 'c'));
}
$catsenabled = feature_enabled(local_channel(),'categories');
$categories = '';
if($catsenabled){
if($rr['term']) {
$cats = get_terms_oftype($rr['term'], TERM_CATEGORY);
foreach ($cats as $cat) {
if(strlen($categories))
$categories .= ', ';
$categories .= $cat['term'];
}
}
}
$edit = ((local_channel() && $rr['author_xchan'] == get_observer_hash()) ? array(z_root().'/events/'.$rr['event_hash'].'?expandform=1',t('Edit event'),'','') : false);
$drop = array(z_root().'/events/drop/'.$rr['event_hash'],t('Delete event'),'','');
$events[] = array(
'calendar_id' => 'channel_calendar',
'rw' => true,
'id'=>$rr['id'],
'uri' => $rr['event_hash'],
'timezone' => $tz,
'start'=> $start,
'end' => $end,
'drop' => $drop,
'allDay' => (($rr['adjust']) ? 0 : 1),
'title' => html_entity_decode($rr['summary'], ENT_COMPAT, 'UTF-8'),
'editable' => $edit ? true : false,
'item' => $rr,
'plink' => [$rr['plink'], t('Link to source')],
'description' => html_entity_decode($rr['description'], ENT_COMPAT, 'UTF-8'),
'location' => html_entity_decode($rr['location'], ENT_COMPAT, 'UTF-8'),
'allow_cid' => expand_acl($rr['allow_cid']),
'allow_gid' => expand_acl($rr['allow_gid']),
'deny_cid' => expand_acl($rr['deny_cid']),
'deny_gid' => expand_acl($rr['deny_gid']),
'categories' => $categories
);
}
}
if($export) {
header('Content-type: text/calendar');
header('content-disposition: attachment; filename="' . t('calendar') . '-' . $channel['channel_address'] . '.ics"' );
echo ical_wrapper($r);
killme();
}
if (\App::$argv[1] === 'json'){
json_return_and_die($events);
}
}
if($mode === 'drop' && $event_id) {
$r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
dbesc($event_id),
intval(local_channel())
);
$sync_event = $r[0];
if($r) {
$r = q("delete from event where event_hash = '%s' and uid = %d",
dbesc($event_id),
intval(local_channel())
);
if($r) {
$sync_event['event_deleted'] = 1;
build_sync_packet(0,array('event' => array($sync_event)));
$i = q("select * from item where resource_type = 'event' and resource_id = '%s' and uid = %d",
dbesc($event_id),
intval(local_channel())
);
if ($i) {
$can_delete = false;
$local_delete = true;
$ob_hash = get_observer_hash();
if($ob_hash && ($ob_hash === $i[0]['author_xchan'] || $ob_hash === $i[0]['owner_xchan'] || $ob_hash === $i[0]['source_xchan'])) {
$can_delete = true;
}
// The site admin can delete any post/item on the site.
// If the item originated on this site+channel the deletion will propagate downstream.
// Otherwise just the local copy is removed.
if(is_site_admin()) {
$local_delete = true;
if(intval($i[0]['item_origin']))
$can_delete = true;
}
if($can_delete || $local_delete) {
// if this is a different page type or it's just a local delete
// but not by the item author or owner, do a simple deletion
$complex = false;
if(intval($i[0]['item_type']) || ($local_delete && (! $can_delete))) {
drop_item($i[0]['id']);
}
else {
// complex deletion that needs to propagate and be performed in phases
drop_item($i[0]['id'],true,DROPITEM_PHASE1);
$complex = true;
}
$ii = q("select * from item where id = %d",
intval($i[0]['id'])
);
if($ii) {
xchan_query($ii);
$sync_item = fetch_post_tags($ii);
build_sync_packet($i[0]['uid'],array('item' => array(encode_item($sync_item[0],true))));
}
if($complex) {
tag_deliver($i[0]['uid'],$i[0]['id']);
}
}
}
killme();
}
notice( t('Failed to remove event' ) . EOL);
killme();
}
}
}
}
+1 -1
View File
@@ -106,7 +106,7 @@ class Chanview extends \Zotlabs\Web\Controller {
if (\App::$poi) {
$url = \App::$poi['xchan_url'];
if(\App::$poi['xchan_network'] === 'zot') {
if(in_array(\App::$poi['xchan_network'], ['zot', 'zot6'])) {
$is_zot = true;
}
if(local_channel()) {
+39 -31
View File
@@ -1,13 +1,19 @@
<?php /** @file */
namespace Zotlabs\Module;
namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Chatroom;
use Zotlabs\Access\AccessList;
require_once('include/bookmarks.php');
use \Zotlabs\Lib as Zlib;
class Chat extends \Zotlabs\Web\Controller {
class Chat extends Controller {
function init() {
@@ -16,7 +22,7 @@ class Chat extends \Zotlabs\Web\Controller {
$which = argv(1);
if(! $which) {
if(local_channel()) {
$channel = \App::get_channel();
$channel = App::get_channel();
if($channel && $channel['channel_address'])
$which = $channel['channel_address'];
}
@@ -27,7 +33,7 @@ class Chat extends \Zotlabs\Web\Controller {
}
$profile = 0;
$channel = \App::get_channel();
$channel = App::get_channel();
if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
$which = $channel['channel_address'];
@@ -49,16 +55,16 @@ class Chat extends \Zotlabs\Web\Controller {
if((! $room) || (! local_channel()))
return;
$channel = \App::get_channel();
$channel = App::get_channel();
if($_POST['action'] === 'drop') {
logger('delete chatroom');
Zlib\Chatroom::destroy($channel,array('cr_name' => $room));
Chatroom::destroy($channel,array('cr_name' => $room));
goaway(z_root() . '/chat/' . $channel['channel_address']);
}
$acl = new \Zotlabs\Access\AccessList($channel);
$acl = new AccessList($channel);
$acl->set_from_array($_REQUEST);
$arr = $acl->get();
@@ -67,7 +73,7 @@ class Chat extends \Zotlabs\Web\Controller {
if(intval($arr['expire']) < 0)
$arr['expire'] = 0;
Zlib\Chatroom::create($channel,$arr);
Chatroom::create($channel,$arr);
$x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
dbesc($room),
@@ -88,26 +94,35 @@ class Chat extends \Zotlabs\Web\Controller {
function get() {
if(! Apps::system_app_installed(App::$profile_uid, 'Chatrooms')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Chatrooms App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('Access Controlled Chatrooms');
return $o;
}
if(local_channel()) {
$channel = \App::get_channel();
nav_set_selected('My Chatrooms');
$channel = App::get_channel();
nav_set_selected('Chatrooms');
}
$ob = \App::get_observer();
$ob = App::get_observer();
$observer = get_observer_hash();
if(! $observer) {
notice( t('Permission denied.') . EOL);
return;
}
if(! perm_is_allowed(\App::$profile['profile_uid'],$observer,'chat')) {
if(! perm_is_allowed(App::$profile['profile_uid'],$observer,'chat')) {
notice( t('Permission denied.') . EOL);
return;
}
if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) {
Zlib\Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
goaway(z_root() . '/channel/' . argv(1));
}
@@ -160,16 +175,16 @@ class Chat extends \Zotlabs\Web\Controller {
$room_id = intval(argv(2));
$bookmark_link = get_bookmark_link($ob);
$x = Zlib\Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
$x = Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
if(! $x)
return;
$x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
intval($room_id),
intval(\App::$profile['profile_uid'])
intval(App::$profile['profile_uid'])
);
if($x) {
$acl = new \Zotlabs\Access\AccessList(false);
$acl = new AccessList(false);
$acl->set($x[0]);
$private = $acl->is_private();
@@ -208,19 +223,12 @@ class Chat extends \Zotlabs\Web\Controller {
));
return $o;
}
require_once('include/conversation.php');
//$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);
return $o;
}
$acl = new \Zotlabs\Access\AccessList($channel);
$acl = new AccessList($channel);
$channel_acl = $acl->get();
$lockstate = (($channel_acl['allow_cid'] || $channel_acl['allow_gid'] || $channel_acl['deny_cid'] || $channel_acl['deny_gid']) ? 'lock' : 'unlock');
@@ -244,17 +252,17 @@ class Chat extends \Zotlabs\Web\Controller {
));
}
$rooms = Zlib\Chatroom::roomlist(\App::$profile['profile_uid']);
$rooms = Chatroom::roomlist(App::$profile['profile_uid']);
$o .= replace_macros(get_markup_template('chatrooms.tpl'), array(
'$header' => sprintf( t('%1$s\'s Chatrooms'), \App::$profile['fullname']),
'$header' => sprintf( t('%1$s\'s Chatrooms'), App::$profile['fullname']),
'$name' => t('Name'),
'$baseurl' => z_root(),
'$nickname' => \App::$profile['channel_address'],
'$nickname' => App::$profile['channel_address'],
'$rooms' => $rooms,
'$norooms' => t('No chatrooms available'),
'$newroom' => t('Create New'),
'$is_owner' => ((local_channel() && local_channel() == \App::$profile['profile_uid']) ? 1 : 0),
'$is_owner' => ((local_channel() && local_channel() == App::$profile['profile_uid']) ? 1 : 0),
'$chatroom_new' => $chatroom_new,
'$expire' => t('Expiration'),
'$expire_unit' => t('min') //minutes
-7
View File
@@ -35,13 +35,6 @@ 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)
+47 -21
View File
@@ -1,21 +1,21 @@
<?php
namespace Zotlabs\Module; /** @file */
use App;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Apps;
require_once('include/contact_widgets.php');
require_once('include/items.php');
class Connect extends \Zotlabs\Web\Controller {
class Connect extends Controller {
function init() {
if(argc() > 1)
$which = argv(1);
else {
notice( t('Requested profile is not available.') . EOL );
\App::$error = 404;
App::$error = 404;
return;
}
@@ -24,20 +24,32 @@ class Connect extends \Zotlabs\Web\Controller {
);
if($r)
\App::$data['channel'] = $r[0];
App::$data['channel'] = $r[0];
$channel_id = App::$data['channel']['channel_id'];
if(! Apps::system_app_installed($channel_id, 'Premium Channel')) {
return;
}
profile_load($which,'');
}
function post() {
if(! array_key_exists('channel', \App::$data))
if(! array_key_exists('channel', App::$data))
return;
$channel_id = App::$data['channel']['channel_id'];
if(! Apps::system_app_installed($channel_id, 'Premium Channel')) {
return;
}
$edit = ((local_channel() && (local_channel() == \App::$data['channel']['channel_id'])) ? true : false);
$edit = ((local_channel() && (local_channel() == $channel_id)) ? true : false);
if($edit) {
$has_premium = ((\App::$data['channel']['channel_pageflags'] & PAGE_PREMIUM) ? 1 : 0);
$has_premium = ((App::$data['channel']['channel_pageflags'] & PAGE_PREMIUM) ? 1 : 0);
$premium = (($_POST['premium']) ? intval($_POST['premium']) : 0);
$text = escape_tags($_POST['text']);
@@ -48,25 +60,25 @@ class Connect extends \Zotlabs\Web\Controller {
intval(local_channel())
);
\Zotlabs\Daemon\Master::Summon(array('Notifier','refresh_all',\App::$data['channel']['channel_id']));
\Zotlabs\Daemon\Master::Summon(array('Notifier','refresh_all',$channel_id));
}
set_pconfig(\App::$data['channel']['channel_id'],'system','selltext',$text);
set_pconfig($channel_id,'system','selltext',$text);
// reload the page completely to get fresh data
goaway(z_root() . '/' . \App::$query_string);
goaway(z_root() . '/' . App::$query_string);
}
$url = '';
$observer = \App::get_observer();
$observer = App::get_observer();
if(($observer) && ($_POST['submit'] === t('Continue'))) {
if($observer['xchan_follow'])
$url = sprintf($observer['xchan_follow'],urlencode(channel_reddress(\App::$data['channel'])));
$url = sprintf($observer['xchan_follow'],urlencode(channel_reddress(App::$data['channel'])));
if(! $url) {
$r = q("select * from hubloc where hubloc_hash = '%s' order by hubloc_id desc limit 1",
dbesc($observer['xchan_hash'])
);
if($r)
$url = $r[0]['hubloc_url'] . '/follow?f=&url=' . urlencode(channel_reddress(\App::$data['channel']));
$url = $r[0]['hubloc_url'] . '/follow?f=&url=' . urlencode(channel_reddress(App::$data['channel']));
}
}
if($url)
@@ -79,17 +91,31 @@ class Connect extends \Zotlabs\Web\Controller {
function get() {
if(! array_key_exists('channel', App::$data))
return;
$channel_id = App::$data['channel']['channel_id'];
if(! Apps::system_app_installed($channel_id, 'Premium Channel')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Premium Channel App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('Allows you to set restrictions and terms on those that connect with your channel');
return $o;
}
$edit = ((local_channel() && (local_channel() == \App::$data['channel']['channel_id'])) ? true : false);
$edit = ((local_channel() && (local_channel() == $channel_id)) ? true : false);
$text = get_pconfig(\App::$data['channel']['channel_id'],'system','selltext');
$text = get_pconfig($channel_id,'system','selltext');
if($edit) {
$o = replace_macros(get_markup_template('sellpage_edit.tpl'),array(
'$header' => t('Premium Channel Setup'),
'$address' => \App::$data['channel']['channel_address'],
'$premium' => array('premium', t('Enable premium channel connection restrictions'),((\App::$data['channel']['channel_pageflags'] & PAGE_PREMIUM) ? '1' : ''),''),
'$address' => App::$data['channel']['channel_address'],
'$premium' => array('premium', t('Enable premium channel connection restrictions'),((App::$data['channel']['channel_pageflags'] & PAGE_PREMIUM) ? '1' : ''),''),
'$lbl_about' => t('Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc.'),
'$text' => $text,
'$desc' => t('This channel may require additional steps or acknowledgement of the following conditions prior to connecting:'),
@@ -107,7 +133,7 @@ class Connect extends \Zotlabs\Web\Controller {
$submit = replace_macros(get_markup_template('sellpage_submit.tpl'), array(
'$continue' => t('Continue'),
'$address' => \App::$data['channel']['channel_address']
'$address' => App::$data['channel']['channel_address']
));
$o = replace_macros(get_markup_template('sellpage_view.tpl'),array(
@@ -120,7 +146,7 @@ class Connect extends \Zotlabs\Web\Controller {
));
$arr = array('channel' => \App::$data['channel'],'observer' => \App::get_observer(), 'sellpage' => $o, 'submit' => $submit);
$arr = array('channel' => App::$data['channel'],'observer' => App::get_observer(), 'sellpage' => $o, 'submit' => $submit);
call_hooks('connect_premium', $arr);
$o = $arr['sellpage'];
+34 -14
View File
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
use App;
require_once('include/socgraph.php');
require_once('include/selectors.php');
@@ -12,8 +13,10 @@ class Connections extends \Zotlabs\Web\Controller {
if(! local_channel())
return;
App::$profile_uid = local_channel();
$channel = \App::get_channel();
$channel = App::get_channel();
if($channel)
head_set_icon($channel['xchan_photo_s']);
@@ -43,7 +46,7 @@ class Connections extends \Zotlabs\Web\Controller {
$all = false;
if(! $_REQUEST['aj'])
$_SESSION['return_url'] = \App::$query_string;
$_SESSION['return_url'] = App::$query_string;
$search_flags = "";
$head = '';
@@ -88,14 +91,14 @@ class Connections extends \Zotlabs\Web\Controller {
$search_flags = " and abook_pending = 1 ";
$head = t('New');
$pending = true;
\App::$argv[1] = 'pending';
App::$argv[1] = 'pending';
}
else {
$head = t('All');
$search_flags = '';
$all = true;
\App::$argc = 1;
unset(\App::$argv[1]);
App::$argc = 1;
unset(App::$argv[1]);
}
break;
// case 'unconnected':
@@ -124,6 +127,20 @@ class Connections extends \Zotlabs\Web\Controller {
$unblocked = true;
}
switch($_REQUEST['order']) {
case 'name_desc':
$sql_order = 'xchan_name DESC';
break;
case 'connected':
$sql_order = 'abook_created';
break;
case 'connected_desc':
$sql_order = 'abook_created DESC';
break;
default:
$sql_order = 'xchan_name';
}
$search = ((x($_REQUEST,'search')) ? notags(trim($_REQUEST['search'])) : '');
$tabs = array(
@@ -217,7 +234,7 @@ class Connections extends \Zotlabs\Web\Controller {
$sql_extra .= (($searching) ? protect_sprintf(" AND xchan_name like '%$search_txt%' ") : "");
if($_REQUEST['gid']) {
$sql_extra .= " and xchan_hash in ( select xchan from group_member where gid = " . intval($_REQUEST['gid']) . " and uid = " . intval(local_channel()) . " ) ";
$sql_extra .= " and xchan_hash in ( select xchan from pgrp_member where gid = " . intval($_REQUEST['gid']) . " and uid = " . intval(local_channel()) . " ) ";
}
$r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
@@ -225,15 +242,15 @@ class Connections extends \Zotlabs\Web\Controller {
intval(local_channel())
);
if($r) {
\App::set_pager_total($r[0]['total']);
App::set_pager_total($r[0]['total']);
$total = $r[0]['total'];
}
$r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
WHERE abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT %d OFFSET %d ",
WHERE abook_channel = %d and abook_self = 0 and xchan_deleted = 0 and xchan_orphan = 0 $sql_extra $sql_extra2 ORDER BY $sql_order LIMIT %d OFFSET %d ",
intval(local_channel()),
intval(\App::$pager['itemspage']),
intval(\App::$pager['start'])
intval(App::$pager['itemspage']),
intval(App::$pager['start'])
);
$contacts = array();
@@ -304,8 +321,11 @@ 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']),
'oneway' => $oneway
'recentlink' => z_root() . '/network/?f=&cid=' . intval($rr['abook_id']) . '&name=' . $rr['xchan_name'],
'oneway' => $oneway,
'connect' => (intval($rr['abook_not_here']) ? t('Connect') : ''),
'follow' => z_root() . '/follow/?f=&url=' . urlencode($rr['xchan_hash']) . '&interactive=0',
'connect_hover' => t('Connect at this location')
);
}
}
@@ -326,7 +346,7 @@ class Connections extends \Zotlabs\Web\Controller {
killme();
}
else {
$o .= "<script> var page_query = '" . escape_tags($_GET['q']) . "'; var extra_args = '" . extra_query_args() . "' ; </script>";
$o .= "<script> var page_query = '" . escape_tags(urlencode($_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,
@@ -337,7 +357,7 @@ class Connections extends \Zotlabs\Web\Controller {
'$finding' => (($searching) ? t('Connections search') . ": '" . $search . "'" : ""),
'$submit' => t('Find'),
'$edit' => t('Edit'),
'$cmd' => \App::$cmd,
'$cmd' => App::$cmd,
'$contacts' => $contacts,
'$paginate' => paginate($a),
+29 -12
View File
@@ -7,6 +7,8 @@ namespace Zotlabs\Module;
*
*/
use Zotlabs\Lib\Apps;
use Zotlabs\Lib\Libzot;
require_once('include/socgraph.php');
require_once('include/selectors.php');
@@ -99,7 +101,8 @@ class Connedit extends \Zotlabs\Web\Controller {
}
$profile_id = $_POST['profile_assign'];
$profile_id = ((array_key_exists('profile_assign',$_POST)) ? $_POST['profile_assign'] : $orig_record[0]['abook_profile']);
if($profile_id) {
$r = q("SELECT profile_guid FROM profile WHERE profile_guid = '%s' AND uid = %d LIMIT 1",
dbesc($profile_id),
@@ -111,18 +114,23 @@ class Connedit extends \Zotlabs\Web\Controller {
}
}
$abook_incl = escape_tags($_POST['abook_incl']);
$abook_excl = escape_tags($_POST['abook_excl']);
$abook_incl = ((array_key_exists('abook_incl',$_POST)) ? escape_tags($_POST['abook_incl']) : $orig_record[0]['abook_incl']);
$abook_excl = ((array_key_exists('abook_excl',$_POST)) ? escape_tags($_POST['abook_excl']) : $orig_record[0]['abook_excl']);
$hidden = intval($_POST['hidden']);
$priority = intval($_POST['poll']);
if($priority > 5 || $priority < 0)
$priority = 0;
if(! array_key_exists('closeness',$_POST)) {
$_POST['closeness'] = 80;
}
$closeness = intval($_POST['closeness']);
if($closeness < 0)
$closeness = 99;
if($closeness < 0 || $closeness > 99) {
$closeness = 80;
}
$rating = intval($_POST['rating']);
if($rating < (-10))
@@ -229,6 +237,8 @@ class Connedit extends \Zotlabs\Web\Controller {
}
$abook_pending = (($new_friend) ? 0 : $orig_record[0]['abook_pending']);
$r = q("UPDATE abook SET abook_profile = '%s', abook_closeness = %d, abook_pending = %d,
abook_incl = '%s', abook_excl = '%s'
@@ -474,6 +484,10 @@ class Connedit extends \Zotlabs\Web\Controller {
if(! zot_refresh($orig_record[0],\App::get_channel()))
notice( t('Refresh failed - channel is currently unavailable.') );
}
elseif($orig_record[0]['xchan_network'] === 'zot6') {
if(! Libzot::refresh($orig_record[0],\App::get_channel()))
notice( t('Refresh failed - channel is currently unavailable.') );
}
else {
// if you are on a different network we'll force a refresh of the connection basic info
@@ -696,7 +710,7 @@ class Connedit extends \Zotlabs\Web\Controller {
$tpl = get_markup_template("abook_edit.tpl");
if(feature_enabled(local_channel(),'affinity')) {
if(Apps::system_app_installed(local_channel(),'Affinity Tool')) {
$sections['affinity'] = [
'label' => t('Affinity'),
@@ -727,9 +741,12 @@ class Connedit extends \Zotlabs\Web\Controller {
}
$slider_tpl = get_markup_template('contact_slider.tpl');
$slideval = intval($contact['abook_closeness']);
$slide = replace_macros($slider_tpl,array(
'$min' => 1,
'$val' => (($contact['abook_closeness']) ? $contact['abook_closeness'] : 99),
'$val' => $slideval,
'$labels' => $label_str,
));
}
@@ -774,7 +791,7 @@ class Connedit extends \Zotlabs\Web\Controller {
$global_perms = \Zotlabs\Access\Permissions::Perms();
$existing = get_all_perms(local_channel(),$contact['abook_xchan']);
$existing = get_all_perms(local_channel(),$contact['abook_xchan'],false);
$unapproved = array('pending', t('Approve this connection'), '', t('Accept connection to allow communication'), array(t('No'),('Yes')));
@@ -831,7 +848,7 @@ class Connedit extends \Zotlabs\Web\Controller {
$locstr = unpunify($contact['xchan_url']);
$clone_warn = '';
$clonable = (in_array($contact['xchan_network'],['zot','rss']) ? true : false);
$clonable = (in_array($contact['xchan_network'],['zot', 'zot6', 'rss']) ? true : false);
if(! $clonable) {
$clone_warn = '<strong>';
$clone_warn .= ((intval($contact['abook_not_here']))
@@ -851,7 +868,7 @@ class Connedit extends \Zotlabs\Web\Controller {
'$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'), '', '<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'),
'$permcat_enable' => Apps::system_app_installed(local_channel(), 'Permission Categories'),
'$addr' => unpunify($contact['xchan_addr']),
'$primeurl' => unpunify($contact['xchan_url']),
'$section' => $section,
@@ -886,7 +903,7 @@ class Connedit extends \Zotlabs\Web\Controller {
'$inherited' => t('inherited'),
'$submit' => t('Submit'),
'$lbl_vis2' => sprintf( t('Please choose the profile you would like to display to %s when viewing your profile securely.'), $contact['xchan_name']),
'$close' => $contact['abook_closeness'],
'$close' => (($contact['abook_closeness']) ? $contact['abook_closeness'] : 80),
'$them' => t('Their Settings'),
'$me' => t('My Settings'),
'$perms' => $perms,
+1 -1
View File
@@ -23,7 +23,7 @@ class Contactgroup extends \Zotlabs\Web\Controller {
if((argc() > 1) && (intval(argv(1)))) {
$r = q("SELECT * FROM groups WHERE id = %d AND uid = %d AND deleted = 0 LIMIT 1",
$r = q("SELECT * FROM pgrp WHERE id = %d AND uid = %d AND deleted = 0 LIMIT 1",
intval(argv(1)),
intval(local_channel())
);
+55 -20
View File
@@ -48,6 +48,32 @@ class Cover_photo extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
check_form_security_token_redirectOnErr('/cover_photo', 'cover_photo');
// Remove cover photo
if(isset($_POST['remove'])) {
$r = q("SELECT resource_id FROM photo WHERE photo_usage = %d AND uid = %d LIMIT 1",
intval(PHOTO_COVER),
intval(local_channel())
);
if($r) {
q("update photo set photo_usage = %d where photo_usage = %d and uid = %d",
intval(PHOTO_NORMAL),
intval(PHOTO_COVER),
intval(local_channel())
);
$sync = attach_export_data($channel,$r[0]['resource_id']);
if($sync)
build_sync_packet($channel['channel_id'],array('file' => array($sync)));
}
// Update directory in background
\Zotlabs\Daemon\Master::Summon(array('Directory',$channel['channel_id']));
goaway(z_root() . '/cover_photo');
}
if((array_key_exists('cropfinal',$_POST)) && ($_POST['cropfinal'] == 1)) {
@@ -106,7 +132,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
if(file_exists($tmp_name)) {
$base_image = $r[0];
$gis = getimagesize($tmp_name);
logger('gis: ' . print_r($gis,true));
logger('gis: ' . print_r($gis,true), LOGGER_DEBUG);
$base_image['width'] = $gis[0];
$base_image['height'] = $gis[1];
$base_image['content'] = @file_get_contents($tmp_name);
@@ -167,25 +193,18 @@ logger('gis: ' . print_r($gis,true));
'filename' => $base_image['filename'],
'album' => t('Cover Photos'),
'os_path' => $base_image['os_path'],
'display_path' => $base_image['display_path']
'display_path' => $base_image['display_path'],
'photo_usage' => PHOTO_COVER
];
$p['imgscale'] = 7;
$p['photo_usage'] = PHOTO_COVER;
$r1 = $im->save($p);
$r1 = $im->storeThumbnail($p, PHOTO_RES_COVER_1200);
$im->doScaleImage(850,310);
$p['imgscale'] = 8;
$r2 = $im->save($p);
$r2 = $im->storeThumbnail($p, PHOTO_RES_COVER_850);
$im->doScaleImage(425,160);
$p['imgscale'] = 9;
$r3 = $im->save($p);
$r3 = $im->storeThumbnail($p, PHOTO_RES_COVER_425);
if($r1 === false || $r2 === false || $r3 === false) {
// if one failed, delete them all so we can start over.
notice( t('Image resize failed.') . EOL );
@@ -193,13 +212,28 @@ logger('gis: ' . print_r($gis,true));
dbesc($base_image['resource_id']),
local_channel()
);
$x = q("SELECT content FROM photo WHERE resource_id = '%s' AND uid = %d AND os_storage = 1 AND imgscale >= 7",
dbesc($base_image['resource_id']),
local_channel()
);
if($x) {
foreach($x as $xx) {
@unlink(dbunescbin($xx['content']));
}
}
return;
}
$channel = \App::get_channel();
$this->send_cover_photo_activity($channel,$base_image,$profile);
$sync = attach_export_data($channel,$base_image['resource_id']);
if($sync)
build_sync_packet($channel['channel_id'],array('file' => array($sync)));
// Update directory in background
\Zotlabs\Daemon\Master::Summon(array('Directory',$channel['channel_id']));
}
else
notice( t('Unable to process image') . EOL);
@@ -215,7 +249,7 @@ logger('gis: ' . print_r($gis,true));
require_once('include/attach.php');
$res = attach_store(\App::get_channel(), get_observer_hash(), '', array('album' => t('Cover Photos'), 'hash' => $hash));
$res = attach_store(\App::get_channel(), get_observer_hash(), '', array('album' => t('Cover Photos'), 'hash' => $hash, 'nosync' => true));
logger('attach_store: ' . print_r($res,true));
@@ -393,6 +427,7 @@ logger('gis: ' . print_r($gis,true));
'$lbl_profiles' => t('Select a profile:'),
'$title' => t('Change Cover Photo'),
'$submit' => t('Upload'),
'$remove' => t('Remove'),
'$profiles' => $profiles,
'$embedPhotos' => t('Use a photo from your albums'),
'$embedPhotosModalTitle' => t('Use a photo from your albums'),
+7 -4
View File
@@ -8,8 +8,9 @@
namespace Zotlabs\Module;
use \Sabre\DAV as SDAV;
use \Zotlabs\Storage;
use Sabre\DAV as SDAV;
use Zotlabs\Storage;
use Zotlabs\Web\HTTPSig;
require_once('include/attach.php');
require_once('include/auth.php');
@@ -46,7 +47,7 @@ class Dav extends \Zotlabs\Web\Controller {
continue;
}
$sigblock = \Zotlabs\Web\HTTPSig::parse_sigheader($_SERVER[$head]);
$sigblock = HTTPSig::parse_sigheader($_SERVER[$head]);
if($sigblock) {
$keyId = str_replace('acct:','',$sigblock['keyId']);
if($keyId) {
@@ -69,7 +70,7 @@ class Dav extends \Zotlabs\Web\Controller {
continue;
if($record) {
$verified = \Zotlabs\Web\HTTPSig::verify('',$record['channel']['channel_pubkey']);
$verified = HTTPSig::verify('',$record['channel']['channel_pubkey']);
if(! ($verified && $verified['header_signed'] && $verified['header_valid'])) {
$record = null;
}
@@ -94,6 +95,8 @@ class Dav extends \Zotlabs\Web\Controller {
$auth = new \Zotlabs\Storage\BasicAuth();
$auth->observer = get_observer_hash();
$auth->setRealm(ucfirst(\Zotlabs\Lib\System::get_platform_name()) . ' ' . 'WebDAV');
$rootDirectory = new \Zotlabs\Storage\Directory('/', $auth);
+33 -17
View File
@@ -1,14 +1,16 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
use Zotlabs\Web\Controller;
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 {
class Defperms extends Controller {
/* @brief Initialize the connection-editor
*
@@ -19,6 +21,9 @@ class Defperms extends \Zotlabs\Web\Controller {
if(! local_channel())
return;
if(! Apps::system_app_installed(local_channel(), 'Default Permissions'))
return;
$r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
@@ -26,10 +31,10 @@ class Defperms extends \Zotlabs\Web\Controller {
intval(local_channel())
);
if($r) {
\App::$poi = $r[0];
App::$poi = $r[0];
}
$channel = \App::get_channel();
$channel = App::get_channel();
if($channel)
head_set_icon($channel['xchan_photo_s']);
}
@@ -43,12 +48,15 @@ class Defperms extends \Zotlabs\Web\Controller {
if(! local_channel())
return;
if(! Apps::system_app_installed(local_channel(), 'Default Permissions'))
return;
$contact_id = intval(argv(1));
if(! $contact_id)
return;
$channel = \App::get_channel();
$channel = App::get_channel();
$orig_record = q("SELECT * FROM abook WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
intval($contact_id),
@@ -112,7 +120,7 @@ class Defperms extends \Zotlabs\Web\Controller {
intval($contact_id)
);
if($r) {
\App::$poi = $r[0];
App::$poi = $r[0];
}
@@ -131,22 +139,22 @@ class Defperms extends \Zotlabs\Web\Controller {
function defperms_clone(&$a) {
if(! \App::$poi)
if(! App::$poi)
return;
$channel = \App::get_channel();
$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'])
intval(App::$poi['abook_id'])
);
if($r) {
\App::$poi = array_shift($r);
App::$poi = array_shift($r);
}
$clone = \App::$poi;
$clone = App::$poi;
unset($clone['abook_id']);
unset($clone['abook_account']);
@@ -173,9 +181,18 @@ class Defperms extends \Zotlabs\Web\Controller {
notice( t('Permission denied.') . EOL);
return login();
}
if(! Apps::system_app_installed(local_channel(), 'Default Permissions')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Default Permissions App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('Set custom default permissions for new connections');
return $o;
}
$section = ((array_key_exists('section',$_REQUEST)) ? $_REQUEST['section'] : '');
$channel = \App::get_channel();
$channel = App::get_channel();
$yes_no = array(t('No'),t('Yes'));
@@ -193,7 +210,7 @@ class Defperms extends \Zotlabs\Web\Controller {
}
$o .= " }\n</script>\n";
if(\App::$poi) {
if(App::$poi) {
$sections = [];
@@ -203,13 +220,12 @@ class Defperms extends \Zotlabs\Web\Controller {
$perms = array();
$channel = \App::get_channel();
$channel = App::get_channel();
$contact = \App::$poi;
$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) {
@@ -239,7 +255,7 @@ class Defperms extends \Zotlabs\Web\Controller {
'$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'),
'$permcat_enable' => Apps::system_app_installed(local_channel(), 'Permission Categories'),
'$section' => $section,
'$sections' => $sections,
'$autolbl' => t('The permissions indicated on this page will be applied to all new connections.'),
+41 -9
View File
@@ -12,13 +12,16 @@ class Directory extends \Zotlabs\Web\Controller {
function init() {
\App::set_pager_itemspage(60);
if(x($_GET,'ignore')) {
if(local_channel() && x($_GET,'ignore')) {
q("insert into xign ( uid, xchan ) values ( %d, '%s' ) ",
intval(local_channel()),
dbesc($_GET['ignore'])
);
goaway(z_root() . '/directory?f=&suggest=1');
}
if(local_channel())
\App::$profile_uid = local_channel();
$observer = get_observer_hash();
$global_changed = false;
@@ -55,6 +58,7 @@ class Directory extends \Zotlabs\Web\Controller {
if($observer)
set_xconfig($observer,'directory','pubforums',$pubforums);
}
}
function get() {
@@ -99,8 +103,14 @@ class Directory extends \Zotlabs\Web\Controller {
$suggest = (local_channel() && x($_REQUEST,'suggest')) ? $_REQUEST['suggest'] : '';
if($suggest) {
$r = suggestion_query(local_channel(),get_observer_hash());
// the directory options have no effect in suggestion mode
$globaldir = 1;
$safe_mode = 1;
$type = 0;
$r = suggestion_query(local_channel(),get_observer_hash(),0,60);
if(! $r) {
notice( t('No default suggestions were found.') . EOL);
@@ -208,12 +218,17 @@ class Directory extends \Zotlabs\Web\Controller {
if($j) {
if($j['results']) {
$results = $j['results'];
if($suggest) {
$results = self::reorder_results($results,$addresses);
}
$entries = array();
$photo = 'thumb';
foreach($j['results'] as $rr) {
foreach($results as $rr) {
$profile_link = chanlink_url($rr['url']);
@@ -272,7 +287,7 @@ class Directory extends \Zotlabs\Web\Controller {
$hometown = ((x($profile,'hometown') == 1) ? $profile['hometown'] : False);
$about = ((x($profile,'about') == 1) ? zidify_links(bbcode($profile['about'])) : False);
$about = ((x($profile,'about') == 1) ? zidify_links(bbcode($profile['about'], ['tryoembed' => false])) : False);
$keywords = ((x($profile,'keywords')) ? $profile['keywords'] : '');
@@ -330,7 +345,7 @@ class Directory extends \Zotlabs\Web\Controller {
'pdesc_label' => t('Description:'),
'marital' => $marital,
'homepage' => $homepage,
'homepageurl' => linkify($homepageurl),
'homepageurl' => linkify($homepageurl, true),
'hometown' => $hometown,
'hometown_label' => t('Hometown:'),
'about' => $about,
@@ -395,7 +410,7 @@ class Directory extends \Zotlabs\Web\Controller {
$dirtitle = (($globaldir) ? t('Global Directory') : t('Local Directory'));
$o .= "<script> var page_query = '" . escape_tags($_GET['q']) . "'; var extra_args = '" . extra_query_args() . "' ; divmore_height = " . intval($maxheight) . "; </script>";
$o .= "<script> var page_query = '" . escape_tags(urlencode($_GET['q'])) . "'; var extra_args = '" . extra_query_args() . "' ; divmore_height = " . intval($maxheight) . "; </script>";
$o .= replace_macros($tpl, array(
'$search' => $search,
'$desc' => t('Find'),
@@ -434,5 +449,22 @@ class Directory extends \Zotlabs\Web\Controller {
return $o;
}
static public function reorder_results($results,$suggests) {
if(! $suggests)
return $results;
$out = [];
foreach($suggests as $k => $v) {
foreach($results as $rv) {
if($k == $rv['address']) {
$out[intval($v)] = $rv;
break;
}
}
}
return $out;
}
}
+5 -5
View File
@@ -116,12 +116,12 @@ class Dirsearch extends \Zotlabs\Web\Controller {
$sql_extra .= $this->dir_query_build($joiner,'xchan_name',$name);
if($address)
$sql_extra .= $this->dir_query_build($joiner,'xchan_addr',$address);
if($city)
$sql_extra .= $this->dir_query_build($joiner,'xprof_locale',$city);
if($locale)
$sql_extra .= $this->dir_query_build($joiner,'xprof_locale',$locale);
if($region)
$sql_extra .= $this->dir_query_build($joiner,'xprof_region',$region);
if($post)
$sql_extra .= $this->dir_query_build($joiner,'xprof_postcode',$post);
if($postcode)
$sql_extra .= $this->dir_query_build($joiner,'xprof_postcode',$postcode);
if($country)
$sql_extra .= $this->dir_query_build($joiner,'xprof_country',$country);
if($gender)
@@ -394,7 +394,7 @@ class Dirsearch extends \Zotlabs\Web\Controller {
$quoted_string = false;
}
else
$curr['value'] .= ' ' . trim(q);
$curr['value'] .= ' ' . trim($q);
}
}
}
+58 -56
View File
@@ -12,8 +12,9 @@ class Display extends \Zotlabs\Web\Controller {
function get($update = 0, $load = false) {
$module_format = 'html';
$noscript_content = (get_config('system', 'noscript_content', '1') && (! $update));
$module_format = 'html';
if(argc() > 1) {
$module_format = substr(argv(1),strrpos(argv(1),'.') + 1);
@@ -21,8 +22,6 @@ class Display extends \Zotlabs\Web\Controller {
$module_format = 'html';
}
$checkjs = new \Zotlabs\Web\CheckJS(1);
if($load)
$_SESSION['loadtime'] = datetime_convert();
@@ -82,7 +81,7 @@ class Display extends \Zotlabs\Web\Controller {
);
$o = '<div id="jot-popup">';
$o .= status_editor($a,$x);
$o .= status_editor($a,$x,false,'Display');
$o .= '</div>';
}
@@ -176,11 +175,15 @@ class Display extends \Zotlabs\Web\Controller {
return '';
}
}
if ($target_item['item_type'] == ITEM_TYPE_CUSTOM) {
call_hooks('item_custom_display',$target_item);
notice( t('Page not found.') . EOL);
return '';
}
$static = ((array_key_exists('static',$_REQUEST)) ? intval($_REQUEST['static']) : 0);
$simple_update = (($update) ? " AND item_unseen = 1 " : '');
if($update && $_SESSION['loadtime'])
@@ -235,7 +238,7 @@ class Display extends \Zotlabs\Web\Controller {
'$dbegin' => '',
'$verb' => '',
'$net' => '',
'$mid' => $mid
'$mid' => (($mid) ? urlencode($mid) : '')
));
head_add_link([
@@ -253,53 +256,44 @@ class Display extends \Zotlabs\Web\Controller {
$sql_extra = public_permissions_sql($observer_hash);
if(($update && $load) || ($checkjs->disabled()) || ($module_format !== 'html')) {
if($noscript_content || $load) {
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']),intval(\App::$pager['start']));
$r = null;
if($load || ($checkjs->disabled()) || ($module_format !== 'html')) {
require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
$r = null;
require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
if(local_channel()) {
$r = q("SELECT item.id as item_id from item
WHERE uid = %d
and mid = '%s'
$item_normal
limit 1",
intval(local_channel()),
dbesc($target_item['parent_mid'])
);
if($r) {
$updateable = true;
}
if(local_channel()) {
$r = q("SELECT item.id as item_id from item WHERE uid = %d and mid = '%s' $item_normal limit 1",
intval(local_channel()),
dbesc($target_item['parent_mid'])
);
if($r) {
$updateable = true;
}
}
if(! $r) {
if(! $r) {
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner uid can't match
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner uid can't match
if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
$sysid = 0;
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 uid in ( " . stream_perms_api_uids(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
OR uid = %d )
$sql_extra )
$item_normal
limit 1",
dbesc($target_item['parent_mid']),
intval($sysid)
);
}
$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 uid in ( " . stream_perms_api_uids(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
OR uid = %d )
$sql_extra )
$item_normal
limit 1",
dbesc($target_item['parent_mid']),
intval($sysid)
);
}
}
@@ -309,7 +303,6 @@ class Display extends \Zotlabs\Web\Controller {
require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
if(local_channel()) {
$r = q("SELECT item.parent AS item_id from item
WHERE uid = %d
@@ -325,7 +318,7 @@ class Display extends \Zotlabs\Web\Controller {
}
}
if(! $r) {
if($r === null) {
// 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'))
@@ -350,7 +343,7 @@ class Display extends \Zotlabs\Web\Controller {
else {
$r = array();
}
if($r) {
$parents_str = ids_to_querystr($r,'item_id');
if($parents_str) {
@@ -373,14 +366,23 @@ class Display extends \Zotlabs\Web\Controller {
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 {
if ($update) {
$o .= conversation($items, 'display', $update, 'client');
}
else {
$o .= '<noscript>';
if($noscript_content) {
$o .= conversation($items, 'display', $update, 'traditional');
}
else {
$o .= '<div class="section-content-warning-wrapper">' . t('You must enable javascript for your browser to be able to view this content.') . '</div>';
}
$o .= '</noscript>';
\App::$page['title'] = (($items[0]['title']) ? $items[0]['title'] . " - " . \App::$page['title'] : \App::$page['title']);
$o .= conversation($items, 'display', $update, 'client');
}
break;
@@ -435,7 +437,7 @@ class Display extends \Zotlabs\Web\Controller {
$o .= '<div id="content-complete"></div>';
if((($update && $load) || $checkjs->disabled()) && (! $items)) {
if((($update && $load) || $noscript_content) && (! $items)) {
$r = q("SELECT id, item_deleted FROM item WHERE mid = '%s' LIMIT 1",
dbesc($item_hash)
+22 -7
View File
@@ -16,10 +16,21 @@ class Dreport extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
$mid = ((argc() > 1) ? argv(1) : '');
$encoded_mid = '';
if(strpos($mid,'b64.') === 0) {
$encoded_mid = $mid;
$mid = @base64url_decode(substr($mid,4));
}
if($mid === 'push') {
$table = 'push';
$mid = ((argc() > 2) ? argv(2) : '');
if(strpos($mid,'b64.') === 0) {
$encoded_mid = $mid;
$mid = @base64url_decode(substr($mid,4));
}
if($mid) {
$i = q("select id from item where mid = '%s' and uid = %d and ( author_xchan = '%s' or ( owner_xchan = '%s' and item_wall = 1 )) ",
dbesc($mid),
@@ -32,12 +43,15 @@ class Dreport extends \Zotlabs\Web\Controller {
}
}
sleep(3);
goaway(z_root() . '/dreport/' . urlencode($mid));
goaway(z_root() . '/dreport/' . (($encoded_mid) ? $encoded_mid : $mid));
}
if($mid === 'mail') {
$table = 'mail';
$mid = ((argc() > 2) ? argv(2) : '');
if(strpos($mid,'b64.') === 0)
$mid = @base64url_decode(substr($mid,4));
}
@@ -69,8 +83,9 @@ class Dreport extends \Zotlabs\Web\Controller {
return;
}
$r = q("select * from dreport where dreport_xchan = '%s' and dreport_mid = '%s'",
$r = q("select * from dreport where (dreport_xchan = '%s' or dreport_xchan = '%s') and dreport_mid = '%s'",
dbesc($channel['channel_hash']),
dbesc($channel['channel_portable_id']),
dbesc($mid)
);
@@ -80,7 +95,6 @@ class Dreport extends \Zotlabs\Web\Controller {
}
for($x = 0; $x < count($r); $x++ ) {
$r[$x]['name'] = escape_tags(substr($r[$x]['dreport_recip'],strpos($r[$x]['dreport_recip'],' ')));
// This has two purposes: 1. make the delivery report strings translateable, and
// 2. assign an ordering to item delivery results so we can group them and provide
@@ -138,16 +152,17 @@ class Dreport extends \Zotlabs\Web\Controller {
$entries = array();
foreach($r as $rr) {
$entries[] = [
'name' => $rr['name'],
'name' => escape_tags($rr['dreport_name'] ?: $rr['dreport_recip']),
'result' => escape_tags($rr['dreport_result']),
'time' => escape_tags(datetime_convert('UTC',date_default_timezone_get(),$rr['dreport_time']))
];
}
$o = replace_macros(get_markup_template('dreport.tpl'), array(
'$title' => sprintf( t('Delivery report for %1$s'),substr($mid,0,32)) . '...',
'$title' => sprintf( t('Delivery report for %1$s'),basename($mid)) . '...',
'$table' => $table,
'$mid' => urlencode($mid),
'$safe_mid' => urlencode(gen_link_id($mid)),
'$options' => t('Options'),
'$push' => t('Redeliver'),
'$entries' => $entries
@@ -162,9 +177,9 @@ class Dreport extends \Zotlabs\Web\Controller {
private static function dreport_gravity_sort($a,$b) {
if($a['gravity'] == $b['gravity']) {
if($a['name'] === $b['name'])
if($a['dreport_name'] === $b['dreport_name'])
return strcmp($a['dreport_time'],$b['dreport_time']);
return strcmp($a['name'],$b['name']);
return strcmp($a['dreport_name'],$b['dreport_name']);
}
return (($a['gravity'] > $b['gravity']) ? 1 : (-1));
}
+1 -1
View File
@@ -132,7 +132,7 @@ class Editblock extends \Zotlabs\Web\Controller {
'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
);
$editor = status_editor($a, $x);
$editor = status_editor($a, $x, false, 'Editblock');
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Block'),
+1 -1
View File
@@ -131,7 +131,7 @@ class Editlayout extends \Zotlabs\Web\Controller {
'profile_uid' => intval($owner),
);
$editor = status_editor($a, $x);
$editor = status_editor($a, $x, false, 'Editlayout');
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Layout'),
+3 -2
View File
@@ -45,7 +45,8 @@ class Editpost extends \Zotlabs\Web\Controller {
}
if($itm[0]['resource_type'] === 'event' && $itm[0]['resource_id']) {
goaway(z_root() . '/events/' . $itm[0]['resource_id'] . '?expandform=1');
goaway(z_root() . '/cdav/calendar/' . $itm[0]['resource_id']);
//goaway(z_root() . '/events/' . $itm[0]['resource_id'] . '?expandform=1');
}
$owner_uid = $itm[0]['uid'];
@@ -102,7 +103,7 @@ class Editpost extends \Zotlabs\Web\Controller {
'bbcode' => true
);
$editor = status_editor($a, $x);
$editor = status_editor($a, $x, false, 'Editpost');
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit post'),
+1 -1
View File
@@ -160,7 +160,7 @@ class Editwebpage extends \Zotlabs\Web\Controller {
'bbcode' => (($mimetype == 'text/bbcode') ? true : false)
);
$editor = status_editor($a, $x);
$editor = status_editor($a, $x, false, 'Editwebpage');
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Webpage'),
+22
View File
@@ -0,0 +1,22 @@
<?php
namespace Zotlabs\Module;
require_once('include/security.php');
require_once('include/bbcode.php');
class Embed extends \Zotlabs\Web\Controller {
function init() {
$post_id = ((argc() > 1) ? intval(argv(1)) : 0);
if(! $post_id)
killme();
echo '[share=' . $post_id . '][/share]';
killme();
}
}
+103 -67
View File
@@ -3,8 +3,10 @@
namespace Zotlabs\Module;
/**
* @brief
* @brief Embedphoto endpoint.
*
* Provide an AJAX endpoint to fill the embedPhotoModal with folders and photos
* selection.
*/
class Embedphotos extends \Zotlabs\Web\Controller {
@@ -13,93 +15,116 @@ class Embedphotos extends \Zotlabs\Web\Controller {
}
/**
* @brief This is the POST destination for the embedphotos button.
*
* This is the POST destination for the embedphotos button
*
* @return string A JSON string.
*/
function post() {
public function post() {
if (argc() > 1 && argv(1) === 'album') {
// API: /embedphotos/album
$name = (x($_POST,'name') ? $_POST['name'] : null );
if(!$name) {
$name = (x($_POST, 'name') ? $_POST['name'] : null );
if (!$name) {
json_return_and_die(array('errormsg' => 'Error retrieving album', 'status' => false));
}
$album = $this->embedphotos_widget_album(array('channel' => \App::get_channel(), 'album' => $name));
json_return_and_die(array('status' => true, 'content' => $album));
}
if(argc() > 1 && argv(1) === 'albumlist') {
if (argc() > 1 && argv(1) === 'albumlist') {
// API: /embedphotos/albumlist
$album_list = $this->embedphotos_album_list($a);
$album_list = $this->embedphotos_album_list();
json_return_and_die(array('status' => true, 'albumlist' => $album_list));
}
if(argc() > 1 && argv(1) === 'photolink') {
if (argc() > 1 && argv(1) === 'photolink') {
// API: /embedphotos/photolink
$href = (x($_POST,'href') ? $_POST['href'] : null );
if(!$href) {
$href = (x($_POST, 'href') ? $_POST['href'] : null );
if (!$href) {
json_return_and_die(array('errormsg' => 'Error retrieving link ' . $href, 'status' => false));
}
$resource_id = array_pop(explode("/", $href));
$r = q("SELECT obj from item where resource_type = 'photo' and resource_id = '%s' limit 1",
dbesc($resource_id)
);
if(!$r) {
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
}
$obj = json_decode($r[0]['obj'], true);
if(x($obj,'body')) {
$photolink = $obj['body'];
} elseif (x($obj,'bbcode')) {
$photolink = $obj['bbcode'];
} else {
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
}
json_return_and_die(array('status' => true, 'photolink' => $photolink, 'resource_id' => $resource_id));
$resource_id = array_pop(explode('/', $href));
$x = self::photolink($resource_id);
if($x)
json_return_and_die(array('status' => true, 'photolink' => $x, 'resource_id' => $resource_id));
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
}
}
/**
* Copied from include/widgets.php::widget_album() with a modification to get the profile_uid from
* the input array as in widget_item()
*
* @param array $args
* @return string with HTML
*/
function embedphotos_widget_album($args) {
protected static function photolink($resource) {
$channel = \App::get_channel();
$output = EMPTY_STR;
if($channel) {
$resolution = ((feature_enabled($channel['channel_id'],'large_photos')) ? 1 : 2);
$r = q("select mimetype, height, width from photo where resource_id = '%s' and $resolution = %d and uid = %d limit 1",
dbesc($resource),
intval($resolution),
intval($channel['channel_id'])
);
if(! $r)
return $output;
if($r[0]['mimetype'] === 'image/jpeg')
$ext = '.jpg';
elseif($r[0]['mimetype'] === 'image/png')
$ext = '.png';
elseif($r[0]['mimetype'] === 'image/gif')
$ext = '.gif';
else
$ext = EMPTY_STR;
$output = '[zrl=' . z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $resource . ']' .
'[zmg=' . $r[0]['width'] . 'x' . $r[0]['height'] . ']' . z_root() . '/photo/' . $resource . '-' . $resolution . $ext . '[/zmg][/zrl]';
return $output;
}
}
/**
* @brief Get photos from an album.
*
* @see \\Zotlabs\\Widget\\Album::widget()
*
* @param array $args associative array with
* * \e array \b channel
* * \e string \b album
* @return string with HTML code from 'photo_album.tpl'
*/
protected function embedphotos_widget_album($args) {
$channel_id = 0;
if(array_key_exists('channel', $args))
if (array_key_exists('channel', $args)) {
$channel = $args['channel'];
$channel_id = intval($channel['channel_id']);
if(! $channel_id)
$channel_id = intval($channel['channel_id']);
}
if (! $channel_id)
$channel_id = \App::$profile_uid;
if(! $channel_id)
if (! $channel_id)
return '';
$owner_uid = $channel_id;
require_once('include/security.php');
$sql_extra = permissions_sql($channel_id);
if(! perm_is_allowed($channel_id,get_observer_hash(),'view_storage'))
if (! perm_is_allowed($channel_id, get_observer_hash(), 'view_storage'))
return '';
if($args['album'])
if (isset($args['album']))
$album = (($args['album'] === '/') ? '' : $args['album']);
if($args['title'])
if (isset($args['title']))
$title = $args['title'];
/**
* This may return incorrect permissions if you have multiple directories of the same name.
* @note This may return incorrect permissions if you have multiple directories of the same name.
* It is a limitation of the photo table using a name for a photo album instead of a folder hash
*/
if($album) {
if ($album) {
require_once('include/attach.php');
$x = q("select hash from attach where filename = '%s' and uid = %d limit 1",
dbesc($album),
intval($owner_uid)
intval($channel_id)
);
if($x) {
$y = attach_can_view_folder($owner_uid,get_observer_hash(),$x[0]['hash']);
if(! $y)
if ($x) {
$y = attach_can_view_folder($channel_id, get_observer_hash(), $x[0]['hash']);
if (! $y)
return '';
}
}
@@ -110,30 +135,33 @@ class Embedphotos extends \Zotlabs\Web\Controller {
(SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph
ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale)
ORDER BY created $order",
intval($owner_uid),
intval($channel_id),
dbesc($album),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE)
);
$photos = array();
if(count($r)) {
$photos = [];
if (count($r)) {
$twist = 'rotright';
foreach($r as $rr) {
if($twist == 'rotright')
foreach ($r as $rr) {
if ($twist == 'rotright')
$twist = 'rotleft';
else
$twist = 'rotright';
$ph = photo_factory('');
$phototypes = $ph->supportedTypes();
$ext = $phototypes[$rr['mimetype']];
$imgalt_e = $rr['filename'];
$desc_e = $rr['description'];
$imagelink = (z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $rr['resource_id']
$imagelink = (z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $rr['resource_id']
. (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''));
$photos[] = array(
$photos[] = [
'id' => $rr['id'],
'twist' => ' ' . $twist . rand(2,4),
'link' => $imagelink,
@@ -143,35 +171,43 @@ class Embedphotos extends \Zotlabs\Web\Controller {
'desc'=> $desc_e,
'ext' => $ext,
'hash'=> $rr['resource_id'],
'unknown' => t('Unknown')
);
'unknown' => t('Unknown'),
];
}
}
$tpl = get_markup_template('photo_album.tpl');
$o .= replace_macros($tpl, array(
$o = replace_macros($tpl, [
'$photos' => $photos,
'$album' => (($title) ? $title : $album),
'$album_id' => rand(),
'$album_edit' => array(t('Edit Album'), $album_edit),
'$album_edit' => array(t('Edit Album'), false),
'$can_post' => false,
'$upload' => array(t('Upload'), z_root() . '/photos/' . \App::$profile['channel_address'] . '/upload/' . bin2hex($album)),
'$order' => false,
'$upload_form' => $upload_form,
'$no_fullscreen_btn' => true
));
'$upload_form' => '',
'$no_fullscreen_btn' => true,
]);
return $o;
}
function embedphotos_album_list($a) {
/**
* @brief Get albums observer is allowed to see.
*
* @see photos_albums_list()
*
* @return NULL|array
*/
protected function embedphotos_album_list() {
require_once('include/photos.php');
$p = photos_albums_list(\App::get_channel(), \App::get_observer());
if($p['success']) {
if ($p['success']) {
return $p['albums'];
} else {
return null;
}
return null;
}
}
+16 -8
View File
@@ -6,11 +6,14 @@ require_once('include/bbcode.php');
require_once('include/datetime.php');
require_once('include/event.php');
require_once('include/items.php');
require_once('include/html2plain.php');
class Events extends \Zotlabs\Web\Controller {
function post() {
// this module is deprecated
return;
logger('post: ' . print_r($_REQUEST,true), LOGGER_DATA);
@@ -97,8 +100,8 @@ class Events extends \Zotlabs\Web\Controller {
$type = escape_tags(trim($_POST['type']));
require_once('include/text.php');
linkify_tags($a, $desc, local_channel());
linkify_tags($a, $location, local_channel());
linkify_tags($desc, local_channel());
linkify_tags($location, local_channel());
//$action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
@@ -245,6 +248,9 @@ class Events extends \Zotlabs\Web\Controller {
function get() {
// this module is deprecated
return;
if(argc() > 2 && argv(1) == 'ical') {
$event_id = argv(2);
@@ -271,8 +277,10 @@ class Events extends \Zotlabs\Web\Controller {
notice( t('Permission denied.') . EOL);
return;
}
\App::$profile_uid = local_channel();
nav_set_selected('Events');
if((argc() > 2) && (argv(1) === 'ignore') && intval(argv(2))) {
$r = q("update event set dismissed = 1 where id = %d and uid = %d",
@@ -288,7 +296,7 @@ class Events extends \Zotlabs\Web\Controller {
);
}
$first_day = get_pconfig(local_channel(),'system','cal_first_day');
$first_day = feature_enabled(local_channel(), 'events_cal_first_day');
$first_day = (($first_day) ? $first_day : 0);
$htpl = get_markup_template('event_head.tpl');
@@ -641,6 +649,7 @@ class Events extends \Zotlabs\Web\Controller {
}
$html = format_event_html($rr);
$rr['desc'] = zidify_links(smilies(bbcode($rr['desc'])));
$rr['description'] = htmlentities(html2plain(bbcode($rr['description'])),ENT_COMPAT,'UTF-8',false);
$rr['location'] = zidify_links(smilies(bbcode($rr['location'])));
$events[] = array(
'id'=>$rr['id'],
@@ -659,11 +668,10 @@ class Events extends \Zotlabs\Web\Controller {
'html'=>$html,
'plink' => array($rr['plink'],t('Link to Source'),'',''),
);
}
}
if($export) {
header('Content-type: text/calendar');
header('content-disposition: attachment; filename="' . t('calendar') . '-' . $channel['channel_address'] . '.ics"' );
+31 -11
View File
@@ -5,6 +5,8 @@ namespace Zotlabs\Module;
*
*/
class Filestorage extends \Zotlabs\Web\Controller {
function post() {
@@ -71,14 +73,6 @@ class Filestorage extends \Zotlabs\Web\Controller {
return;
}
// Since we have ACL'd files in the wild, but don't have ACL here yet, we
// need to return for anyone other than the owner, despite the perms check for now.
$is_owner = (((local_channel()) && ($owner == local_channel())) ? true : false);
if(! ($is_owner || is_site_admin())){
info( t('Permission Denied.') . EOL );
return;
}
if(argc() > 3 && argv(3) === 'delete') {
@@ -101,18 +95,31 @@ class Filestorage extends \Zotlabs\Web\Controller {
}
$file = intval(argv(2));
$r = q("SELECT hash FROM attach WHERE id = %d AND uid = %d LIMIT 1",
$r = q("SELECT hash, creator FROM attach WHERE id = %d AND uid = %d LIMIT 1",
dbesc($file),
intval($owner)
);
if(! $r) {
notice( t('File not found.') . EOL);
if($json_return)
json_return_and_die([ 'success' => false ]);
notice( t('File not found.') . EOL);
goaway(z_root() . '/cloud/' . $which);
}
if(local_channel() !== $owner) {
if($r[0]['creator'] && $r[0]['creator'] !== $ob_hash) {
notice( t('Permission denied.') . EOL);
if($json_return)
json_return_and_die([ 'success' => false ]);
goaway(z_root() . '/cloud/' . $which);
}
}
$f = $r[0];
$channel = channelx_by_n($owner);
@@ -128,12 +135,25 @@ class Filestorage extends \Zotlabs\Web\Controller {
}
}
if(json_return)
if($json_return)
json_return_and_die([ 'success' => true ]);
goaway(dirname($url));
}
// Since we have ACL'd files in the wild, but don't have ACL here yet, we
// need to return for anyone other than the owner, despite the perms check for now.
$is_owner = (((local_channel()) && ($owner == local_channel())) ? true : false);
if(! ($is_owner || is_site_admin())){
info( t('Permission Denied.') . EOL );
return;
}
if(argc() > 3 && argv(3) === 'edit') {
require_once('include/acl_selectors.php');
if(! $perms['write_storage']) {
+13 -6
View File
@@ -1,6 +1,8 @@
<?php
namespace Zotlabs\Module;
use Zotlabs\Web\HTTPSig;
/**
* module: getfile
*
@@ -35,7 +37,6 @@ class Getfile extends \Zotlabs\Web\Controller {
$sig = $_POST['signature'];
$resource = $_POST['resource'];
$revision = intval($_POST['revision']);
$resolution = (-1);
if(! $hash)
killme();
@@ -47,7 +48,7 @@ class Getfile extends \Zotlabs\Web\Controller {
continue;
}
$sigblock = \Zotlabs\Web\HTTPSig::parse_sigheader($_SERVER[$head]);
$sigblock = HTTPSig::parse_sigheader($_SERVER[$head]);
if($sigblock) {
$keyId = $sigblock['keyId'];
@@ -58,7 +59,7 @@ class Getfile extends \Zotlabs\Web\Controller {
);
if($r) {
$hubloc = $r[0];
$verified = \Zotlabs\Web\HTTPSig::verify('',$hubloc['xchan_pubkey']);
$verified = HTTPSig::verify('',$hubloc['xchan_pubkey']);
if($verified && $verified['header_signed'] && $verified['header_valid'] && $hash == $hubloc['hubloc_hash']) {
$header_verified = true;
}
@@ -81,9 +82,14 @@ class Getfile extends \Zotlabs\Web\Controller {
killme();
}
if(substr($resource,-2,1) == '-') {
if(isset($_POST['resolution']))
$resolution = intval($_POST['resolution']);
elseif(substr($resource,-2,1) == '-') {
$resolution = intval(substr($resource,-1,1));
$resource = substr($resource,0,-2);
}
else {
$resolution = (-1);
}
$slop = intval(get_pconfig($channel['channel_id'],'system','getfile_time_slop'));
@@ -106,9 +112,10 @@ class Getfile extends \Zotlabs\Web\Controller {
}
if($resolution > 0) {
$r = q("select * from photo where resource_id = '%s' and uid = %d limit 1",
$r = q("SELECT * FROM photo WHERE resource_id = '%s' AND uid = %d AND imgscale = %d LIMIT 1",
dbesc($resource),
intval($channel['channel_id'])
intval($channel['channel_id']),
$resolution
);
if($r) {
header('Content-type: ' . $r[0]['mimetype']);
+49 -11
View File
@@ -1,11 +1,13 @@
<?php
namespace Zotlabs\Module;
use App;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Apps;
require_once('include/group.php');
class Group extends \Zotlabs\Web\Controller {
class Group extends Controller {
function init() {
if(! local_channel()) {
@@ -13,7 +15,11 @@ class Group extends \Zotlabs\Web\Controller {
return;
}
\App::$profile_uid = local_channel();
if(! Apps::system_app_installed(local_channel(), 'Privacy Groups')) {
return;
}
App::$profile_uid = local_channel();
nav_set_selected('Privacy Groups');
}
@@ -24,6 +30,10 @@ class Group extends \Zotlabs\Web\Controller {
notice( t('Permission denied.') . EOL);
return;
}
if(! Apps::system_app_installed(local_channel(), 'Privacy Groups')) {
return;
}
if((argc() == 2) && (argv(1) === 'new')) {
check_form_security_token_redirectOnErr('/group/new', 'group_edit');
@@ -43,7 +53,7 @@ class Group extends \Zotlabs\Web\Controller {
if((argc() == 2) && (intval(argv(1)))) {
check_form_security_token_redirectOnErr('/group', 'group_edit');
$r = q("SELECT * FROM groups WHERE id = %d AND uid = %d LIMIT 1",
$r = q("SELECT * FROM pgrp WHERE id = %d AND uid = %d LIMIT 1",
intval(argv(1)),
intval(local_channel())
);
@@ -56,8 +66,11 @@ class Group extends \Zotlabs\Web\Controller {
$groupname = notags(trim($_POST['groupname']));
$public = intval($_POST['public']);
$hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
call_hooks ('privacygroup_extras_post',$hookinfo);
if((strlen($groupname)) && (($groupname != $group['gname']) || ($public != $group['visible']))) {
$r = q("UPDATE groups SET gname = '%s', visible = %d WHERE uid = %d AND id = %d",
$r = q("UPDATE pgrp SET gname = '%s', visible = %d WHERE uid = %d AND id = %d",
dbesc($groupname),
intval($public),
intval(local_channel()),
@@ -65,6 +78,8 @@ class Group extends \Zotlabs\Web\Controller {
);
if($r)
info( t('Privacy group updated.') . EOL );
build_sync_packet(local_channel(),null,true);
}
@@ -77,13 +92,22 @@ class Group extends \Zotlabs\Web\Controller {
$change = false;
logger('mod_group: ' . \App::$cmd,LOGGER_DEBUG);
logger('mod_group: ' . App::$cmd,LOGGER_DEBUG);
if(! local_channel()) {
notice( t('Permission denied') . EOL);
return;
}
if(! Apps::system_app_installed(local_channel(), 'Privacy Groups')) {
//Do not display any associated widgets at this point
App::$pdl = '';
$o = '<b>' . t('Privacy Groups App') . ' (' . t('Not Installed') . '):</b><br>';
$o .= t('Management of privacy groups');
return $o;
}
// Switch to text mode interface if we have more than 'n' contacts or group members
$switchtotext = get_pconfig(local_channel(),'system','groupedit_image_limit');
if($switchtotext === false)
@@ -96,7 +120,7 @@ class Group extends \Zotlabs\Web\Controller {
$new = (((argc() == 2) && (argv(1) === 'new')) ? true : false);
$groups = q("SELECT id, gname FROM groups WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
$groups = q("SELECT id, gname FROM pgrp WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
intval(local_channel())
);
@@ -108,6 +132,10 @@ class Group extends \Zotlabs\Web\Controller {
$i++;
}
$hookinfo = [ 'pgrp_extras' => '', 'group'=>argv(1) ];
call_hooks ('privacygroup_extras',$hookinfo);
$pgrp_extras = $hookinfo['pgrp_extras'];
$tpl = get_markup_template('privacy_groups.tpl');
$o = replace_macros($tpl, [
'$title' => t('Privacy Groups'),
@@ -117,6 +145,7 @@ class Group extends \Zotlabs\Web\Controller {
// new group form
'$gname' => array('groupname',t('Privacy group name')),
'$public' => array('public',t('Members are visible to other channels'), false),
'$pgrp_extras' => $pgrp_extras,
'$form_security_token' => get_form_security_token("group_edit"),
'$submit' => t('Submit'),
@@ -141,14 +170,17 @@ class Group extends \Zotlabs\Web\Controller {
check_form_security_token_redirectOnErr('/group', 'group_drop', 't');
if(intval(argv(2))) {
$r = q("SELECT gname FROM groups WHERE id = %d AND uid = %d LIMIT 1",
$r = q("SELECT gname FROM pgrp WHERE id = %d AND uid = %d LIMIT 1",
intval(argv(2)),
intval(local_channel())
);
if($r)
$result = group_rmv(local_channel(),$r[0]['gname']);
if($result)
if($result) {
$hookinfo = [ 'pgrp_extras' => '', 'group' => argv(2) ];
call_hooks ('privacygroup_extras_drop',$hookinfo);
info( t('Privacy group removed.') . EOL);
}
else
notice( t('Unable to remove privacy group.') . EOL);
}
@@ -173,7 +205,7 @@ class Group extends \Zotlabs\Web\Controller {
if((argc() > 1) && (intval(argv(1)))) {
require_once('include/acl_selectors.php');
$r = q("SELECT * FROM groups WHERE id = %d AND uid = %d AND deleted = 0 LIMIT 1",
$r = q("SELECT * FROM pgrp WHERE id = %d AND uid = %d AND deleted = 0 LIMIT 1",
intval(argv(1)),
intval(local_channel())
);
@@ -211,6 +243,10 @@ class Group extends \Zotlabs\Web\Controller {
}
}
$hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
call_hooks ('privacygroup_extras',$hookinfo);
$pgrp_extras = $hookinfo['pgrp_extras'];
$context = $context + array(
'$title' => sprintf(t('Privacy Group: %s'), $group['gname']),
'$details_label' => t('Edit'),
@@ -221,6 +257,7 @@ class Group extends \Zotlabs\Web\Controller {
'$form_security_token_edit' => get_form_security_token('group_edit'),
'$delete' => t('Delete Group'),
'$form_security_token_drop' => get_form_security_token("group_drop"),
'$pgrp_extras' => $pgrp_extras,
);
}
@@ -264,6 +301,7 @@ class Group extends \Zotlabs\Web\Controller {
$context['$groupeditor'] = $groupeditor;
$context['$desc'] = t('Click a channel to toggle membership');
$context['$pgrp_extras'] = $pgrp_extras;
if($change) {
$tpl = get_markup_template('groupeditor.tpl');
+2 -4
View File
@@ -13,14 +13,12 @@ class Home extends \Zotlabs\Web\Controller {
$ret = array();
call_hooks('home_init',$ret);
$splash = ((argc() > 1 && argv(1) === 'splash') ? true : false);
$channel = \App::get_channel();
if(local_channel() && $channel && $channel['xchan_url'] && ! $splash) {
$dest = $channel['channel_startpage'];
if(! $dest)
$dest = get_pconfig(local_channel(),'system','startpage');
$dest = (($ret['startpage']) ? $ret['startpage'] : '');
if(! $dest)
$dest = get_config('system','startpage');
if(! $dest)
+2 -2
View File
@@ -138,7 +138,7 @@ class Hq extends \Zotlabs\Web\Controller {
[
'$no_messages' => (($target_item) ? false : true),
'$no_messages_label' => [ t('Welcome to Hubzilla!'), t('You have got no unseen posts...') ],
'$editor' => status_editor($a,$x)
'$editor' => status_editor($a,$x,false,'Hq')
]
);
@@ -194,7 +194,7 @@ class Hq extends \Zotlabs\Web\Controller {
'$dbegin' => '',
'$verb' => '',
'$net' => '',
'$mid' => $mid
'$mid' => (($mid) ? urlencode($mid) : '')
]);
}

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