name = privatemsg_extraviews
description = views Private Messages
core = 6.x
package = Mail
version = "6.x-1.1"
* This source code was highlighted with Source Code Highlighter .
<?php
/**
* Implementation of hook_views_api().
*/
function privatemsg_extraviews_views_api() {
return array(
'api' => 2, // API
'path' => drupal_get_path( 'module' , 'privatemsg_extraviews' ), // Views
);
}
* This source code was highlighted with Source Code Highlighter .
<?php
function privatemsg_extraviews_views_data() {
// Views
$data[ 'privatemsg' ][ 'table' ][ 'group' ] = t( 'Private Messages' );
//
$data[ 'privatemsg' ][ 'table' ][ 'join' ] = array(
// users -
'users' => array(
//
'left_field' => 'uid' ,
'field' => 'uid' ,
),
);
// count - ,
$data[ 'privatemsg' ][ 'count' ] = array(
'title' => t( ' ' ),
'help' => t( ' ""' ),
//
'field' => array(
//
'handler' => 'privatemsg_extraviews_handler_field_count' ,
//
'click sortable' => TRUE,
),
);
//
$data[ 'privatemsg' ][ 'count_new' ] = array(
'title' => t( ' ' ),
'help' => t( ' ""' ),
'field' => array(
'handler' => 'privatemsg_extraviews_handler_field_count_new' ,
'click sortable' => TRUE,
),
);
return $data;
}
* This source code was highlighted with Source Code Highlighter .
function privatemsg_extraviews_views_handlers() {
return array(
//
'handlers' => array(
'privatemsg_extraviews_handler_field_count' => array(
// ,
'parent' => 'views_handler_field_numeric' ,
//
'path' => drupal_get_path( 'module' , 'privatemsg_extraviews' ),
),
//
'privatemsg_extraviews_handler_field_count_new' => array(
'parent' => 'views_handler_field_numeric' ,
'path' => drupal_get_path( 'module' , 'privatemsg_extraviews' ),
),
),
);
}
* This source code was highlighted with Source Code Highlighter .
<?php
// , " "
class privatemsg_extraviews_handler_field_count extends views_handler_field_numeric {
//
function query() {
//
$table = $ this ->query->ensure_table( 'pm_index' );
//
$sql = "SELECT COUNT(DISTINCT thread_id) FROM {pm_index} p WHERE p.deleted = 0 AND p.uid = users.uid" ;
//
$ this ->query->add_field( '' , "($sql)" , 'count' );
$ this ->field_alias = 'count' ;
}
//
function render($values) {
$txt = $values->count;
if ($txt) {
return $txt;
}
else {
return parent::render($values);
}
}
}
* This source code was highlighted with Source Code Highlighter .
<?php
class privatemsg_extraviews_handler_field_count_new extends views_handler_field_numeric {
function query() {
$table = $ this ->query->ensure_table( 'pm_index' );
$sql = "SELECT COUNT(DISTINCT thread_id) FROM {pm_index} p WHERE p.deleted = 0 AND p.is_new = 1 AND p.uid = users.uid" ;
$ this ->query->add_field( '' , "($sql)" , 'count_new' );
$ this ->field_alias = 'count_new' ;
}
function render($values) {
$txt = $values->count_new;
if ($txt) {
return $txt;
}
else {
return parent::render($values);
}
}
}
* This source code was highlighted with Source Code Highlighter .
SELECT users.uid AS uid,
( SELECT COUNT ( DISTINCT thread_id) FROM pm_index p WHERE p.deleted = 0 AND p.uid = users.uid) AS count ,
( SELECT COUNT ( DISTINCT thread_id) FROM pm_index p WHERE p.deleted = 0 AND p.is_new = 1 AND p.uid = users.uid) AS count_new
FROM users users
WHERE users.uid = 1
* This source code was highlighted with Source Code Highlighter .
Source: https://habr.com/ru/post/80663/
All Articles