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