]> git.mxchange.org Git - friendica.git/blobdiff - include/contact_widgets.php
Merge pull request #3284 from annando/issue-3278
[friendica.git] / include / contact_widgets.php
old mode 100755 (executable)
new mode 100644 (file)
index 135a9e4..d077a06
@@ -1,29 +1,31 @@
 <?php
 
-function follow_widget() {
+function follow_widget($value = "") {
 
        return replace_macros(get_markup_template('follow.tpl'),array(
                '$connect' => t('Add New Contact'),
                '$desc' => t('Enter address or web location'),
                '$hint' => t('Example: bob@example.com, http://example.com/barbara'),
+               '$value' => $value,
                '$follow' => t('Connect')
        ));
 
 }
 
 function findpeople_widget() {
+       require_once('include/Contact.php');
 
        $a = get_app();
 
        if(get_config('system','invitation_only')) {
                $x = get_pconfig(local_user(),'system','invites_remaining');
                if($x || is_site_admin()) {
-                       $a->page['aside'] .= '<div class="side-link" id="side-invite-remain">' 
-                       . sprintf( tt('%d invitation available','%d invitations available',$x), $x) 
+                       $a->page['aside'] .= '<div class="side-link" id="side-invite-remain">'
+                       . sprintf( tt('%d invitation available','%d invitations available',$x), $x)
                        . '</div>' . $inv;
                }
        }
+
        return replace_macros(get_markup_template('peoplefind.tpl'),array(
                '$findpeople' => t('Find People'),
                '$desc' => t('Enter name or interest'),
@@ -32,30 +34,77 @@ function findpeople_widget() {
                '$findthem' => t('Find'),
                '$suggest' => t('Friend Suggestions'),
                '$similar' => t('Similar Interests'),
+               '$random' => t('Random Profile'),
                '$inv' => t('Invite Friends')
        ));
 
 }
 
+function unavailable_networks() {
+       $network_filter = "";
+
+       $networks = array();
+
+       if (!plugin_enabled("appnet"))
+               $networks[] = NETWORK_APPNET;
+
+       if (!plugin_enabled("fbpost") AND !plugin_enabled("facebook"))
+               $networks[] = NETWORK_FACEBOOK;
+
+       if (!plugin_enabled("statusnet"))
+               $networks[] = NETWORK_STATUSNET;
+
+       if (!plugin_enabled("pumpio"))
+               $networks[] = NETWORK_PUMPIO;
+
+       if (!plugin_enabled("twitter"))
+               $networks[] = NETWORK_TWITTER;
+
+       if (get_config("system","ostatus_disabled"))
+               $networks[] = NETWORK_OSTATUS;
+
+       if (!get_config("system","diaspora_enabled"))
+               $networks[] = NETWORK_DIASPORA;
+
+       if (!plugin_enabled("pnut"))
+               $networks[] = NETWORK_PNUT;
+
+       if (!sizeof($networks))
+               return "";
+
+       $network_filter = implode("','", $networks);
+
+       $network_filter = "AND `network` NOT IN ('$network_filter')";
+
+       return $network_filter;
+}
 
 function networks_widget($baseurl,$selected = '') {
 
        $a = get_app();
 
-       if(! local_user())
+       if (!local_user()) {
                return '';
+       }
 
-       
-       $r = q("select distinct(network) from contact where uid = %d",
+       if (!feature_enabled(local_user(),'networks')) {
+               return '';
+       }
+
+       $extra_sql = unavailable_networks();
+
+       $r = q("SELECT DISTINCT(`network`) FROM `contact` WHERE `uid` = %d AND `network` != '' $extra_sql ORDER BY `network`",
                intval(local_user())
        );
 
        $nets = array();
-       if(count($r)) {
+       if (dbm::is_result($r)) {
                require_once('include/contact_selectors.php');
-               foreach($r as $rr) {
-                               if($rr['network'])
-                                       $nets[] = array('ref' => $rr['network'], 'name' => network_to_name($rr['network']), 'selected' => (($selected == $rr['network']) ? 'selected' : '' ));
+               foreach ($r as $rr) {
+                       /// @TODO If 'network' is not there, this triggers an E_NOTICE
+                       if ($rr['network']) {
+                               $nets[] = array('ref' => $rr['network'], 'name' => network_to_name($rr['network']), 'selected' => (($selected == $rr['network']) ? 'selected' : '' ));
+                       }
                }
        }
 
@@ -74,26 +123,65 @@ function networks_widget($baseurl,$selected = '') {
 }
 
 function fileas_widget($baseurl,$selected = '') {
-       $a = get_app();
-       if(! local_user())
+       if (! local_user()) {
                return '';
+       }
+
+       if (! feature_enabled(local_user(),'filing')) {
+               return '';
+       }
 
        $saved = get_pconfig(local_user(),'system','filetags');
-       if(! strlen($saved))
+       if (! strlen($saved)) {
                return;
+       }
 
        $matches = false;
        $terms = array();
-    $cnt = preg_match_all('/\[(.*?)\]/',$saved,$matches,PREG_SET_ORDER);
-    if($cnt) {
+       $cnt = preg_match_all('/\[(.*?)\]/',$saved,$matches,PREG_SET_ORDER);
+       if ($cnt) {
                foreach($matches as $mtch) {
-                       $unescaped = file_tag_decode($mtch[1]);
+                       $unescaped = xmlify(file_tag_decode($mtch[1]));
                        $terms[] = array('name' => $unescaped,'selected' => (($selected == $unescaped) ? 'selected' : ''));
                }
        }
 
        return replace_macros(get_markup_template('fileas_widget.tpl'),array(
-               '$title' => t('File Selections'),
+               '$title' => t('Saved Folders'),
+               '$desc' => '',
+               '$sel_all' => (($selected == '') ? 'selected' : ''),
+               '$all' => t('Everything'),
+               '$terms' => $terms,
+               '$base' => $baseurl,
+
+       ));
+}
+
+function categories_widget($baseurl,$selected = '') {
+
+       $a = get_app();
+
+       if (! feature_enabled($a->profile['profile_uid'],'categories')) {
+               return '';
+       }
+
+       $saved = get_pconfig($a->profile['profile_uid'],'system','filetags');
+       if (! strlen($saved)) {
+               return;
+       }
+
+       $matches = false;
+       $terms = array();
+        $cnt = preg_match_all('/<(.*?)>/',$saved,$matches,PREG_SET_ORDER);
+        if($cnt) {
+                foreach($matches as $mtch) {
+                       $unescaped = xmlify(file_tag_decode($mtch[1]));
+                       $terms[] = array('name' => $unescaped,'selected' => (($selected == $unescaped) ? 'selected' : ''));
+               }
+       }
+
+       return replace_macros(get_markup_template('categories_widget.tpl'),array(
+               '$title' => t('Categories'),
                '$desc' => '',
                '$sel_all' => (($selected == '') ? 'selected' : ''),
                '$all' => t('Everything'),
@@ -103,3 +191,67 @@ function fileas_widget($baseurl,$selected = '') {
        ));
 }
 
+function common_friends_visitor_widget($profile_uid) {
+
+       $a = get_app();
+
+       if(local_user() == $profile_uid)
+               return;
+
+       $cid = $zcid = 0;
+
+       if(is_array($_SESSION['remote'])) {
+               foreach($_SESSION['remote'] as $visitor) {
+                       if($visitor['uid'] == $profile_uid) {
+                               $cid = $visitor['cid'];
+                               break;
+                       }
+               }
+       }
+
+       if(! $cid) {
+               if(get_my_url()) {
+                       $r = q("select id from contact where nurl = '%s' and uid = %d limit 1",
+                               dbesc(normalise_link(get_my_url())),
+                               intval($profile_uid)
+                       );
+                       if (dbm::is_result($r))
+                               $cid = $r[0]['id'];
+                       else {
+                               $r = q("select id from gcontact where nurl = '%s' limit 1",
+                                       dbesc(normalise_link(get_my_url()))
+                               );
+                               if (dbm::is_result($r))
+                                       $zcid = $r[0]['id'];
+                       }
+               }
+       }
+
+       if($cid == 0 && $zcid == 0)
+               return;
+
+       require_once('include/socgraph.php');
+
+       if($cid)
+               $t = count_common_friends($profile_uid,$cid);
+       else
+               $t = count_common_friends_zcid($profile_uid,$zcid);
+       if(! $t)
+               return;
+
+       if($cid)
+               $r = common_friends($profile_uid,$cid,0,5,true);
+       else
+               $r = common_friends_zcid($profile_uid,$zcid,0,5,true);
+
+       return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
+               '$desc' =>  sprintf( tt("%d contact in common", "%d contacts in common", $t), $t),
+               '$base' => App::get_baseurl(),
+               '$uid' => $profile_uid,
+               '$cid' => (($cid) ? $cid : '0'),
+               '$linkmore' => (($t > 5) ? 'true' : ''),
+               '$more' => t('show more'),
+               '$items' => $r
+       ));
+
+};