user_level > 9) return true; if (!$ids) { $ids = apply_filters('diso_current_user_urls', array()); if (empty($ids)) return false; $ids = diso_get_sgapi_urls($ids); $bookmarks = get_bookmarks(); } if (empty($ids)) return false; foreach($ids as $id) { foreach($bookmarks as $bookmark) { if(normalize_uri($bookmark->link_url) == normalize_uri($id)) { // check link rel tags $rels = explode(' ',$bookmark->link_rel); foreach($taxonomies as $val) { if(in_array($val,$rels)) { return true; } } // check link categories $cats = wp_get_object_terms($bookmark->link_id, 'link_category'); foreach($taxonomies as $val) { if(in_array($val->name,$cats)) { return true; } } } } } return false; } /** * Get current user URLs from OpenID and Facebook plugins. These should be moved to their respective plugins in the future. */ function diso_current_user_urls($urls) { global $wpdb; $user = wp_get_current_user(); if(function_exists('is_user_openid') && is_user_openid()) { $urls = array_merge($urls, $wpdb->get_results("SELECT url FROM {$wpdb->prefix}openid_identities WHERE user_id=".$user->ID)); } if(function_exists('is_user_facebook') && is_user_facebook()) { if(function_exists('facebook_from_user')) $urls = array_merge($urls, array(facebook_from_user())); } return $urls; } add_filter('diso_current_user_urls', 'diso_current_user_urls'); /** * Use Google's Social Graph API to get all equivalent URLs for the specified URLs. */ function diso_get_sgapi_urls($urls) { $new = array(); if (!empty($urls)) { require_once dirname(__FILE__).'/sgapi.php'; $sga = new SocialGraphApi(array('edgesout'=>0,'edgesin'=>0,'followme'=>1,'sgn'=>0)); foreach($urls as $url) { if(is_object($url)) $url = $url->url; if(!$url) continue; $data = $sga->get($url); if(!$data || !count($data)) continue; if($data['nodes']) $new = array_merge($new, array_keys($data['nodes'])); } } return $new; } function register_diso_permission_field($label, $field) { $fields = get_option('diso_permission_fields'); if(!is_array($fields)) $fields = array(); $fields[$label] = $field; update_option('diso_permission_fields', $fields); }//end function register_diso_permission_field function diso_permissions_taxonomies() { $taxonomies = array( 'Yourself' => 'me', 'Friends' => 'friend', 'Contacts' => 'contact', 'Acquaintances' => 'acquaintance', 'People You\'ve Met' => 'met', 'Co-workers' => 'co-worker', 'Colleagues' => 'colleague', 'Co-residents' => 'co-resident', 'Neighbors' => 'neighbor', 'Your Children' => 'child', 'Your Parents' => 'parent', 'Your Siblings' => 'sibling', 'Your Spouse' => 'spouse', 'Your Family' => 'kin', 'Muses' => 'muse', 'Crushes' => 'crush', 'Dates' => 'date', 'Sweetheart' => 'sweetheart' ); $terms = get_terms('link_category'); foreach($terms as $term) $taxonomies[$term->name] = $term->name; return $taxonomies; } function diso_permissions_page() { global $userdata; get_currentuserinfo(); $taxonomies = diso_permissions_taxonomies(); if(count($_POST['permissions_level'])) {//if saving //$permissions = $userdata->profile_permissions; $permissions = array(); foreach($_POST['permissions_level'] as $field => $level) { if($level == 'custom') { foreach($_POST['permissions'] as $key => $val) $permissions[$key] = array_unique(array_merge(array_keys($val), array('me'))); } else { switch($level) { case 'any': $permissions[$field] = array_values($taxonomies); break; case 'family': $permissions[$field] = array('me', 'kin', 'child', 'parent', 'sibling', 'spouse'); break; case 'family,friends': $permissions[$field] = array('me', 'kin', 'child', 'parent', 'sibling', 'spouse', 'friend', 'muse', 'date', 'sweetheart'); break; case 'public': $permissions[$field] = array(); break; }//end switch }//end if permissions_level }//end foreach update_usermeta($userdata->ID, 'profile_permissions', $permissions); update_usermeta($userdata->ID, 'profile_permissions_level', $_POST['permissions_level']); $userdata->profile_permissions = $permissions; $userdata->profile_permissions_level = $_POST['permissions_level']; }//end if saving $permission_fields = apply_filters('diso_permission_fields', array()); echo '