1.1 restoration
[mir.git] / etc / producer / producers.xml
index e97a160..9b0bbd6 100755 (executable)
@@ -1,4 +1,4 @@
-<!-- 
+<!--
   This XML file defines a set of producers intended for a typical indymedia 
   site:
     - a start page
@@ -7,12 +7,13 @@
     - a newswire archive
     - a feature archive
     - articles
+    - media
 -->  
 
 <producers>
   <nodedefinition name="Language">
     <parameters>
-      <string name="languagecondition" defaultvalue=""/>
+      <string name="languagecondition" defaultvalue="code != 'ot'"/>
       <string name="bundle" defaultvalue="bundles.producer" />
       <node name="sub"/>    
     </parameters>
       <Enumerate key="language" table="language" selection="${languagecondition}" order="code">
         <Resource bundle="${bundle}" key="lang" language="${language.code}"/>
         <Define key="pathprefix" value="${language.code}" />
+        <Define key="languagepreference" value="${language.code}" />
         <sub/>
+        <If condition="language.code=='en'">
+          <then>
+            <Define key="pathprefix" value="or" />
+            <Define key="languagepreference" value="" />
+            <sub/>
+          </then>
+        </If>
       </Enumerate>
     </definition>
   </nodedefinition>
+
+  <nodedefinition name="RSSChannel">
+    <parameters>
+      <string name="articleSelection"/>
+      <string name="extratables" defaultvalue="none" />
+      <integer name="limit" defaultvalue="15"/>
+      <string name="channelidentifier" defaultvalue=""/>
+      <string name="channelfilename"/>
+      <string name="channeltitle"/>
+      <string name="articleprefix" defaultvalue="${config['Producer.PublicationHost']}/or" />
+      <string name="iconprefix" defaultvalue="${config['Producer.PublicationHost']}/icon" />
+      <string name="channelpublisher" defaultvalue="${config['Mir.Name']}" />
+      <string name="encoding" defaultvalue="UTF-8" />
+      <string name="channeldescription" defaultvalue=""/>
+      <string name="generator" defaultvalue="/RSS.template" />
+    </parameters>
+
+    <definition>
+      <If condition="extratables == 'none' ">
+        <then>
+          <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" />
+        </then>
+        <else>
+          <List key="articles" table="content c" selection="${articleSelection}" order = "c.webdb_create desc, c.date desc" limit="limit" extratables="${extratables}" />
+        </else>
+      </If>
+      <If condition="channeldescription==''">
+        <then>
+         <Define key="channeldescription" value="${channeltitle}"/>
+       </then>
+      </If>
+      <If condition="channelidentifier==''">
+        <then>
+          <Define key="channelidentifier" value="${config['Producer.PublicationHost']}/or/${channelfilename}"/>
+        </then>
+      </If>
+
+      <Generate
+         parameters="${encoding}"
+         generator="${generator}"
+        destination="${config.storageRoot}/${channelfilename}"/>
+    </definition>
+  </nodedefinition>
+
+  <nodedefinition name="RSSChannelBundle">
+    <parameters>
+      <string name="extratables" defaultvalue="none" />
+      <string name="selection" defaultvalue="c.is_published='1'" />  
+      <string name="basefilename" defaultvalue="main" />
+    </parameters>
+    <definition>
+      <!-- newswire -->
+      <RSSChannel
+        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}"
+        channelfilename="${basefilename}-newswire.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} newswire"
+        limit="20"
+       extratables="${extratables}"
+      />
+      <RSSChannel
+        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}"
+        channelfilename="${basefilename}-newswire-content.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} newswire"
+        limit="20"
+        generator="RSS-full.template"
+       extratables="${extratables}"
+      />    
+      <!-- features -->
+      <RSSChannel
+        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}"
+        channelfilename="${basefilename}-features.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} features"
+        limit="20"
+       extratables="${extratables}"
+      />
+      <RSSChannel
+        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}"
+        channelfilename="${basefilename}-features-content.rss"
+        channeltitle="${config['Mir.Name']} ${basefilename} features"
+        limit="20"
+        generator="RSS-full.template"
+       extratables="${extratables}"
+      />
+    </definition>
+  </nodedefinition>
+
  
   <producer name="articles">
     <verbs>
       <verb name="changed" default="1">
-        <Define key="verbcondition" value=" and (not is_produced)"/>
+        <Define key="verbcondition" value="(not is_produced)"/>
         <Set key="limit" value="10"/>
       </verb>
       <verb name="all">
       </verb>
     </verbs>
     <body>
