• Avail guidance to develop Drupal modules & Drupal themes
  • Share and get review of your code
  • Get Access to free CodeBooks and ThemeBooks
  • Drupal 5, 6 and 7 covered

Userpoints Meter

0 Points /1000 Points

Affinity views field & filter

in Project codes

This CodeLet lets you add a field and a filter in views. You can use this field to display data and filter the data.

<?php
//view.inc file
//$Id$

/**
* @file
*
* @author Joshi Consultancy Services <info@joshics.in>
*/



/**
* Implementation of hook_views_handlers
*
* @author Joshi Consultancy Services <info@joshics.in>
*/
function user_affinity_views_handlers() {
  return array(
   
'info' => array(
     
'path' => drupal_get_path('module', 'user_affinity') . '/views',
    ),
  
'handlers' => array(
    
'user_affinity_views_handler_field_similarity' => array(
       
'parent' => 'views_handler_field',
      ),
     
'user_affinity_views_handler_filter_similarity' => array(
       
'parent' => 'views_handler_filter_many_to_one',
      ),
    )
  );
}



/**
* Implementation of hook_views_data
*
* @author Joshi Consultancy Services <info@joshics.in>
*/
function user_affinity_views_data() {
 
$data['affinity_matches']['table']['group']  = t('Affinity');
 
$data['affinity_matches']['table']['join'] = array(
   
'users' => array(
     
'left_field' => 'uid',
     
'field' => 'match_uid',
     
'type' => 'INNER',
    ),
   
   
'node' => array(
     
'left_field' => 'uid',
     
'field' => 'uid',
     
'type' => 'INNER', // all nodes have an author.
   
),
  );
 
 
$data['affinity_matches']['similarity'] = array(
   
'title' => t("User Affinity"),
   
'help' => t("User affinity with current user"),
   
'field' => array(
     
'handler' => 'user_affinity_views_handler_field_similarity',
       
'click sortable' => TRUE,
       
'notafield' => TRUE,
    ),

   
'filter' => array(
     
'title' => t('User affinity'),
     
'handler' => 'user_affinity_views_handler_filter_similarity',
    ),
   
   
'sort' => array(
     
'handler' => 'views_handler_sort',
    ),
   
  
  );
  return
$data;
}
?>

Filter

<?php
//Filter
//$Id$

/**
* @file
*
* @author Joshi Consultancy Services <info@joshics.in>
*/


class user_affinity_views_handler_filter_similarity extends views_handler_filter_many_to_one {
  function
get_value_options() {
    if (isset(
$this->value_options)) {
      return;
    }

   
$this->value_options = array();
   
$this->value_options = array(0, 1, 2, 3, 4, 5);
    
  }

    function
query() {
        if (!empty(
$this->value_options)) {
           
$subquery = " LEFT JOIN {affnity_matches} am ON users.uid = am.match_uid\n";
           
$where = " affinity_matches.similarity = %d\n";
        }
   
$this->ensure_my_table();
       
$this->query->add_table("affnity_matches", "affinity_matches.match_uid", "INNER");
       
$this->query->add_where($this->options['group'], $where, $this->value);
    }
}
?>

Field

<?php
//Field
//$Id$

/**
* @file
*
* @author Joshi Consultancy Services <info@joshics.in>
*/


class user_affinity_views_handler_field_similarity extends views_handler_field {
function
options_form(&$form, &$form_state) {
   
parent::options_form($form, $form_state);
   
$form['affinity'] = array(
     
'#title' => t("User affinity"),
     
'#description' => t('User affnity with current user'),
     
'#type' => 'checkbox',
     
'#options' => array(
       
1 => t('Dispaly affinity'),
      ),
     
'#default_value' => $this->options['affinity'],
    );
  }
 
  function
query() {
      global
$user;
   
$om__user = user_load(arg(1));
   
$sn__similarity = db_result(db_query("SELECT similarity
      FROM {affinity_matches} af WHERE (af.uid = %d OR af.match_uid = %d)
      OR (af.match_uid = %d AND af.uid = %d)"
, $user->uid, $om__user->uid, $user->uid, $om__user->uid));
    return
$sn__similarity;
  }
  function
render($values) {
      global
$user;
     
$om__user = user_load($values->uid);
     
$sn__similarity = db_result(db_query("SELECT similarity
        FROM {affinity_matches} af WHERE (af.uid = %d AND af.match_uid = %d)
        OR (af.match_uid = %d AND af.uid = %d)"
, $user->uid, $om__user->uid, $user->uid, $om__user->uid));
      return (!empty(
$sn__similarity) ? $sn__similarity : 0);
  }

}
?>

5
Your rating: None Average: 5 (3 votes)
Syndicate content

Recent comments