forked from GNUsocial/gnu-social
common_shorten_links() can only access the web session's logged-in user, so never properly took user options into effect for posting via XMPP, API, mail, etc. Adds an optional $user parameter on common_shorten_links(), and a $user->shortenLinks() as a clearer interface for that. Tweaked some lower-level functions so $user gets passed down -- making the $notice_id param previously there for saving URLs at notice save time generalized a little. Note also ticket #2919: there's a lot of duplicate code calling the shortening, checking the length, and reporting near-identical error messages. These should be consolidated to aid in code and translation maintenance.
This commit is contained in:
@@ -187,13 +187,14 @@ class File_redirection extends Memcached_DataObject
|
||||
* may be saved.
|
||||
*
|
||||
* @param string $long_url
|
||||
* @param User $user whose shortening options to use; defaults to the current web session user
|
||||
* @return string
|
||||
*/
|
||||
function makeShort($long_url) {
|
||||
function makeShort($long_url, $user=null) {
|
||||
|
||||
$canon = File_redirection::_canonUrl($long_url);
|
||||
|
||||
$short_url = File_redirection::_userMakeShort($canon);
|
||||
$short_url = File_redirection::_userMakeShort($canon, $user);
|
||||
|
||||
// Did we get one? Is it shorter?
|
||||
if (!empty($short_url) && mb_strlen($short_url) < mb_strlen($long_url)) {
|
||||
@@ -203,8 +204,8 @@ class File_redirection extends Memcached_DataObject
|
||||
}
|
||||
}
|
||||
|
||||
function _userMakeShort($long_url) {
|
||||
$short_url = common_shorten_url($long_url);
|
||||
function _userMakeShort($long_url, User $user=null) {
|
||||
$short_url = common_shorten_url($long_url, $user);
|
||||
if (!empty($short_url) && $short_url != $long_url) {
|
||||
$short_url = (string)$short_url;
|
||||
// store it
|
||||
|
Reference in New Issue
Block a user