/[drupal]/contributions/modules/asset/modules/asset_views.inc
ViewVC logotype

Contents of /contributions/modules/asset/modules/asset_views.inc

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


Revision 1.1 - (show annotations) (download) (as text)
Sun Jan 20 20:24:12 2008 UTC (22 months, 1 week ago) by rz
Branch: MAIN
CVS Tags: DRUPAL-5--2-0-BETA1, HEAD
Branch point for: DRUPAL-6--1, DRUPAL-5--2
File MIME type: text/x-php
Beginnings of asset v1.
1 <?php
2
3 function asset_views_tables(){
4 $tables['asset_node'] = array(
5 'name' => 'asset_node',
6 'join' => array(
7 'type' => 'inner',
8 'left' => array(
9 'table' => 'node',
10 'field' => 'nid',
11 ),
12 'right' => array(
13 'field' => 'nid',
14 ),
15 ),
16 );
17
18
19 $tables['asset'] = array(
20 'name' => 'asset',
21 'join' => array(
22 'type' => 'inner',
23 'left' => array(
24 'table' => 'asset_node',
25 'field' => 'aid',
26 ),
27 'right' => array(
28 'field' => 'aid',
29 ),
30 ),
31 'fields' => array(
32 'aid' => array(
33 'name' => t('Asset'),
34 'help' => t('Display the formatted asset. NOTE: If using one of the formatters under <em><strong>Only Available for Specific Extensions</strong></em>, be sure to apply the Asset:Extension filter for the specific extensions that apply to that formatter.'),
35 'option' => array(
36 '#type' => 'select',
37 '#options' => 'asset_views_options_formatters',
38 ),
39 'handler' => array(
40 'asset_views_handler_field_asset' => t('No Link'),
41 'asset_views_handler_field_asset_link' => t('Link to asset'),
42 'asset_views_handler_field_asset_node_link' => t('Link to node'),
43 ),
44 ),
45 'filename' => array(
46 'name' => t('Asset: Filename'),
47 'help' => t('Display the filename of the asset.'),
48 ),
49 'extension' => array(
50 'name' => t('Asset: Extension'),
51 'help' => t('Display the extension of the asset.'),
52 ),
53 'dirname' => array(
54 'name' => t('Asset: Directory'),
55 'help' => t('Display the directory of the asset.'),
56 ),
57 'filesize' => array(
58 'name' => t('Asset: File Size'),
59 'help' => t('Display the file size of the asset.'),
60 ),
61 ),
62 'filters' => array(
63 'extension' => array(
64 'name' => t('Asset: File Extension'),
65 'help' => t('Filter by file extension.'),
66 'operator' => views_handler_operator_andor(),
67 'value' => array(
68 '#type' => 'select',
69 '#options' => 'asset_views_options_file_extensions',
70 '#multiple' => true,
71 '#size' => 4,
72 ),
73 ),
74 'type' => array(
75 'name' => t('Asset: File Type'),
76 'help' => t('Filter by file type.'),
77 'operator' => views_handler_operator_andor(),
78 'value' => array(
79 '#type' => 'select',
80 '#options' => 'asset_views_options_file_types',
81 '#multiple' => true,
82 '#size' => 4,
83 ),
84 ),
85 'dirname' => array(
86 'name' =>t ('Asset: Directory'),
87 'help' => t('Filter by an assets parent directory.'),
88 'operator' => views_handler_operator_eqneq(),
89 ),
90 'distinct' => array(
91 'name' => t('Asset: Distinct'),
92 'operator' => array('=' => 'is'),
93 'list' => array('distinct' => 'distinct'),
94 'handler' => 'asset_views_handler_filter_distinct',
95 'value-type' => 'array',
96 'help' => t('This filter ensures that each asset may only be listed once, even if it matches multiple criteria.'),
97 ),
98 ),
99 );
100 return $tables;
101 }
102
103
104 function asset_views_handler_field_asset_node_link($fieldinfo, $fielddata, $value, $data) {
105 $link = 'node/'.$data->nid;
106 return asset_views_handler_field_asset($fieldinfo, $fielddata, $value, $data, $link);
107 }
108
109 function asset_views_handler_field_asset_link($fieldinfo, $fielddata, $value, $data) {
110 $asset = asset_load($value);
111 $link = $asset->url;
112 return asset_views_handler_field_asset($fieldinfo, $fielddata, $value, $data, $link);
113 }
114
115 function asset_views_handler_field_asset($fieldinfo, $fielddata, $value, $data, $link = false) {
116 static $formatters;
117 if(!$formatters){
118 $formatters = asset_get_formatters();
119 }
120
121 $asset = asset_load($value);
122 switch($fielddata['options']){
123 case 'full':
124 list($module,$format) = explode(':',asset_get_default_formatter($asset->type, $asset->extension, false));
125 break;
126 case 'teaser':
127 list($module,$format) = explode(':',asset_get_default_formatter($asset->type, $asset->extension, true));
128 break;
129 default:
130 list($module,$format) = explode(':',$fielddata['options']);
131 $found = false;
132 foreach((array)$formatters[$asset->type][$asset->extension] as $formatter){
133 if($formatter['module'] == $module && $formatter['format'] == $format){
134 $found = true;
135 break;
136 }
137 }
138 foreach((array)$formatters[$asset->type]['*'] as $formatter){
139 if($formatter['module'] == $module && $formatter['format'] == $format){
140 $found = true;
141 break;
142 }
143 }
144 foreach((array)$formatters['*']['*'] as $formatter){
145 if($formatter['module'] == $module && $formatter['format'] == $format){
146 $found = true;
147 break;
148 }
149 }
150 if(!$found){
151 $module = 'asset';
152 $format = 'link';
153 }
154 break;
155 }
156
157 if($link){
158 if($format == 'link'){
159 $html = $asset->title ? $asset->title : $asset->filename;
160 }else{
161 $html = module_invoke($module, 'asset_formatter', 'render', $asset, array('format'=>$format));
162 }
163 return l($html, $link, array(), null, null, false, true);
164 }else{
165 return module_invoke($module, 'asset_formatter', 'render', $asset, array('format'=>$format));
166 }
167 }
168
169 function asset_views_options_formatters(){
170 $all = t('Available for all Extensions');
171 $specific = t('Only available for specific Extensions');
172
173 $options[$all]['full'] = t('Default Full-Text');
174 $options[$all]['teaser'] = t('Default Teaser');
175 foreach (module_implements('asset_formatter') as $module) {
176 $list = module_invoke($module, 'asset_formatter', 'info');
177 foreach ($list as $key => $data) {
178 foreach($data['types'] as $type=>$exts){
179 if($exts == array('*')){
180 $options[$all][$module.':'.$key] = $data['name'] . ' (' . join($exts,',').')';
181 }else{
182 $options[$specific][$module.':'.$key] = $data['name'] . ' (' . join($exts,',').')';
183 }
184 }
185 }
186 }
187 return $options;
188 }
189
190 function asset_views_options_file_extensions(){
191 $result = db_query('SELECT DISTINCT(extension) FROM {asset} ORDER BY extension');
192 $options = array();
193 while($row = db_fetch_object($result)){
194 $options[] = $row->extension;
195 }
196 return drupal_map_assoc($options);
197 }
198
199 function asset_views_options_file_types(){
200 $result = db_query('SELECT DISTINCT(type) FROM {asset} ORDER BY type');
201 $options = array();
202 while($row = db_fetch_object($result)){
203 $options[] = $row->type;
204 }
205 return drupal_map_assoc($options);
206 }
207
208 function asset_views_handler_filter_distinct($op, $filter, $filterinfo, &$query) {
209 if (!$query->no_distinct) {
210 $query->set_distinct();
211 $query->add_groupby('asset_node.aid');
212 }
213 }
214

  ViewVC Help
Powered by ViewVC 1.1.2