Dotclear

source: plugins/attachments/_public.php @ 852:969647a6c35e

Revision 852:969647a6c35e, 7.7 KB checked in by Dsls <dsls@…>, 13 years ago (diff)

sexy step 3 : no more media.

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_RC_PATH')) { return; }
13
14# Attachments
15/*$core->tpl->addBlock('Attachments',array('attachmentTpl','Attachments'));
16$core->tpl->addBlock('AttachmentsHeader',array('attachmentTpl','AttachmentsHeader'));
17$core->tpl->addBlock('AttachmentsFooter',array('attachmentTpl','AttachmentsFooter'));
18$core->tpl->addValue('AttachmentMimeType',array('attachmentTpl','AttachmentMimeType'));
19$core->tpl->addValue('AttachmentType',array('attachmentTpl','AttachmentType'));
20$core->tpl->addValue('AttachmentFileName',array('attachmentTpl','AttachmentFileName'));
21$core->tpl->addValue('AttachmentSize',array('attachmentTpl','AttachmentSize'));
22$core->tpl->addValue('AttachmentTitle',array('attachmentTpl','AttachmentTitle'));
23$core->tpl->addValue('AttachmentThumbnailURL',array('attachmentTpl','AttachmentThumbnailURL'));
24$core->tpl->addValue('AttachmentURL',array('attachmentTpl','AttachmentURL'));
25$core->tpl->addValue('MediaURL',array('attachmentTpl','MediaURL'));
26$core->tpl->addBlock('AttachmentIf',array('attachmentTpl','AttachmentIf'));
27
28$core->tpl->addValue('EntryAttachmentCount',array('attachmentTpl','EntryAttachmentCount'));
29
30$core->addBehavior('tplIfConditions',array('attachmentBehavior','tplIfConditions'));
31*/
32class attachmentTpl {
33     
34     /*dtd
35     <!ELEMENT tpl:Attachments - - -- Post Attachments loop -->
36     */
37     public static function Attachments($attr,$content)
38     {
39          $res =
40          "<?php\n".
41          'if ($_ctx->posts !== null && $core->media) {'."\n".
42               '$_ctx->attachments = new ArrayObject($core->media->getPostMedia($_ctx->posts->post_id));'."\n".
43          "?>\n".
44         
45          '<?php foreach ($_ctx->attachments as $attach_i => $attach_f) : '.
46          '$GLOBALS[\'attach_i\'] = $attach_i; $GLOBALS[\'attach_f\'] = $attach_f;'.
47          '$_ctx->file_url = $attach_f->file_url; ?>'.
48          $content.
49          '<?php endforeach; $_ctx->attachments = null; unset($attach_i,$attach_f,$_ctx->file_url); ?>'.
50         
51          "<?php } ?>\n";
52         
53          return $res;
54     }
55     
56     /*dtd
57     <!ELEMENT tpl:AttachmentsHeader - - -- First attachments result container -->
58     */
59     public static function AttachmentsHeader($attr,$content)
60     {
61          return
62          "<?php if (\$attach_i == 0) : ?>".
63          $content.
64          "<?php endif; ?>";
65     }
66     
67     /*dtd
68     <!ELEMENT tpl:AttachmentsFooter - - -- Last attachments result container -->
69     */
70     public static function AttachmentsFooter($attr,$content)
71     {
72          return
73          "<?php if (\$attach_i+1 == count(\$_ctx->attachments)) : ?>".
74          $content.
75          "<?php endif; ?>";
76     }
77     
78     /*dtd
79     <!ELEMENT tpl:AttachmentsIf - - -- Test on attachment fields -->
80     <!ATTLIST tpl:AttachmentIf
81     is_image  (0|1)     #IMPLIED  -- test if attachment is an image (value : 1) or not (value : 0)
82     has_thumb (0|1)     #IMPLIED  -- test if attachment has a square thumnail (value : 1) or not (value : 0)
83     is_mp3    (0|1)     #IMPLIED  -- test if attachment is a mp3 file (value : 1) or not (value : 0)
84     is_flv    (0|1)     #IMPLIED  -- test if attachment is a flv file (value : 1) or not (value : 0)
85     >
86     */
87     public static function AttachmentIf($attr,$content)
88     {
89          $if = array();
90         
91          $operator = isset($attr['operator']) ? $this->getOperator($attr['operator']) : '&&';
92         
93          if (isset($attr['is_image'])) {
94               $sign = (boolean) $attr['is_image'] ? '' : '!';
95               $if[] = $sign.'$attach_f->media_image';
96          }
97         
98          if (isset($attr['has_thumb'])) {
99               $sign = (boolean) $attr['has_thumb'] ? '' : '!';
100               $if[] = $sign.'isset($attach_f->media_thumb[\'sq\'])';
101          }
102         
103          if (isset($attr['is_mp3'])) {
104               $sign = (boolean) $attr['is_mp3'] ? '==' : '!=';
105               $if[] = '$attach_f->type '.$sign.' "audio/mpeg3"';
106          }
107         
108          if (isset($attr['is_flv'])) {
109               $sign = (boolean) $attr['is_flv'] ? '' : '!';
110               $if[] = $sign.
111                    '($attach_f->type == "video/x-flv" || '.
112                    '$attach_f->type == "video/mp4" || '.
113                    '$attach_f->type == "video/x-m4v")';
114          }
115         
116          if (count($if) != 0) {
117               return '<?php if('.implode(' '.$operator.' ', (array) $if).') : ?>'.$content.'<?php endif; ?>';
118          } else {
119               return $content;
120          }
121     }
122     
123     /*dtd
124     <!ELEMENT tpl:AttachmentMimeType - O -- Attachment MIME Type -->
125     */
126     public static function AttachmentMimeType($attr)
127     {
128          $f = $GLOBALS['core']->tpl->getFilters($attr);
129          return '<?php echo '.sprintf($f,'$attach_f->type').'; ?>';
130     }
131     
132     /*dtd
133     <!ELEMENT tpl:AttachmentType - O -- Attachment type -->
134     */
135     public static function AttachmentType($attr)
136     {
137          $f = $GLOBALS['core']->tpl->getFilters($attr);
138          return '<?php echo '.sprintf($f,'$attach_f->media_type').'; ?>';
139     }
140     
141     /*dtd
142     <!ELEMENT tpl:AttachmentFileName - O -- Attachment file name -->
143     */
144     public static function AttachmentFileName($attr)
145     {
146          $f = $GLOBALS['core']->tpl->getFilters($attr);
147          return '<?php echo '.sprintf($f,'$attach_f->basename').'; ?>';
148     }
149     
150     /*dtd
151     <!ELEMENT tpl:AttachmentSize - O -- Attachment size -->
152     <!ATTLIST tpl:AttachmentSize
153     full CDATA     #IMPLIED  -- if set, size is rounded to a human-readable value (in KB, MB, GB, TB)
154     >
155     */
156     public static function AttachmentSize($attr)
157     {
158          $f = $GLOBALS['core']->tpl->getFilters($attr);
159          if (!empty($attr['full'])) {
160               return '<?php echo '.sprintf($f,'$attach_f->size').'; ?>';
161          }
162          return '<?php echo '.sprintf($f,'files::size($attach_f->size)').'; ?>';
163     }
164     
165     /*dtd
166     <!ELEMENT tpl:AttachmentTitle - O -- Attachment title -->
167     */
168     public static function AttachmentTitle($attr)
169     {
170          $f = $GLOBALS['core']->tpl->getFilters($attr);
171          return '<?php echo '.sprintf($f,'$attach_f->media_title').'; ?>';
172     }
173     
174     /*dtd
175     <!ELEMENT tpl:AttachmentThumbnailURL - O -- Attachment square thumbnail URL -->
176     */
177     public static function AttachmentThumbnailURL($attr)
178     {
179          $f = $GLOBALS['core']->tpl->getFilters($attr);
180          return
181          '<?php '.
182          'if (isset($attach_f->media_thumb[\'sq\'])) {'.
183               'echo '.sprintf($f,'$attach_f->media_thumb[\'sq\']').';'.
184          '}'.
185          '?>';
186     }
187     
188     /*dtd
189     <!ELEMENT tpl:AttachmentURL - O -- Attachment URL -->
190     */
191     public static function AttachmentURL($attr)
192     {
193          $f = $GLOBALS['core']->tpl->getFilters($attr);
194          return '<?php echo '.sprintf($f,'$attach_f->file_url').'; ?>';
195     }
196     
197     public static function MediaURL($attr)
198     {
199          $f = $GLOBALS['core']->tpl->getFilters($attr);
200          return '<?php echo '.sprintf($f,'$_ctx->file_url').'; ?>';
201     }
202     
203     /*dtd
204     <!ELEMENT tpl:EntryAttachmentCount - O -- Number of attachments for entry -->
205     <!ATTLIST tpl:EntryAttachmentCount
206     none CDATA     #IMPLIED  -- text to display for "no attachment" (default: no attachment)
207     one  CDATA     #IMPLIED  -- text to display for "one attachment" (default: one attachment)
208     more CDATA     #IMPLIED  -- text to display for "more attachment" (default: %s attachment, %s is replaced by the number of attachments)
209     >
210     */
211     public static function EntryAttachmentCount($attr)
212     {
213          $none = 'no attachment';
214          $one = 'one attachment';
215          $more = '%d attachments';
216         
217          if (isset($attr['none'])) {
218               $none = addslashes($attr['none']);
219          }
220          if (isset($attr['one'])) {
221               $one = addslashes($attr['one']);
222          }
223          if (isset($attr['more'])) {
224               $more = addslashes($attr['more']);
225          }
226         
227          return
228          "<?php if (\$_ctx->posts->countMedia() == 0) {\n".
229          "  printf(__('".$none."'),(integer) \$_ctx->posts->countMedia());\n".
230          "} elseif (\$_ctx->posts->countMedia() == 1) {\n".
231          "  printf(__('".$one."'),(integer) \$_ctx->posts->countMedia());\n".
232          "} else {\n".
233          "  printf(__('".$more."'),(integer) \$_ctx->posts->countMedia());\n".
234          "} ?>";
235     }
236}
237
238class attachmentBehavior
239{
240     public static function tplIfConditions($tag,$attr,$content,$if)
241     {
242          if ($tag == "EntryIf" && isset($attr['has_attachment'])) {
243               $sign = (boolean) $attr['has_attachment'] ? '' : '!';
244               $if[] = $sign.'$_ctx->posts->countMedia()';
245          }
246     }
247}
248?>
Note: See TracBrowser for help on using the repository browser.

Sites map