-      <Enumerate key="article" table="content" selection="is_published='t' ${verbcondition}"
-                  limit="limit" order="webdb_create desc, date desc">
-           <Language>
+      <Enumerate key="article" table="content" selection="${verbcondition}"
+                  limit="limit" order="webdb_create desc">
+        <Enumerate 
+            key="media" table="image" 
+            selection="exists (select * from content_x_media where media_id=images.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                           where comment_id = comment.id and media_id=images.id and comment.to_media=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="video" 
+            selection="exists (select * from content_x_media where media_id=video.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                           where comment_id = comment.id and media_id=video.id and comment.to_media=${article.id})"
+            order="id desc">
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="audio" 
+            selection="exists (select * from content_x_media where media_id=audio.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                                       where comment_id = comment.id and media_id=audio.id and comment.to_media=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+        <Enumerate 
+            key="media" table="otherMedia" 
+            selection="exists (select * from content_x_media where media_id=other_media.id and content_id=${article.id})
+               or      exists (select * from comment_x_media, comment
+                                       where comment_id = comment.id and media_id=other_media.id and comment.to_media=${article.id})"
+            order="id desc">
+            
+           <GenerateMedia key="media" />
+        </Enumerate>
+
+        <If condition="article.is_published == '1'">
+          <then>
+            <Language>
               <Generate 
-                  generator="/article.template" 
-                  destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.shtml"/>
-             <Generate 
-                  generator="/emailThisArticle.template" 
-                  destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.txt"/>
-             <PDFPreFormat 
-                 key="article" 
-                 numLinesBetweenImages="3" 
-                 charWidthCM="0.19" 
-                 pixelWidthCM="0.035"
-                 contentAreaWidthCM="16" 
-                 lineHeightCM="0.5" />
-             <Generate 
-                  generator="/printablecontent.template" 
-                  destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.fo"
-                 parameters="UTF-8" />
-             <PDFGenerate
-                  generator="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.fo"
-                 destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.pdf"
-                 stylesheet="${config[&quot;Producer.HTML2FOStyleSheet&quot;]}" />
-            </Language>
-            <MarkContent key="article"/>            
-           <IndexContent key="article" pathToIndex="/tmp/index"/>
+                generator="/article.template" 
+                destination="${config.storageRoot}/${pathprefix}/${article.date.formatted.yyyy}/${article.date.formatted.MM}/${article.id}.shtml"/>
+             </Language>
+            <Generate 
+                generator="/languagebar.template" 
+                destination="${config.storageRoot}/languagebar/${article.to_original.date.formatted.yyyy}/${article.to_original.date.formatted.MM}/${article.to_original.id}.shtml"/>  
+             <IndexContent key="article" pathToIndex="${config['IndexPath']}"/>
+          </then>
+          <else>
+            <UnIndexContent key="article" pathToIndex="${config['IndexPath']}"/>
+          </else>
+        </If>
+        <MarkContent key="article"/>            
       </Enumerate>
     </body>
   </producer>  
 
-<!--  <producer name="index-articles">
-    <verbs>
-      <verb name="changed" default="1">
-        <Define key="verbcondition" value=" and (not is_produced)"/>
-        <Set key="limit" value="10"/>
-      </verb>
-      <verb name="all">
-        <Define key="verbcondition" value=""/>
-        <Set key="limit" value="-1"/>
-      </verb>
-
-      <verb name="sample">
-        <Define key="verbcondition" value=""/>
-        <Set key="limit" value="10"/>
-      </verb>
-    </verbs>
-    <body>
-      <Enumerate key="article" table="content" selection="is_published='t' ${verbcondition}"
-                  limit="limit" order="webdb_create desc, date desc">
-       <IndexContent key="article" pathToIndex="/tmp/index"/>
-      </Enumerate>
-    </body>
-  </producer>  -->
-
-
   <producer name="navigation">
     <verbs>
       <verb name="generate" default="1" description="generates the left column"/>
       </verb>
       <verb name="all">
         <Set key="pages" value="-1"/>
-      </verb> 
+      </verb>
     </verbs>
     <body>
         <Define key="docSuffix" value=".shtml"/>
         <Define key="storageSuffix" value=".shtml"/>
-        
-        <Batch key="articles" infokey="batch" table="content" 
+
+        <Batch key="articles" infokey="batch" table="content"
                process="pages" batchsize="20" minbatchsize="10"
                selection="is_published='1' and to_article_type = ${articletype.newswire}"
                order="webdb_create asc">
               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
 
