/[drupal]/contributions/modules/cre/recommendation_modules/node_recommendation_views.inc
ViewVC logotype

Diff of /contributions/modules/cre/recommendation_modules/node_recommendation_views.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1, Mon Nov 3 13:17:49 2008 UTC revision 1.1.2.1, Mon Nov 3 13:17:49 2008 UTC
# Line 0  Line 1 
1    <?php
2    // $Id: $
3    function node_recommendation_views_tables() {
4      $tables['node_similarity'] = array(
5        'name' => 'cre_similarity_matrix',
6        'provider' => 'internal',
7        'join' => array(
8          'left' => array(
9            'table' => 'node',
10            'field' => 'nid',
11          ),
12          'right' => array(
13            'field' => 'content_id1',
14          ),
15          'extra' => array(
16            /* we only care about things where both are nodes... not totally true...
17             * but because Views 1.x only is for nodes nothing else will
18             * matter with the votingapi table */
19            'content_type1' => 'node',
20            'content_type2' => 'node',
21          ),
22        ),
23      );
24    
25      $tables['node_recommendation_user'] = array(
26        'name' => 'node_recommendations',
27        'provider' => 'internal',
28        'join' => array(
29          'left' => array(
30            'table' => 'node',
31            'field' => 'nid',
32          ),
33          'right' => array(
34            'field' => 'nid',
35          ),
36          'extra' => array(
37            'uid' => '***CURRENT_USER***'
38          ),
39        ),
40        'fields' => array(
41          'recommenadation_score' => array(
42            'name' => t('Content Recommendation: Predicated Value'),
43            'field' => 'score',
44            'help' => t('Predicted score for the logged in user on this node'),
45          ),
46        ),
47        'sorts' => array(
48          'recommendation_score' => array(
49            'name' => t('Content Recommendation: Recommendation Score'),
50            'handler' => 'node_recommendation_score_handler',
51            'help' => t('Sort by the recommendation score for the current user'),
52          ),
53        ),
54      );
55    
56      return $tables;
57    }
58    
59    function node_recommendation_score_handler($op, &$query, $sortinfo, $sort) {
60      $query->add_orderby('node_recommendation_user', 'score', $sort['sortorder']);
61      // perhaps a better join prevents this
62      $query->add_where("node_recommendation_user.score <> ''");
63    }
64    
65    function node_recommendation_views_arguments() {
66      $arguments = array(
67        'similarity' => array(
68          'name' => t('Content Recommendation: Similar node'),
69          'handler' => 'node_recommendation_similarity',
70          'help' => t('Calculates the similarity scores between this nid and every other id and sorts by that similarity'),
71        ),
72      );
73      return $arguments;
74    }
75    
76    function node_recommendation_similarity($op, &$query, $argtype, $arg = '') {
77      switch($op) {
78        case 'filter':
79          $base_nid = intval($arg);
80          $query->ensure_table('node_similarity');
81          $field = 'ABS(node_similarity.sum / node_similarity.count)';
82          $query->add_orderby('', $field, 'ASC', 'avg_difference');
83          //WHERE d.content_id2 = 61 AND d.content_id1 <> 61
84          $query->add_where('node_similarity.content_id2 = %d', $base_nid);
85          $query->add_where('node_similarity.content_id1 <> %d', $base_nid);
86    
87      }
88    }
89    
90    function node_recommendation_views_default_views() {
91      $view = new stdClass();
92      $view->name = 'node_recommendations';
93      $view->description = '';
94      $view->access = array (
95    );
96      $view->view_args_php = '';
97      $view->page = TRUE;
98      $view->page_title = '';
99      $view->page_header = '';
100      $view->page_header_format = '1';
101      $view->page_footer = '';
102      $view->page_footer_format = '1';
103      $view->page_empty = '';
104      $view->page_empty_format = '1';
105      $view->page_type = 'teaser';
106      $view->url = 'recommendations';
107      $view->use_pager = TRUE;
108      $view->nodes_per_page = '10';
109      $view->sort = array(
110        array(
111          'tablename' => 'node_recommendation_user',
112          'field' => 'recommendation_score',
113          'sortorder' => 'DESC',
114          'options' => '',
115        ),
116      );
117      $view->argument = array(
118      );
119      $view->field = array(
120        array(
121          'tablename' => 'node',
122          'field' => 'title',
123          'label' => 'Title',
124          'handler' => 'views_handler_field_nodelink',
125          'options' => 'link',
126        ),
127      );
128       $view->filter = array(
129        array(
130          'tablename' => 'node',
131          'field' => 'status',
132          'operator' => '=',
133          'options' => '',
134          'value' => '1',
135        ),
136      );
137      $view->exposed_filter = array(
138      );
139      $view->requires = array(node_recommendation_user, node);
140      $views[$view->name] = $view;
141    
142         $view = new stdClass();
143      $view->name = 'similar_nodes';
144      $view->description = '';
145      $view->access = array (
146    );
147      $view->view_args_php = '';
148      $view->page = TRUE;
149      $view->page_title = 'Similar nodes';
150      $view->page_header = '';
151      $view->page_header_format = '1';
152      $view->page_footer = '';
153      $view->page_footer_format = '1';
154      $view->page_empty = '';
155      $view->page_empty_format = '1';
156      $view->page_type = 'teaser';
157      $view->url = 'node/$arg/similar';
158      $view->use_pager = TRUE;
159      $view->nodes_per_page = '10';
160      $view->menu = TRUE;
161      $view->menu_title = 'Similar Nodes';
162      $view->menu_tab = TRUE;
163      $view->menu_tab_weight = '0';
164      $view->menu_tab_default = FALSE;
165      $view->menu_tab_default_parent = NULL;
166      $view->menu_tab_default_parent_type = 'tab';
167      $view->menu_parent_tab_weight = '0';
168      $view->menu_parent_title = '';
169      $view->sort = array(
170      );
171      $view->argument = array(
172        array(
173          'type' => 'similarity',
174          'argdefault' => '1',
175          'title' => '',
176          'options' => '',
177          'wildcard' => '',
178          'wildcard_substitution' => '',
179        ),
180      );
181      $view->field = array(
182      );
183      $view->filter = array(
184        array(
185          'tablename' => 'node',
186          'field' => 'status',
187          'operator' => '=',
188          'options' => '',
189          'value' => '1',
190        ),
191      );
192      $view->exposed_filter = array(
193      );
194      $view->requires = array(node);
195      $views[$view->name] = $view;
196    
197    
198    
199      return $views;
200    }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.2.1

  ViewVC Help
Powered by ViewVC 1.1.2