]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/util.php
add all params to subscribers
[quix0rs-gnu-social.git] / lib / util.php
index 88841d3f6aa69f2210a87ac1f210ae46f8839e64..68644e9164c650501ec4f1beeb2276062e693fc2 100644 (file)
@@ -146,7 +146,9 @@ function common_init_language() {
        bind_textdomain_codeset("laconica", "UTF-8");
        textdomain("laconica");
        setlocale(LC_CTYPE, 'C');
-       common_log(LOG_INFO,'Language requested:'.$language.' Locale set:'.$locale_set,__FILE__);
+       if(!$locale_set) {
+               common_log(LOG_INFO,'Language requested:'.$language.' - locale could not be set:',__FILE__);
+       }
 }
 
 define('PAGE_TYPE_PREFS', 'text/html,application/xhtml+xml,application/xml;q=0.3,text/xml;q=0.2');
@@ -178,6 +180,9 @@ function common_show_header($pagetitle, $callable=NULL, $data=NULL, $headercall=
        common_element('script', array('type' => 'text/javascript',
                                                                   'src' => common_path('js/jquery.form.js')),
                                   ' ');
+       common_element('script', array('type' => 'text/javascript',
+                                                                  'src' => common_path('js/xbImportNode.js')),
+                                  ' ');
        common_element('script', array('type' => 'text/javascript',
                                                                   'src' => common_path('js/util.js?version='.LACONICA_VERSION)),
                                   ' ');
@@ -708,7 +713,7 @@ function common_render_content($text, $notice) {
 }
 
 function common_render_text($text) {
-       $r = htmlentities($text, ENT_NOQUOTES, 'UTF-8');
+       $r = htmlspecialchars($text);
 
        $r = preg_replace('/[\x{0}-\x{8}\x{b}-\x{c}\x{e}-\x{19}]/', '', $r);
        $r = preg_replace_callback('@https?://[^\]>\s]+@', 'common_render_uri_thingy', $r);
@@ -742,7 +747,92 @@ function common_render_uri_thingy($matches) {
                        $trailer = $final . $trailer;
                }
        }
-       return '<a href="' . $uri . '" class="extlink">' . $uri . '</a>' . $trailer;
+       if ($longurl = common_longurl($uri)) {
+               $longurl = htmlentities($longurl, ENT_QUOTES, 'UTF-8');
+               $title = " title='$longurl'";
+       }
+       else $title = '';
+       
+       return '<a href="' . $uri . '"' . $title . ' class="extlink">' . $uri . '</a>' . $trailer;
+}
+
+function common_longurl($uri)  {
+       $uri_e = urlencode($uri);
+       $longurl = unserialize(file_get_contents("http://api.longurl.org/v1/expand?format=php&url=$uri_e"));
+       if (empty($longurl['long_url']) || $uri === $longurl['long_url']) return false;
+       return stripslashes($longurl['long_url']);
+}
+
+function common_shorten_links($text) {
+    // \s = not a horizontal whitespace character (since PHP 5.2.4)
+       // RYM this should prevent * preceded URLs from being processed but it its a char
+//     $r = preg_replace('@[^*](https?://[^)\]>\s]+)@e', "common_shorten_link('\\1')", $r);
+       return preg_replace('@https?://[^)\]>\s]+@e', "common_shorten_link('\\0')", $text);
+}
+
+function common_shorten_link($long_url) {
+       
+       $user = common_current_user();
+       
+       $curlh = curl_init();
+       curl_setopt($curlh, CURLOPT_CONNECTTIMEOUT, 20); // # seconds to wait
+       curl_setopt($curlh, CURLOPT_USERAGENT, 'Laconica');
+       curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true);
+       
+       switch($user->urlshorteningservice) {
+        case 'ur1.ca':
+            $short_url_service = new LilUrl;
+            $short_url = $short_url_service->shorten($long_url);
+            break;
+            
+        case '2tu.us':
+            $short_url_service = new TightUrl;
+            $short_url = $short_url_service->shorten($long_url);
+            break;
+            
+        case 'ptiturl.com':
+            $short_url_service = new PtitUrl;
+            $short_url = $short_url_service->shorten($long_url);
+            break;
+
+        case 'bit.ly':
+                       curl_setopt($curlh, CURLOPT_URL, 'http://bit.ly/api?method=shorten&long_url='.urlencode($long_url));
+                       $short_url = current(json_decode(curl_exec($curlh))->results)->hashUrl;
+            break;
+
+               case 'is.gd':
+                       curl_setopt($curlh, CURLOPT_URL, 'http://is.gd/api.php?longurl='.urlencode($long_url));
+                       $short_url = curl_exec($curlh);
+                       break;
+               case 'snipr.com':
+                       curl_setopt($curlh, CURLOPT_URL, 'http://snipr.com/site/snip?r=simple&link='.urlencode($long_url));
+                       $short_url = curl_exec($curlh);
+                       break;
+               case 'metamark.net':
+                       curl_setopt($curlh, CURLOPT_URL, 'http://metamark.net/api/rest/simple?long_url='.urlencode($long_url));
+                       $short_url = curl_exec($curlh);
+                       break;
+               case 'tinyurl.com':
+                       curl_setopt($curlh, CURLOPT_URL, 'http://tinyurl.com/api-create.php?url='.urlencode($long_url));
+                       $short_url = curl_exec($curlh);
+                       break;
+               default:
+                       $short_url = false;
+       }
+       
+       curl_close($curlh);
+       
+       if ($short_url) {
+               return $short_url;
+       }
+       return $long_url;
+}
+
+function common_xml_safe_str($str) {
+       $xmlStr = htmlentities(iconv('UTF-8', 'UTF-8//IGNORE', $str), ENT_NOQUOTES, 'UTF-8');
+       
+       // Replace control, formatting, and surrogate characters with '*', ala Twitter
+       return preg_replace('/[\p{Cc}\p{Cf}\p{Cs}]/u', '*', $str);
 }
 
 function common_tag_link($tag) {
@@ -888,6 +978,8 @@ function common_fancy_url($action, $args=NULL) {
                } else {
                        return common_path('main/remote');
                }
+        case 'nudge':
+               return common_path($args['nickname'].'/nudge');
         case 'openidlogin':
                return common_path('main/openid');
         case 'profilesettings':
@@ -900,6 +992,8 @@ function common_fancy_url($action, $args=NULL) {
                return common_path('settings/sms');
         case 'twittersettings':
                return common_path('settings/twitter');
+        case 'othersettings':
+               return common_path('settings/other');
         case 'newnotice':
                if ($args && $args['replyto']) {
                        return common_path('notice/new?replyto='.$args['replyto']);
@@ -917,8 +1011,6 @@ function common_fancy_url($action, $args=NULL) {
         case 'xrds':
         case 'foaf':
                return common_path($args['nickname'].'/'.$action);
-        case 'subscriptions':
-        case 'subscribers':
         case 'all':
         case 'replies':
         case 'inbox':
@@ -928,6 +1020,16 @@ function common_fancy_url($action, $args=NULL) {
                } else {
                        return common_path($args['nickname'].'/'.$action);
                }
+        case 'subscriptions':
+        case 'subscribers':
+               $nickname = $args['nickname'];
+               unset($args['nickname']);
+               $params = http_build_query($args);
+               if ($params) {
+                       return common_path($nickname.'/'.$action . '?' . $params);
+               } else {
+                       return common_path($nickname.'/'.$action);
+               }
         case 'allrss':
                return common_path($args['nickname'].'/all/rss');
         case 'repliesrss':
@@ -940,6 +1042,9 @@ function common_fancy_url($action, $args=NULL) {
                } else {
                        return common_path($args['nickname']);
                }
+
+        case 'usertimeline':
+               return common_path("api/statuses/user_timeline/".$args['nickname'].".atom");
         case 'confirmaddress':
                return common_path('main/confirmaddress/'.$args['code']);
         case 'userbyid':
@@ -1169,7 +1274,7 @@ function common_save_replies($notice) {
 function common_broadcast_notice($notice, $remote=false) {
 
        // Check to see if notice should go to Twitter
-       $flink = Foreign_link::getForeignLink($notice->profile_id, 1); // 1 == Twitter
+       $flink = Foreign_link::getByUserID($notice->profile_id, 1); // 1 == Twitter
        if (($flink->noticesync & FOREIGN_NOTICE_SEND) == FOREIGN_NOTICE_SEND) {
 
                // If it's not a Twitter-style reply, or if the user WANTS to send replies...
@@ -1344,12 +1449,13 @@ function common_notice_form($action=NULL, $content=NULL) {
        common_element('label', array('for' => 'status_textarea',
                                                                  'id' => 'status_label'),
                                   sprintf(_('What\'s up, %s?'), $user->nickname));
-        common_element('span', array('id' => 'counter', 'class' => 'counter'), '140');
+    common_element('span', array('id' => 'counter', 'class' => 'counter'), '140');
        common_element('textarea', array('id' => 'status_textarea',
                                                                         'cols' => 60,
                                                                         'rows' => 3,
                                                                         'name' => 'status_textarea'),
                                   ($content) ? $content : '');
+       common_hidden('token', common_session_token());
        if ($action) {
                common_hidden('returnto', $action);
        }
@@ -1716,13 +1822,25 @@ function common_disfavor_form($notice) {
                                                                           'method' => 'post',
                                                                           'class' => 'disfavor',
                                                                           'action' => common_local_url('disfavor')));
-       common_hidden('token', common_session_token());
-       common_hidden('notice', $notice->id);
+
+       common_element('input', array('type' => 'hidden',
+                                                                 'name' => 'token-'. $notice->id,
+                                                                 'id' => 'token-'. $notice->id,
+                                                                 'class' => 'token',
+                                                                 'value' => common_session_token()));
+
+       common_element('input', array('type' => 'hidden',
+                                                                 'name' => 'notice',
+                                                                 'id' => 'notice-n'. $notice->id,
+                                                                 'class' => 'notice',
+                                                                 'value' => $notice->id));
+
        common_element('input', array('type' => 'submit',
                                                                  'id' => 'disfavor-submit-' . $notice->id,
                                                                  'name' => 'disfavor-submit-' . $notice->id,
                                                                  'class' => 'disfavor',
-                                                                 'value' => '♥'));
+                                                                 'value' => 'Disfavor favorite',
+                                                                 'title' => 'Remove this message from favorites'));
        common_element_end('form');
 }
 
@@ -1731,16 +1849,42 @@ function common_favor_form($notice) {
                                                                           'method' => 'post',
                                                                           'class' => 'favor',
                                                                           'action' => common_local_url('favor')));
-       common_hidden('token', common_session_token());
-       common_hidden('notice', $notice->id);
+
+       common_element('input', array('type' => 'hidden',
+                                                                 'name' => 'token-'. $notice->id,
+                                                                 'id' => 'token-'. $notice->id,
+                                                                 'class' => 'token',
+                                                                 'value' => common_session_token()));
+
+       common_element('input', array('type' => 'hidden',
+                                                                 'name' => 'notice',
+                                                                 'id' => 'notice-n'. $notice->id,
+                                                                 'class' => 'notice',
+                                                                 'value' => $notice->id));
+       
        common_element('input', array('type' => 'submit',
                                                                  'id' => 'favor-submit-' . $notice->id,
                                                                  'name' => 'favor-submit-' . $notice->id,
                                                                  'class' => 'favor',
-                                                                 'value' => '♡'));
+                                                                 'value' => 'Add to favorites',
+                                                                 'title' => 'Add this message to favorites'));
        common_element_end('form');
 }
 
+function common_nudge_form($profile) {
+       common_element_start('form', array('id' => 'nudge', 'method' => 'post',
+                                                                          'action' => common_local_url('nudge', array('nickname' => $profile->nickname))));
+       common_hidden('token', common_session_token());
+       common_element('input', array('type' => 'submit',
+                                                                 'class' => 'submit',
+                                                                 'value' => _('Send a nudge')));
+       common_element_end('form');
+}
+
+function common_nudge_response() {
+       common_element('p', array('id' => 'nudge_response'), _('Nudge sent!'));
+}
+
 function common_cache_key($extra) {
        return 'laconica:' . common_keyize(common_config('site', 'name')) . ':' . $extra;
 }