-              <Generate 
-                  generator="newswirearchive.template" 
+              <Generate
+                  generator="newswirearchive.template"
                   destination="${storagePrefix}${batch.current.identifier}${storageSuffix}"/>
 
             </Language>
               <Define key="pagePrefix" value="${pathprefix}/newswire/archive"/>
               <Define key="storagePrefix" value="${config[&quot;Producer.StorageRoot&quot;]}/${pagePrefix}"/>
               <Define key="docPrefix" value="${config[&quot;Producer.DocRoot&quot;]}/${pagePrefix}"/>
-              <Generate 
-                  generator="batchnav.template" 
+              <Generate
+                  generator="batchnav.template"
                   destination="${storagePrefix}nav${storageSuffix}"/>
             </Language>
           </batchlist>
         <Define key="docSuffix" value=".shtml"/>
         <Define key="storageSuffix" value=".shtml"/>
         
-        <List key="special" table="content" 
-          selection="is_published='1' and to_article_type = ${articletype.topicspecial} and id in (select content_id from content_x_topic where topic_id = ${topic.id})"
-          order = "webdb_create desc, date desc" limit="1"/>
+        <List key="special" table="content c" 
+          selection="c.is_published='1' and c.to_article_type = ${articletype.topicspecial} and c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+          order = "webdb_create desc" limit="1"
+          extratables="content_x_topic cxt"/>
       
-        <Batch key="articles" infokey="batch" table="content" 
+        <Batch key="articles" infokey="batch" table="content c
                process="pages" batchsize="20" minbatchsize="10"
-               selection="is_published='1' and to_article_type in (${articletype.newswire}, ${articletype.feature}) and id in (select content_id from content_x_topic where topic_id = ${topic.id})"
-               order="webdb_create asc">
+               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}"
+               order="webdb_create asc" extratables="content_x_topic cxt">
           <batches>
             <Language>
               <Define key="pagePrefix" value="${pathprefix}/${topic.filename}/archive"/>
     <body>
       <List key="startspecial" table="content" limit="1"
         selection="is_published=true and to_article_type=${articletype.startspecial}"
-        order="webdb_create desc, date desc"/>
+        order="webdb_create desc"/>
                                         
       <List key="features" table="content" limit="10" 
         selection="is_published=true and to_article_type=${articletype.feature}"
-        order="webdb_create desc, date desc"/>
+        order="webdb_create desc"/>
 
       <List key="newswire" table="content" limit="30"
         selection="is_published=true and to_article_type=${articletype.newswire}"
-        order="webdb_create desc, date desc"/>
+        order="webdb_create desc"/>
         
       <List key="breakingnews" table="breakingNews" limit="10"
          order="webdb_create desc"/>
     </body>
   </producer>  
   
+  
+  <producer name="media">
+    <verbs>
+      <verb name="new" default="1">
+        <Define key="verbcondition" value="(not is_produced)"/>
+        <Set key="limit" value="10"/>
+      </verb>
+      <verb name="all">
+        <Define key="verbcondition" value=""/>
+        <Set key="limit" value="-1"/>
+      </verb>
+
+      <verb name="sample">
+        <Define key="verbcondition" value=""/>
+        <Set key="limit" value="10"/>
+      </verb>
+    </verbs>
+    <body>
+      <Enumerate 
+          key="media" table="image" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+      <Enumerate 
+          key="media" table="video" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+      <Enumerate 
+          key="media" table="audio" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+      <Enumerate 
+          key="media" table="otherMedia" 
+          selection="${verbcondition}"
+          limit="limit" 
+          order="webdb_create desc">
+          
+         <GenerateMedia key="media" />
+      </Enumerate>
+    </body>
+  </producer>  
+
+  <producer name="syndication">
+    <verbs>
+      <verb name="generate" />
+    </verbs>
+    <body>
+      <!-- the main features and newswire -->
+      <RSSChannelBundle />
+      
+      <!-- the topic features and newswires -->
+      <Enumerate key="topic" table="topic">
+        <RSSChannelBundle
+          basefilename="${topic.filename}"
+         selection="c.id=cxt.content_id and cxt.topic_id = ${topic.id}"
+          extratables="content_x_topic cxt"
+        />
+      </Enumerate>
+      
+      
+
+    </body>
+
+  </producer>
+
+  <producer name="radicalendar">
+    <verbs>
+      <verb name="pull" />
+    </verbs>
+    <body>
+      <!-- groupname you will see as the value of "group" in the url for your radicalendar page, -->
+      <!--      gmtoffset is in minutes                                                                 -->
+      <Radicalendar key="calendar" groupname="_imc" gmtoffset="60"  />
+      <Generate 
+        generator="/radicalendar.template" 
+        destination="${config.storageRoot}/calendarinclude.shtml"/>
+
+
+    </body>
+  </producer>
+
+  
 </producers>