added producer to generate all the include files for the frontpage rotating image
[nyc.indymedia.org.git] / etc / producer / producers.xml
1
2 <!--
3   This XML file defines a set of producers intended for a typical indymedia 
4   site:
5     - a start page
6     - a navigational bar
7     - topic pages
8     - a newswire archive
9     - a feature archive
10     - articles
11     - media
12 -->  
13
14 <producers>
15   <nodedefinition name="Language">
16     <parameters>
17       <string name="languagecondition" defaultvalue="code != 'ot'"/>
18       <string name="bundle" defaultvalue="bundles.producer" />
19       <node name="sub"/>    
20     </parameters>
21
22     <definition>
23       <List key="languages" table="language" selection="${languagecondition}" order="code"/>
24       <Enumerate key="language" table="language" selection="${languagecondition}" order="code">
25         <Resource bundle="${bundle}" key="lang" language="${language.code}"/>
26         <Define key="pathprefix" value="${language.code}" />
27         <Define key="languagepreference" value="${language.code}" />
28         <sub/>
29         <If condition="language.code=='en'">
30           <then>
31             <Define key="pathprefix" value="or" />
32             <Define key="languagepreference" value="" />
33             <sub/>
34           </then>
35         </If>
36       </Enumerate>
37     </definition>
38   </nodedefinition>
39
40                 
41
42
43
44
45 <nodedefinition name="Pull">
46     <parameters>
47       <string name="url"/>
48       <string name="blogname"/>
49       <string name="blogurl"/>
50       <string name="articletype"/>
51     </parameters>
52
53     <definition>
54       <Log message="Pulling 1.0 feed from ${blogname} at ${url}" type="info" />
55       <RSS key="feeditems" url="${url}" encoding="UTF-8" />
56       <Enumerate key="item" list="feeditems['rss:item']" >
57         <Define key="languagecode" value="ot" />
58         <If condition="item['dc:language']">
59           <then>
60             <Set key="languagecode" value="item['dc:language']"/>
61           </then>
62         </If>
63
64         <If condition="item['dc:source']">
65           <then>
66             <Set key="origin" value="item['dc:source']"/>
67           </then>
68           <else>
69             <Set key="origin" value="item.identifier"/>
70           </else>
71         </If>
72
73         <If condition="item['dcterms:hasPart']">
74           <then>
75             <Set key="haspartimg" value="'&lt;img align=&quot;right&quot; src=&quot;'++item['dcterms:hasPart'] ++'&quot; /&gt;' " />
76           </then>
77           <else>
78             <Set key="haspartimg" value="' '" />
79           </else>
80         </If>
81
82         <Set key="present" value="0" />
83         <Enumerate
84           key="article"
85           table="content"
86           selection="source='${utility.escapeJDBCString(origin)}'" limit="1">
87           <Set key="present" value="1" />
88         </Enumerate>
89         <If condition="present==0">
90           <then>
91             <Log message="  new entry from ${blogname}: ${item['rss:title']}" type="info" />
92              <CreateEntity
93                key="article"
94                table="content"
95
96                date="config.now.formatted.yyyymmdd"
97                publish_path="' '"
98                to_publisher="'0'"
99                is_produced="'0'"
100                is_published="'1'"
101                is_html="'1'"
102
103                source="origin"
104                to_article_type="articletype"
105
106                content_data="item['content:encoded']++' '"
107                creator_main_url="blogurl"
108                description="haspartimg++item['rss:description']++' '"
109                to_language="languageCodeToId(languagecode)"
110                title="item['rss:title']++''"
111                webdb_create="config.now"
112                creator="blogname"
113                comment="'Taken from ' ++ blogname"
114              />
115           </then>
116         </If>
117       </Enumerate>
118     </definition>
119   </nodedefinition>
120
121
122   <nodedefinition name="RSSChannel">
123     <parameters>
124       <string name="articleSelection"/>
125       <string name="extratables" defaultvalue="none" />
126       <integer name="limit" defaultvalue="15"/>
127       <string name="channelidentifier" defaultvalue=""/>
128       <string name="channelfilename"/>
129       <string name="channeltitle"/>
130       <string name="articleprefix" defaultvalue="${config['Producer.PublicationHost']}/or" />
131       <string name="iconprefix" defaultvalue="${config['Producer.PublicationHost']}/icon" />
132       <string name="channelpublisher" defaultvalue="${config['Mir.Name']}" />
133       <string name="encoding" defaultvalue="UTF-8" />
134       <string name="channeldescription" defaultvalue=""/>
135       <string name="generator" defaultvalue="/RSS.template" />
136     </parameters>
137
138     <definition>
139       <If condition="extratables == 'none' ">
140         <then>
141           <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" />
142         </then>
143         <else>
144           <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" extratables="${extratables}" />
145         </else>
146       </If>
147       <If condition="channeldescription==''">
148         <then>
149           <Define key="channeldescription" value="${channeltitle}"/>
150         </then>
151       </If>
152       <If condition="channelidentifier==''">
153         <then>
154           <Define key="channelidentifier" value="${config['Producer.PublicationHost']}/or/${channelfilename}"/>
155         </then>
156       </If>
157
158       <Generate
159          parameters="${encoding}"
160          generator="${generator}"
161          destination="${config.storageRoot}/${channelfilename}"/>
162     </definition>
163   </nodedefinition>
164
165   <nodedefinition name="RSSChannelBundle">
166     <parameters>
167       <string name="extratables" defaultvalue="none" />
168       <string name="selection" defaultvalue="c.is_published='1'" />  
169       <string name="basefilename" defaultvalue="main" />
170     </parameters>
171     <definition>
172       <!-- newswire -->
173       <RSSChannel
174         articleSelection="(c.to_article_type in (${articletype.newswire}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.newswire}))) and ${selection}"
175         channelfilename="${basefilename}-newswire.rss"
176         channeltitle="${config['Mir.Name']} ${basefilename} newswire"
177         limit="20"
178         extratables="${extratables}"
179       />
180       <RSSChannel
181         articleSelection="(c.to_article_type in (${articletype.newswire}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.newsire}))) and ${selection}"
182         channelfilename="${basefilename}-newswire-content.rss"
183         channeltitle="${config['Mir.Name']} ${basefilename} newswire"
184         limit="20"
185         generator="RSS-full.template"
186         extratables="${extratables}"
187       />    
188       <!-- features -->
189       <RSSChannel
190         articleSelection="(c.to_article_type in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}))) and ${selection}"
191         channelfilename="${basefilename}-features.rss"
192         channeltitle="${config['Mir.Name']} ${basefilename} features"
193         limit="20"
194         extratables="${extratables}"
195       />
196       <RSSChannel
197         articleSelection="(c.to_article_type in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}) or (c.to_article_type=${articletype.translation} and c.to_original.to_articletype in (${articletype.feature},${articletype.startspecial},${articletype.topicspecial}))) and ${selection}"
198         channelfilename="${basefilename}-features-content.rss"
199         channeltitle="${config['Mir.Name']} ${basefilename} features"
200         limit="20"
201         generator="RSS-full.template"
202         extratables="${extratables}"
203       />
204     </definition>
205   </nodedefinition>
206
207  
208   <producer name="articles">
209     <verbs>
210       <verb name="changed" default="1">
211         <Define key="verbcondition" value="(not is_produced)"/>
212         <Set key="limit" value="10"/>
213       </verb>
214       <verb name="all">
215         <Define key="verbcondition" value=""/>
216         <Set key="limit" value="-1"/>
217       </verb>
218
219       <verb name="sample">
220         <Define key="verbcondition" value=""/>
221         <Set key="limit" value="10"/>
222       </verb>
223     </verbs>
224     <body>
225       <Enumerate key="article" table="content" selection="${verbcondition}"
226                   limit="limit" order="webdb_create desc">
227         <Enumerate 
228             key="media" table="image" 
229             selection="exists (select * from content_x_media where media_id=images.id and content_id=${article.id})
230                or      exists (select * from comment_x_media, comment
231                            where comment_id = comment.id and media_id=images.id and comment.to_media=${article.id})"
232             order="id desc">
233             
234            <GenerateMedia key="media" />
235         </Enumerate>
236         <Enumerate 
237             key="media" table="video" 
238             selection="exists (select * from content_x_media where media_id=video.id and content_id=${article.id})
239                or      exists (select * from comment_x_media, comment
240                            where comment_id = comment.id and media_id=video.id and comment.to_media=${article.id})"
241             order="id desc">
242            <GenerateMedia key="media" />
243         </Enumerate>
244         <Enumerate 
245             key="media" table="audio" 
246             selection="exists (select * from content_x_media where media_id=audio.id and content_id=${article.id})
247                or      exists (select * from comment_x_media, comment
248                                        where comment_id = comment.id and media_id=audio.id and comment.to_media=${article.id})"
249             order="id desc">
250             
251            <GenerateMedia key="media" />
252         </Enumerate>
253         <Enumerate 
254             key="media" table="otherMedia" 
255             selection="exists (select * from content_x_media where media_id=other_media.id and content_id=${article.id})
256                or      exists (select * from comment_x_media, comment
257                                        where comment_id = comment.id and media_id=other_media.id and comment.to_media=${article.id})"
258             order="id desc">
259             
260            <GenerateMedia key="media" />
261         </Enumerate>
262
263         <If condition="article.is_published == '1'">
264           <then>
265             <Language>
266               <Generate 
267                 generator="/article.template" 
268                 destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.shtml"/>
269              </Language>
270              <Generate 
271                 generator="/languagebar.template" 
272                 destination="${config.storageRoot}/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"/>   
273              <IndexContent key="article" pathToIndex="${config['IndexPath']}"/>
274           </then>
275           <else>
276             <UnIndexContent key="article" pathToIndex="${config['IndexPath']}"/>
277           </else>
278         </If>
279         <MarkContent key="article"/>            
280       </Enumerate>
281     </body>
282   </producer>  
283
284   <producer name="staticpages">
285     <verbs>
286       <verb name="changed" default="1">
287         <Define key="verbcondition" value="(not is_produced)"/>
288         <Set key="limit" value="10"/>
289       </verb>
290       <verb name="all">
291         <Define key="verbcondition" value=""/>
292         <Set key="limit" value="-1"/>
293       </verb>
294     </verbs>
295
296     <body>
297       <Enumerate key="article" table="content" selection="${verbcondition}  and to_article_type = ${articletype.static}"
298                   limit="limit" order="webdb_create desc">
299         <Enumerate 
300             key="media" table="image" 
301             selection="exists (select * from content_x_media where media_id=images.id and content_id=${article.id})"
302             order="id desc">
303             
304            <GenerateMedia key="media" />
305         </Enumerate>
306         <Enumerate 
307             key="media" table="video" 
308             selection="exists (select * from content_x_media where media_id=video.id and content_id=${article.id})"
309             order="id desc">
310
311            <GenerateMedia key="media" />
312         </Enumerate>
313         <Enumerate 
314             key="media" table="audio" 
315             selection="exists (select * from content_x_media where media_id=audio.id and content_id=${article.id})"
316             order="id desc">
317             
318            <GenerateMedia key="media" />
319         </Enumerate>
320         <Enumerate 
321             key="media" table="otherMedia" 
322             selection="exists (select * from content_x_media where media_id=other_media.id and content_id=${article.id})"
323
324             order="id desc">
325             
326            <GenerateMedia key="media" />
327         </Enumerate>
328
329         <If condition="article.is_published == '1'">
330           <then>
331             <Language>
332               <Generate 
333                 generator="/article.template" 
334                 destination="${config.storageRoot}/${pathprefix}/static/${article.edittitle}.shtml"/>
335              </Language>
336              <Generate 
337                 generator="/languagebar.template" 
338                 destination="${config.storageRoot}/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"/>   
339              <IndexContent key="article" pathToIndex="${config['IndexPath']}"/>
340           </then>
341           <else>
342             <UnIndexContent key="article" pathToIndex="${config['IndexPath']}"/>
343           </else>
344         </If>
345         <MarkContent key="article"/>            
346       </Enumerate>
347     </body>
348   </producer>
349
350   <producer name="navigation">
351     <verbs>
352       <verb name="generate" default="1" description="generates the left column"/>
353     </verbs>
354     <body>
355       <Language>
356         <Generate 
357             generator="/navigation.template" 
358             destination="${config.storageRoot}/${pathprefix}/navigation.inc"/>
359       </Language>
360     </body>
361   </producer>
362   
363   <producer name="staticimages">
364     <verbs>
365       <verb name="generate" default="1" description="copies all the static image files into place"/>
366     </verbs>
367     <body>
368       <CopyDir destination="img" source="etc/producer/images"/>
369     </body>
370   </producer>
371   
372   <producer name="newswirearchive">
373     <verbs>
374       <verb name="new">
375         <Set key="pages" value="3"/>
376       </verb>
377       <verb name="all">
378         <Set key="pages" value="-1"/>
379       </verb>
380     </verbs>
381     <body>
382         <Define key="docSuffix" value=".shtml"/>
383         <Define key="storageSuffix" value=".shtml"/>
384
385         <Batch key="articles" infokey="batch" table="content"
386                process="pages" batchsize="20" minbatchsize="10"
387                selection="is_published='1' and to_article_type = ${articletype.newswire}"
388                order="webdb_create asc">
389           <batches>
390             <Language>
391               <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
392               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
393               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
394
395               <Generate
396                   generator="newswirearchive.template"
397                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
398
399             </Language>
400           </batches>
401           <batchlist>
402             <Language>
403               <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
404               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
405               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
406               <Generate
407                   generator="batchnav.template"
408                   destination="${storagePrefix}nav${storageSuffix}"/>
409             </Language>
410           </batchlist>
411         </Batch>
412     </body>
413   </producer>
414
415   <producer name="featurearchive">
416     <verbs>
417       <verb name="new">
418         <Set key="pages" value="3"/>
419       </verb>
420       <verb name="all">
421         <Set key="pages" value="-1"/>
422       </verb> 
423     </verbs>
424     <body>
425         <Define key="docSuffix" value=".shtml"/>
426         <Define key="storageSuffix" value=".shtml"/>
427         
428         <Batch key="articles" infokey="batch" table="content" 
429                process="pages" batchsize="20" minbatchsize="10"
430                selection="is_published='1' and to_article_type in (${articletype.feature}, ${articletype.startspecial})"
431                order="webdb_create asc">
432           <batches>
433             <Language>
434               <Define key="pagePrefix" value="${pathprefix}/feature/archive"/>
435               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
436               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
437
438               <Generate 
439                   generator="featurearchive.template" 
440                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
441
442             </Language>
443           </batches>
444           <batchlist>
445             <Language>
446               <Define key="pagePrefix" value="${pathprefix}/feature/archive"/>
447               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
448               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
449               <Generate 
450                   generator="batchnav.template" 
451                   destination="${storagePrefix}nav${storageSuffix}"/>
452             </Language>
453           </batchlist>
454         </Batch>
455     </body>
456   </producer>
457
458   <producer name="topicpages">
459     <verbs>
460       <verb name="new">
461         <Set key="_topics" value="-1"/>
462         <Set key="pages" value="3"/>
463       </verb>
464       <verb name="all">
465         <Set key="_topics" value="-1"/>
466         <Set key="pages" value="-1"/>
467       </verb> 
468       <verb name="sample">
469         <Set key="_topics" value="2"/>
470         <Set key="pages" value="4"/>
471       </verb> 
472     </verbs>
473     <body>
474       <Enumerate key="topic" table="topic" limit="_topics">
475         <Define key="docSuffix" value=".shtml"/>
476         <Define key="storageSuffix" value=".shtml"/>
477         
478         <List key="special" table="content c" 
479           selection="c.is_published='1' and c.to_article_type = ${articletype.topicspecial} and c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
480           order = "webdb_create desc" limit="1"
481           extratables="content_x_topic cxt"/>
482       
483         <Batch key="articles" infokey="batch" table="content c" 
484                process="pages" batchsize="20" minbatchsize="10"
485                selection="c.is_published='1' and c.to_article_type in (${articletype.newswire}, ${articletype.feature}) and c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
486                order="webdb_create asc" extratables="content_x_topic cxt">
487           <batches>
488             <Language>
489               <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
490               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
491               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
492
493               <Generate 
494                   generator="topicpage.template" 
495                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
496
497             </Language>
498           </batches>
499           <batchlist>
500             <Language>
501               <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
502               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
503               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
504               <Generate 
505                   generator="batchnav.template" 
506                   destination="${storagePrefix}nav${storageSuffix}"/>
507             </Language>
508           </batchlist>
509         </Batch>
510       </Enumerate>
511     </body>
512   </producer>
513
514
515   <producer name="opnewswireinclude">
516     <verbs>
517       <verb name="generate" default="1" description="Generates the op newswire"/>
518     </verbs>
519 <body>
520 <Set key="whichnewswire" value="Open Publishing News" />
521       <List key="newswire" table="content" limit="30"
522         selection="is_published=true and to_article_type=${articletype.newswire}"
523         order="webdb_create desc"/>
524       <Language>
525         <Generate 
526             generator="/newswireinclude.template" 
527             destination="${config.storageRoot}/${pathprefix}/newswireinclude.shtml"/>
528       </Language>
529
530
531 </body>
532 </producer>
533
534   <producer name="rssnewswireinclude">
535     <verbs>
536       <verb name="generate" default="1" description="Generates the rss newswire"/>
537     </verbs>
538 <body>
539 <Set key="whichnewswire" value="RSS Publishing News" />
540       <List key="newswire" table="content" limit="30"
541         selection="is_published=true and to_article_type=${articletype.communityrssarticle}"
542         order="webdb_create desc"/>
543       <Language>
544         <Generate 
545             generator="/newswireinclude.template" 
546             destination="${config.storageRoot}/${pathprefix}/rssnewswireinclude.shtml"/>
547       </Language>
548
549
550 </body>
551 </producer>
552
553
554   
555   <producer name="startpage">
556     <verbs>
557       <verb name="generate" default="1" description="Generates the startpage"/>
558     </verbs>
559
560     <body>
561       <List key="startspecial" table="content" limit="2"
562         selection="is_published=true and to_article_type=${articletype.startspecial}"
563         order="webdb_create desc"/>
564                                         
565       <List key="features" table="content" limit="10" 
566         selection="is_published=true and to_article_type in (${articletype.feature},${articletype.promotedcommunityarticle},${articletype.promotednewswire})"
567         order="webdb_create desc"/>
568
569       <List key="communityrssarticles" table="content" limit="10" 
570         selection="is_published=true and to_article_type in (${articletype.communityrssarticle},${articletype.promotedcommunityarticle})"
571         order="webdb_create desc"/>
572
573       <List key="newswire" table="content" limit="30"
574         selection="is_published=true and to_article_type=${articletype.newswire}"
575         order="webdb_create desc"/>
576         
577       <List key="breakingnews" table="breakingNews" limit="10"
578          order="webdb_create desc"/>
579         
580       <Language>
581         <Generate 
582             generator="/startpage.template" 
583             destination="${config.storageRoot}/${pathprefix}/index.shtml"/>
584       </Language>
585     </body>
586   </producer>  
587   
588   <producer name="synchronization">
589     <verbs>
590       <verb name="run" default="1" description="Synchronizes the publication site with the production site"/>
591     </verbs>
592
593     <body>
594       <If condition="config['Rsync'] in ('1', 'y', 'yes', 'Y')">
595         <then>
596           <Execute command="${config['Rsync.Script.Path']}"/>
597         </then>
598       </If>
599     </body>
600   </producer>  
601   
602   
603   <producer name="media">
604     <verbs>
605       <verb name="new" default="1">
606         <Define key="verbcondition" value="(not is_produced)"/>
607         <Set key="limit" value="10"/>
608       </verb>
609       <verb name="all">
610         <Define key="verbcondition" value=""/>
611         <Set key="limit" value="-1"/>
612       </verb>
613
614       <verb name="sample">
615         <Define key="verbcondition" value=""/>
616         <Set key="limit" value="10"/>
617       </verb>
618     </verbs>
619     <body>
620       <Enumerate 
621           key="media" table="image" 
622           selection="${verbcondition}"
623           limit="limit" 
624           order="webdb_create desc">
625           
626          <GenerateMedia key="media" />
627       </Enumerate>
628       <Enumerate 
629           key="media" table="video" 
630           selection="${verbcondition}"
631           limit="limit" 
632           order="webdb_create desc">
633           
634          <GenerateMedia key="media" />
635       </Enumerate>
636       <Enumerate 
637           key="media" table="audio" 
638           selection="${verbcondition}"
639           limit="limit" 
640           order="webdb_create desc">
641           
642          <GenerateMedia key="media" />
643       </Enumerate>
644       <Enumerate 
645           key="media" table="otherMedia" 
646           selection="${verbcondition}"
647           limit="limit" 
648           order="webdb_create desc">
649           
650          <GenerateMedia key="media" />
651       </Enumerate>
652     </body>
653   </producer>  
654
655   <producer name="syndication">
656     <verbs>
657       <verb name="generate" />
658     </verbs>
659     <body>
660       <!-- the main features and newswire -->
661       <RSSChannelBundle />
662       
663       <!-- the topic features and newswires -->
664       <Enumerate key="topic" table="topic">
665         <RSSChannelBundle
666           basefilename="${topic.filename}"
667           selection="c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
668           extratables="content_x_topic cxt"
669         />
670       </Enumerate>
671       
672       
673
674     </body>
675
676   </producer>
677
678   <producer name="radicalendar">
679     <verbs>
680       <verb name="pull" />
681     </verbs>
682     <body>
683       <!-- groupname you will see as the value of "group" in the url for your radicalendar page, -->
684       <!--      gmtoffset is in minutes                                                          -->
685       <Radicalendar key="calendar" groupname="_imc" gmtoffset="60"  />
686       <Generate 
687         generator="/radicalendar.template" 
688         destination="${config.storageRoot}/calendarinclude.shtml"/>
689
690
691     </body>
692   </producer>
693
694
695   <producer name="update">
696     <verbs>
697       <verb name="templates" description="updates templates and bundles">
698         <Define key="command" value="/usr/bin/rsync -rb --include=*/ --include=*.template  /var/lib/mir/nyc/mir/etc/ /var/lib/mir/nyc/mir/bin/mir/WEB-INF/etc/"/>
699       </verb>
700     </verbs>
701
702     <body>
703       <Execute command="${command}"/>
704     </body>
705   </producer>
706
707
708
709
710  <producer name="generatefpincludes">
711    <verbs>
712      <verb name="doit" />
713    </verbs>
714    <body>
715       <Enumerate key="fpimage" table="image" selection="to_media_folder=8 and is_published=true" >
716         <Log message="generating include for image id: ${fpimage.id}" type="info" />
717         <Define key="id" value="${fpimage.id}" />
718                 <Define key="server" value="${fpimage.publish_server}" />
719                 <Define key="path" value="${fpimage.publish_path}" />
720                 <Define key="author" value="${fpimage.creator}" />
721                 <Define key="description" value="${fpimage.description}" />
722
723                 <Generate
724                         generator="/fpinclude.template"
725                         destination="${config.storageRoot}/fpincludes/${fpimage.id}.inc" />
726                 
727       </Enumerate>
728     </body>
729   </producer>
730
731  <producer name="getlocalblogs">
732    <verbs>
733      <verb name="doit" />
734    </verbs>
735    <body>
736       <Enumerate key="article" table="content" selection="to_article_type in(${articletype.communityrssfeed}) and is_published=true"  order="webdb_create desc">
737         <Log message="Pulling 1.0 feed from ${article.title} at ${article.source}" type="info" />
738         
739         
740         
741         <Pull
742           url="${article.source}"
743           articletype="${articletype.communityrssarticle}"
744           blogurl="${article.creator_main_url}"
745           blogname="${article.title}"
746         />
747       </Enumerate>
748     </body>
749   </producer>
750   
751
752         
753
754
755   
756 </producers>
757
758