Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Andrzej S. Budziński
hubzilla-core
Commits
793881b9
Commit
793881b9
authored
Sep 04, 2021
by
Mario
Browse files
more gen_link_id()
parent
529824d0
Changes
7
Hide whitespace changes
Inline
Side-by-side
Zotlabs/Lib/Enotify.php
View file @
793881b9
...
...
@@ -854,8 +854,8 @@ class Enotify {
'photo'
=>
$item
[
$who
][
'xchan_photo_s'
],
'when'
=>
((
$edit
)
?
datetime_convert
(
'UTC'
,
date_default_timezone_get
(),
$item
[
'edited'
])
:
datetime_convert
(
'UTC'
,
date_default_timezone_get
(),
$item
[
'created'
])),
'class'
=>
(
intval
(
$item
[
'item_unseen'
])
?
'notify-unseen'
:
'notify-seen'
),
'b64mid'
=>
((
$item
[
'mid'
])
?
'b64.'
.
base64url_encode
(
$item
[
'mid'
])
:
''
),
//'b64mid' => ((in_array($item['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) ?
'b64.' . base64url_encode($item['thr_parent']) : 'b64.' . base64url_encode
($item['mid'])),
'b64mid'
=>
((
$item
[
'mid'
])
?
gen_link_id
(
$item
[
'mid'
])
:
''
),
//'b64mid' => ((in_array($item['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) ?
gen_link_id($item['thr_parent']) : gen_link_id
($item['mid'])),
'thread_top'
=>
((
$item
[
'item_thread_top'
])
?
true
:
false
),
'message'
=>
bbcode
(
escape_tags
(
$itemem_text
)),
'body'
=>
htmlentities
(
html2plain
(
bbcode
(
$item
[
'body'
],
[
'drop_media'
,
true
]),
75
,
true
),
ENT_QUOTES
,
'UTF-8'
,
false
),
...
...
@@ -882,7 +882,7 @@ class Enotify {
$mid
=
basename
(
$tt
[
'link'
]);
$b64mid
=
((
strpos
(
$mid
,
'b64.'
)
===
0
)
?
$mid
:
'b64.'
.
base64url_encode
(
$mid
)
)
;
$b64mid
=
gen_link_id
(
$mid
);
$x
=
[
'notify_link'
=>
((
$tt
[
'ntype'
]
===
NOTIFY_MAIL
)
?
$tt
[
'link'
]
:
z_root
()
.
'/notify/view/'
.
$tt
[
'id'
]),
'name'
=>
$tt
[
'xname'
],
...
...
@@ -910,7 +910,7 @@ class Enotify {
'when'
=>
datetime_convert
(
'UTC'
,
date_default_timezone_get
(),
$rr
[
'abook_created'
]),
'hclass'
=>
(
'notify-unseen'
),
'message'
=>
t
(
'added your channel'
)
];
];
}
...
...
Zotlabs/Lib/ThreadItem.php
View file @
793881b9
...
...
@@ -503,7 +503,7 @@ class ThreadItem {
'wait'
=>
t
(
'Please wait'
),
'thread_level'
=>
$thread_level
,
'settings'
=>
$settings
,
'thr_parent'
=>
((
$item
[
'parent_mid'
]
!=
$item
[
'thr_parent'
])
?
'b64.'
.
base64url_encode
(
$item
[
'thr_parent'
])
:
''
)
'thr_parent'
=>
((
$item
[
'parent_mid'
]
!=
$item
[
'thr_parent'
])
?
gen_link_id
(
$item
[
'thr_parent'
])
:
''
)
);
$arr
=
array
(
'item'
=>
$item
,
'output'
=>
$tmp_item
);
...
...
Zotlabs/Module/Channel.php
View file @
793881b9
...
...
@@ -434,8 +434,8 @@ class Channel extends Controller {
if
((
!
$update
)
&&
(
!
$load
))
{
if
(
isset
(
$decoded
))
$mid
=
'b64.'
.
base64url_encode
(
$mid
);
//
if
we got a decoded hash we must encode it again before handing to javascript
$mid
=
gen_link_id
(
$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.
...
...
Zotlabs/Module/Linkinfo.php
View file @
793881b9
...
...
@@ -5,37 +5,37 @@ namespace Zotlabs\Module;
class
Linkinfo
extends
\
Zotlabs\Web\Controller
{
function
get
()
{
logger
(
'linkinfo: '
.
print_r
(
$_REQUEST
,
true
));
$text
=
null
;
$str_tags
=
''
;
$process_oembed
=
true
;
$process_oembed
=
true
;
$br
=
"
\n
"
;
if
(
x
(
$_GET
,
'binurl'
))
$url
=
trim
(
hex2bin
(
$_GET
[
'binurl'
]));
else
$url
=
trim
(
$_GET
[
'url'
]);
if
(
substr
(
$url
,
0
,
1
)
===
'!'
)
{
$process_oembed
=
false
;
$url
=
substr
(
$url
,
1
);
}
$url
=
strip_zids
(
$url
);
if
((
substr
(
$url
,
0
,
1
)
!=
'/'
)
&&
(
substr
(
$url
,
0
,
4
)
!=
'http'
))
$url
=
'http://'
.
$url
;
if
(
$_GET
[
'title'
])
$title
=
strip_tags
(
trim
(
$_GET
[
'title'
]));
if
(
$_GET
[
'description'
])
$text
=
strip_tags
(
trim
(
$_GET
[
'description'
]));
if
(
$_GET
[
'tags'
])
{
$arr_tags
=
str_getcsv
(
$_GET
[
'tags'
]);
if
(
count
(
$arr_tags
))
{
...
...
@@ -43,23 +43,25 @@ class Linkinfo extends \Zotlabs\Web\Controller {
$str_tags
=
$br
.
implode
(
' '
,
$arr_tags
)
.
$br
;
}
}
logger
(
'linkinfo: '
.
$url
);
// Replace plink URL with 'share' tag if possible
preg_match
(
"/(mid=b64\.|display\/|posts\/)([\w\-]+)(&.+)?$/"
,
$url
,
$mid
);
if
(
!
empty
(
$mid
)
&&
$mid
[
1
]
==
'mid=b64.'
)
$mid
[
2
]
=
base64_decode
(
$mid
[
2
]);
$r
=
q
(
"SELECT id FROM item WHERE mid = '%s' AND uid = %d AND item_private = 0 LIMIT 1"
,
dbesc
((
empty
(
$mid
)
?
$url
:
$mid
[
2
])),
intval
(
local_channel
())
);
if
(
$r
)
{
echo
"[share="
.
$r
[
0
][
'id'
]
.
"][/share]"
;
killme
();
}
// Replace plink URL with 'share' tag if possible
preg_match
(
"/(mid=b64\.|display\/|posts\/)([\w\-]+)(&.+)?$/"
,
$url
,
$mid
);
if
(
!
empty
(
$mid
))
{
$mid
[
2
]
=
unpack_link_id
(
$mid
[
2
]);
}
$r
=
q
(
"SELECT id FROM item WHERE mid = '%s' AND uid = %d AND item_private = 0 LIMIT 1"
,
dbesc
((
empty
(
$mid
)
?
$url
:
$mid
[
2
])),
intval
(
local_channel
())
);
if
(
$r
)
{
echo
"[share="
.
$r
[
0
][
'id'
]
.
"][/share]"
;
killme
();
}
$result
=
z_fetch_url
(
$url
,
false
,
0
,
array
(
'novalidate'
=>
true
,
'nobody'
=>
true
));
if
(
$result
[
'success'
])
{
...
...
@@ -108,13 +110,13 @@ class Linkinfo extends \Zotlabs\Web\Controller {
}
}
}
$template
=
$br
.
'#^[url=%s]%s[/url]%s'
.
$br
;
$arr
=
array
(
'url'
=>
$url
,
'text'
=>
''
);
call_hooks
(
'parse_link'
,
$arr
);
if
(
strlen
(
$arr
[
'text'
]))
{
echo
$arr
[
'text'
];
killme
();
...
...
@@ -127,28 +129,28 @@ class Linkinfo extends \Zotlabs\Web\Controller {
killme
();
}
}
if
(
$url
&&
$title
&&
$text
)
{
$text
=
$br
.
'[quote]'
.
trim
(
$text
)
.
'[/quote]'
.
$br
;
$title
=
str_replace
(
array
(
"
\r
"
,
"
\n
"
),
array
(
''
,
''
),
$title
);
$result
=
sprintf
(
$template
,
$url
,(
$title
)
?
$title
:
$url
,
$text
)
.
$str_tags
;
logger
(
'linkinfo (unparsed): returns: '
.
$result
);
echo
$result
;
killme
();
}
$siteinfo
=
self
::
parseurl_getsiteinfo
(
$url
);
// If the site uses this platform, use zrl rather than url so they get zids sent to them by default
if
(
is_matrix_url
(
$url
))
$template
=
str_replace
(
'url'
,
'zrl'
,
$template
);
if
(
$siteinfo
[
"title"
]
==
""
)
{
echo
sprintf
(
$template
,
$url
,
$url
,
''
)
.
$str_tags
;
killme
();
...
...
@@ -156,19 +158,19 @@ class Linkinfo extends \Zotlabs\Web\Controller {
$text
=
$siteinfo
[
"text"
];
$title
=
$siteinfo
[
"title"
];
}
$image
=
""
;
if
(
is_array
(
$siteinfo
[
"images"
])
&&
count
(
$siteinfo
[
"images"
])){
/* Execute below code only if image is present in siteinfo */
$total_images
=
0
;
$max_images
=
get_config
(
'system'
,
'max_bookmark_images'
);
if
(
$max_images
===
false
)
$max_images
=
2
;
else
$max_images
=
intval
(
$max_images
);
foreach
(
$siteinfo
[
"images"
]
as
$imagedata
)
{
if
(
$url
)
{
$image
.
=
sprintf
(
'[url=%s]'
,
$url
);
...
...
@@ -183,57 +185,57 @@ class Linkinfo extends \Zotlabs\Web\Controller {
break
;
}
}
if
(
strlen
(
$text
))
{
$text
=
$br
.
'[quote]'
.
trim
(
$text
)
.
'[/quote]'
.
$br
;
}
if
(
$image
)
{
$text
=
$br
.
$br
.
$image
.
$text
;
}
$title
=
str_replace
(
array
(
"
\r
"
,
"
\n
"
),
array
(
''
,
''
),
$title
);
$result
=
sprintf
(
$template
,
$url
,(
$title
)
?
$title
:
$url
,
$text
)
.
$str_tags
;
logger
(
'linkinfo: returns: '
.
$result
,
LOGGER_DEBUG
);
echo
trim
(
$result
);
killme
();
}
public
static
function
deletexnode
(
&
$doc
,
$node
)
{
$xpath
=
new
\
DomXPath
(
$doc
);
$list
=
$xpath
->
query
(
"//"
.
$node
);
foreach
(
$list
as
$child
)
$child
->
parentNode
->
removeChild
(
$child
);
}
public
static
function
completeurl
(
$url
,
$scheme
)
{
$urlarr
=
parse_url
(
$url
);
if
(
isset
(
$urlarr
[
"scheme"
]))
return
(
$url
);
$schemearr
=
parse_url
(
$scheme
);
$complete
=
$schemearr
[
"scheme"
]
.
"://"
.
$schemearr
[
"host"
];
if
(
$schemearr
[
"port"
]
!=
""
)
$complete
.
=
":"
.
$schemearr
[
"port"
];
if
(
strpos
(
$urlarr
[
'path'
],
'/'
)
!==
0
)
$complete
.
=
'/'
;
$complete
.
=
$urlarr
[
"path"
];
if
(
$urlarr
[
"query"
]
!=
""
)
$complete
.
=
"?"
.
$urlarr
[
"query"
];
if
(
$urlarr
[
"fragment"
]
!=
""
)
$complete
.
=
"#"
.
$urlarr
[
"fragment"
];
return
(
$complete
);
}
...
...
@@ -251,7 +253,7 @@ class Linkinfo extends \Zotlabs\Web\Controller {
$p
=
substr
(
$m
,
strpos
(
$m
,
'/'
)
+
1
);
// get the channel to check permissions
$u
=
channelx_by_nick
(
$nick
);
if
(
$u
&&
$p
)
{
...
...
@@ -272,18 +274,18 @@ class Linkinfo extends \Zotlabs\Web\Controller {
return
EMPTY_STR
;
}
public
static
function
parseurl_getsiteinfo
(
$url
)
{
$siteinfo
=
array
();
$result
=
z_fetch_url
(
$url
,
false
,
0
,
array
(
'novalidate'
=>
true
));
if
(
!
$result
[
'success'
])
return
$siteinfo
;
$header
=
$result
[
'header'
];
$body
=
$result
[
'body'
];
// Check codepage in HTTP headers or HTML if not exist
$cp
=
(
preg_match
(
'/Content-Type: text\/html; charset=(.+)\r\n/i'
,
$header
,
$o
)
?
$o
[
1
]
:
''
);
if
(
empty
(
$cp
))
...
...
@@ -291,10 +293,10 @@ class Linkinfo extends \Zotlabs\Web\Controller {
$body
=
mb_convert_encoding
(
$body
,
'UTF-8'
,
$cp
);
$body
=
mb_convert_encoding
(
$body
,
'HTML-ENTITIES'
,
"UTF-8"
);
$doc
=
new
\
DOMDocument
();
@
$doc
->
loadHTML
(
$body
);
self
::
deletexnode
(
$doc
,
'style'
);
self
::
deletexnode
(
$doc
,
'script'
);
self
::
deletexnode
(
$doc
,
'option'
);
...
...
@@ -306,14 +308,14 @@ class Linkinfo extends \Zotlabs\Web\Controller {
self
::
deletexnode
(
$doc
,
'h6'
);
self
::
deletexnode
(
$doc
,
'ol'
);
self
::
deletexnode
(
$doc
,
'ul'
);
$xpath
=
new
\
DomXPath
(
$doc
);
//$list = $xpath->query("head/title");
$list
=
$xpath
->
query
(
"//title"
);
foreach
(
$list
as
$node
)
$siteinfo
[
"title"
]
=
html_entity_decode
(
$node
->
nodeValue
,
ENT_QUOTES
,
"UTF-8"
);
//$list = $xpath->query("head/meta[@name]");
$list
=
$xpath
->
query
(
"//meta[@name]"
);
foreach
(
$list
as
$node
)
{
...
...
@@ -321,9 +323,9 @@ class Linkinfo extends \Zotlabs\Web\Controller {
if
(
$node
->
attributes
->
length
)
foreach
(
$node
->
attributes
as
$attribute
)
$attr
[
$attribute
->
name
]
=
$attribute
->
value
;
$attr
[
"content"
]
=
html_entity_decode
(
$attr
[
"content"
],
ENT_QUOTES
,
"UTF-8"
);
switch
(
strtolower
(
$attr
[
"name"
]))
{
case
"fulltitle"
:
$siteinfo
[
"title"
]
=
trim
(
$attr
[
"content"
]);
...
...
@@ -365,7 +367,7 @@ class Linkinfo extends \Zotlabs\Web\Controller {
break
;
}
}
//$list = $xpath->query("head/meta[@property]");
$list
=
$xpath
->
query
(
"//meta[@property]"
);
foreach
(
$list
as
$node
)
{
...
...
@@ -373,9 +375,9 @@ class Linkinfo extends \Zotlabs\Web\Controller {
if
(
$node
->
attributes
->
length
)
foreach
(
$node
->
attributes
as
$attribute
)
$attr
[
$attribute
->
name
]
=
$attribute
->
value
;
$attr
[
"content"
]
=
html_entity_decode
(
$attr
[
"content"
],
ENT_QUOTES
,
"UTF-8"
);
switch
(
strtolower
(
$attr
[
"property"
]))
{
case
"og:image"
:
$siteinfo
[
"image"
]
=
$attr
[
"content"
];
...
...
@@ -388,7 +390,7 @@ class Linkinfo extends \Zotlabs\Web\Controller {
break
;
}
}
if
(
$siteinfo
[
"image"
]
==
""
)
{
$list
=
$xpath
->
query
(
"//img[@src]"
);
foreach
(
$list
as
$node
)
{
...
...
@@ -396,10 +398,10 @@ class Linkinfo extends \Zotlabs\Web\Controller {
if
(
$node
->
attributes
->
length
)
foreach
(
$node
->
attributes
as
$attribute
)
$attr
[
$attribute
->
name
]
=
$attribute
->
value
;
$src
=
self
::
completeurl
(
$attr
[
"src"
],
$url
);
$photodata
=
@
getimagesize
(
$src
);
if
((
$photodata
)
&&
(
$photodata
[
0
]
>
150
)
and
(
$photodata
[
1
]
>
150
))
{
if
(
$photodata
[
0
]
>
300
)
{
$photodata
[
1
]
=
round
(
$photodata
[
1
]
*
(
300
/
$photodata
[
0
]));
...
...
@@ -413,36 +415,36 @@ class Linkinfo extends \Zotlabs\Web\Controller {
"width"
=>
$photodata
[
0
],
"height"
=>
$photodata
[
1
]);
}
}
}
else
{
$src
=
self
::
completeurl
(
$siteinfo
[
"image"
],
$url
);
unset
(
$siteinfo
[
"image"
]);
$photodata
=
@
getimagesize
(
$src
);
if
((
$photodata
)
&&
(
$photodata
[
0
]
>
10
)
and
(
$photodata
[
1
]
>
10
))
$siteinfo
[
"images"
][]
=
array
(
"src"
=>
$src
,
"width"
=>
$photodata
[
0
],
"height"
=>
$photodata
[
1
]);
}
if
(
$siteinfo
[
"text"
]
==
""
)
{
$text
=
""
;
$list
=
$xpath
->
query
(
"//div[@class='article']"
);
foreach
(
$list
as
$node
)
if
(
strlen
(
$node
->
nodeValue
)
>
40
)
$text
.
=
" "
.
trim
(
$node
->
nodeValue
);
if
(
$text
==
""
)
{
$list
=
$xpath
->
query
(
"//div[@class='content']"
);
foreach
(
$list
as
$node
)
if
(
strlen
(
$node
->
nodeValue
)
>
40
)
$text
.
=
" "
.
trim
(
$node
->
nodeValue
);
}
// If none text was found then take the paragraph content
if
(
$text
==
""
)
{
$list
=
$xpath
->
query
(
"//p"
);
...
...
@@ -450,21 +452,21 @@ class Linkinfo extends \Zotlabs\Web\Controller {
if
(
strlen
(
$node
->
nodeValue
)
>
40
)
$text
.
=
" "
.
trim
(
$node
->
nodeValue
);
}
if
(
$text
!=
""
)
{
$text
=
trim
(
str_replace
(
array
(
"
\n
"
,
"
\r
"
),
array
(
" "
,
" "
),
$text
));
while
(
strpos
(
$text
,
" "
))
$text
=
trim
(
str_replace
(
" "
,
" "
,
$text
));
$text
=
substr
(
html_entity_decode
(
$text
,
ENT_QUOTES
,
"UTF-8"
),
0
,
350
);
$siteinfo
[
"text"
]
=
rtrim
(
substr
(
$text
,
0
,
strrpos
(
$text
,
" "
)),
"?.,:;!-"
)
.
'...'
;
}
}
return
(
$siteinfo
);
}
private
static
function
arr_add_hashes
(
&
$item
,
$k
)
{
$item
=
'#'
.
$item
;
...
...
Zotlabs/Module/Pin.php
View file @
793881b9
...
...
@@ -37,7 +37,7 @@ class Pin extends \Zotlabs\Web\Controller {
http_status_exit
(
404
,
'Not found'
);
}
$midb64
=
'b64.'
.
base64url_encode
(
$r
[
0
][
'mid'
]);
$midb64
=
gen_link_id
(
$r
[
0
][
'mid'
]);
$pinned
=
(
in_array
(
$midb64
,
get_pconfig
(
$r
[
0
][
'uid'
],
'pinned'
,
$r
[
0
][
'item_type'
],
[]))
?
true
:
false
);
switch
(
argv
(
1
))
{
...
...
Zotlabs/Module/Sse_bs.php
View file @
793881b9
...
...
@@ -560,7 +560,7 @@ class Sse_bs extends Controller {
$b64mids
=
[];
foreach
(
$mids
as
$mid
)
$b64mids
[]
=
'b64.'
.
base64url_encode
(
$mid
);
$b64mids
[]
=
gen_link_id
(
$mid
);
$forums
[
$x
][
'notify_link'
]
=
z_root
()
.
'/network/?f=&pf=1&unseen=1&cid='
.
$forums
[
$x
][
'abook_id'
];
$forums
[
$x
][
'name'
]
=
$forums
[
$x
][
'xchan_name'
];
...
...
include/conversation.php
View file @
793881b9
...
...
@@ -1223,7 +1223,7 @@ function builtin_activity_puller($item, &$conv_responses) {
if
(
!
$item
[
'thr_parent'
])
$item
[
'thr_parent'
]
=
$item
[
'parent_mid'
];
$conv_responses
[
$mode
][
'mids'
][
$item
[
'thr_parent'
]][]
=
'b64.'
.
base64url_encode
(
$item
[
'mid'
]);
$conv_responses
[
$mode
][
'mids'
][
$item
[
'thr_parent'
]][]
=
gen_link_id
(
$item
[
'mid'
]);
if
(
$item
[
'obj_type'
]
===
'Answer'
)
continue
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment