<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.7.6(BH)" -->
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Documentation</title>
        <description></description>
        <link>http://www.midgard-project.org/documentation/</link>
        <lastBuildDate>Sat, 04 Feb 2012 09:33:18 +0000</lastBuildDate>
        <generator>FeedCreator 1.7.6(BH)</generator>
        <item>
            <title>MidgardAttachment</title>
            <link>http://www.midgard-project.org/documentation/reference-attachment/</link>
            <description>&lt;p&gt;&lt;strong&gt;Attachments&lt;/strong&gt;, also known as blobs, can be used to administer and serve out &lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-attachments/&quot; class=&quot;wikipage &quot; title=&quot;File Attachments in Midgard&quot;&gt;arbitrary data&lt;/a&gt; with Midgard. This will typically be used for images, sounds, flash movies, etc. and for files available for download.&lt;/p&gt;

&lt;p&gt;Attachments can be connected to any kind of resource, and attachments to page records will be served out directly based on their name.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-attachments/&quot; class=&quot;wikipage &quot; title=&quot;File Attachments in Midgard&quot;&gt;File Attachments in Midgard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-attachment-object/&quot; class=&quot;wikipage &quot; title=&quot;Attachment Object Definition&quot;&gt;Attachment Object Definition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-attachment-record/&quot; class=&quot;wikipage &quot; title=&quot;Attachment Record Definition&quot;&gt;Attachment Record Definition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Attachment methods and functions&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-oop-methods-createattachment/&quot; class=&quot;wikipage &quot; title=&quot;$object-&gt;createattachment&quot;&gt;$object-&gt;createattachment&lt;/a&gt; - Create an attachment record&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-oop-methods-deleteattachment/&quot; class=&quot;wikipage &quot; title=&quot;$object-&gt;deleteattachment&quot;&gt;$object-&gt;deleteattachment&lt;/a&gt; - Delete an attachment record&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-oop-methods-getattachment/&quot; class=&quot;wikipage &quot; title=&quot;$object-&gt;getattachment&quot;&gt;$object-&gt;getattachment&lt;/a&gt; - Instantinate an attachment object&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-oop-methods-listattachments/&quot; class=&quot;wikipage &quot; title=&quot;$object-&gt;listattachments&quot;&gt;$object-&gt;listattachments&lt;/a&gt; - List object's attachments&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-oop-methods-updateattachment/&quot; class=&quot;wikipage &quot; title=&quot;$object-&gt;updateattachment&quot;&gt;$object-&gt;updateattachment&lt;/a&gt; - Update an attachment record&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-oop-methods-openattachment/&quot; class=&quot;wikipage &quot; title=&quot;$object-&gt;openattachment&quot;&gt;$object-&gt;openattachment&lt;/a&gt; - Open file handle to the attachment&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference-oop-methods-serveattachment/&quot; class=&quot;wikipage &quot; title=&quot;$object-&gt;serveattachment&quot;&gt;$object-&gt;serveattachment&lt;/a&gt; - Serve attachment contents&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_stat_attachment&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Deprecated attachment functions&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_delete_attachment&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_get_attachment&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_update_attachment&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_open_attachment&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_serve_attachment&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
            <author>Michel Gaudry</author>
            <pubDate>Fri, 27 May 2011 12:52:56 +0000</pubDate>
        </item>
        <item>
            <title>Site building with MidCOM</title>
            <link>http://www.midgard-project.org/documentation/howto-midcom/</link>
            <description>&lt;p&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM&quot;&gt;MidCOM&lt;/a&gt; is the default way to build websites with Midgard CMS. Here is a collection of tutorials on how to make functional and usable sites with the framework.&lt;/p&gt;

&lt;p&gt;The basic idea with MidCOM is that the site is built out of a set of existing site features, or &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-components/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM components&quot;&gt;components&lt;/a&gt;. Each folder on the site is assigned a component that manages it, making some folders &lt;a href=&quot;http://www.midgard-project.org/documentation/net-nemein-calendar/&quot; class=&quot;wikipage &quot; title=&quot;net.nemein.calendar&quot;&gt;event calendars&lt;/a&gt;, &lt;a href=&quot;http://www.midgard-project.org/documentation/de-linkm-newsticker/&quot; class=&quot;wikipage &quot; title=&quot;de.linkm.newsticker&quot;&gt;news listings&lt;/a&gt; or something else.&lt;/p&gt;

&lt;h2&gt;Layout and navigation&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/getting-started-create-style/&quot; class=&quot;wikipage &quot; title=&quot;Create a Style&quot;&gt;Style creation&lt;/a&gt; - Creating custom layout templates&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/howto-midcom-styles/&quot; class=&quot;wikipage &quot; title=&quot;Making and modifying styles&quot;&gt;Making and modifying styles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-method-dynamic_load/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM method dynamic_load&quot;&gt;Dynamic loading&lt;/a&gt; - Including content from different site areas into a page&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-template-style-elements/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM template style elements&quot;&gt;MidCOM template style elements&lt;/a&gt; - the default style elements provided&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/howto-midcom-menucreation/&quot; class=&quot;wikipage redirect&quot; title=&quot;Designing your own MidCOM menus&quot;&gt;Custom navigation&lt;/a&gt; - Using the &lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-midcom-specs-subsystems-nap/&quot; class=&quot;wikipage &quot; title=&quot;Navigation Access Point&quot;&gt;NAP system&lt;/a&gt; to build custom site navigation&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/styling-midcom-error-pages/&quot; class=&quot;wikipage &quot; title=&quot;Styling MidCOM Error Pages&quot;&gt;Error pages&lt;/a&gt; - Customizing error pages&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/howto-midcom-get_client/&quot; class=&quot;wikipage &quot; title=&quot;Browser detection with midcom&quot;&gt;Browser detection with midcom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/howto-midcom-css/&quot; class=&quot;wikipage &quot; title=&quot;The default Midcom CSS elements&quot;&gt;The default Midcom CSS elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/modifying-midcom-component-output/&quot; class=&quot;wikipage &quot; title=&quot;Modifying MidCOM component output&quot;&gt;Modifying MidCOM component output&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Content and structure&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/building-multilingual-sites-with-midcom-template/&quot; class=&quot;wikipage &quot; title=&quot;Building Multilingual sites with MidCOM template&quot;&gt;Multilingual sites&lt;/a&gt; - Making your site support multiple languages&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-component-configuration/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM component configuration&quot;&gt;Component configuration&lt;/a&gt; - Tweaking components of your website&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/using-midcom-helper-datamanager-schemas/&quot; class=&quot;wikipage &quot; title=&quot;Using midcom.helper.datamanager schemas&quot;&gt;Content schemas&lt;/a&gt; - Customizing the fields of your content editors&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/customizing-tinymce-editor/&quot; class=&quot;wikipage &quot; title=&quot;Customizing TinyMCE editor&quot;&gt;TinyMCE editor&lt;/a&gt; - Customizing the buttons of TinyMCE editor window&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/using-aegir-image-pop-up-with-midcom/&quot; class=&quot;wikipage &quot; title=&quot;Using Aegir image pop-up with MidCOM&quot;&gt;Using Aegir image pop-up with MidCOM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/how_to_set_up_site_search_using_solr/&quot; class=&quot;wikipage default&quot; title=&quot;How to set up site search using Solr&quot;&gt;How to set up site search using Solr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Permissions and workflow&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-users/&quot; class=&quot;wikipage &quot; title=&quot;Permissions in Midgard&quot;&gt;Permissions in Midgard&lt;/a&gt; - Groups and ownerships&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-helper-metadata-approvals/&quot; class=&quot;wikipage &quot; title=&quot;midcom.helper.metadata approvals&quot;&gt;Approvals and scheduling&lt;/a&gt; - Adding workflow to your site&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/getting-started-create-groups/&quot; class=&quot;wikipage &quot; title=&quot;Create Groups and People&quot;&gt;Creating groups and users&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may also find a lot of interesting information within &lt;a href=&quot;http://www.nathan-syntronics.de/midgard/midcom/&quot;&gt;Nathan Syntronics MidCOM pages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition to using the existing components, you can also &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-component-development/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM component development&quot;&gt;develop your own&lt;/a&gt;.&lt;/p&gt;
</description>
            <author>popeyevn popeyevn</author>
            <pubDate>Mon, 02 May 2011 04:18:24 +0000</pubDate>
        </item>
        <item>
            <title>MidCOM template</title>
            <link>http://www.midgard-project.org/documentation/midcom-template/</link>
            <description>&lt;p&gt;&lt;strong&gt;MidCOM template&lt;/strong&gt; is a &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;Midgard page template&lt;/span&gt; shipping with &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM&quot;&gt;MidCOM&lt;/a&gt;. It is used for loading, configuring and running the MidCOM environment in a Midgard-powered &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;website&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;When you create a site using the &lt;a href=&quot;http://www.midgard-project.org/documentation/midgard-admin-sitewizard/&quot; class=&quot;wikipage &quot; title=&quot;midgard.admin.sitewizard&quot;&gt;Midgard Site Wizard&lt;/a&gt;, it will be automatically set up using the MidCOM template.&lt;/p&gt;

&lt;p&gt;The MidCOM template is provided as a &lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-repligard/&quot; class=&quot;wikipage &quot; title=&quot;Repligard&quot;&gt;Repligard&lt;/a&gt; XML package named &lt;code&gt;midcom-template.xml&lt;/code&gt; that can be &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-additional-packages/&quot; class=&quot;wikipage &quot; title=&quot;Installing Additional Packages&quot;&gt;installed via datagard&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Documentation:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/howto-midcom/&quot; class=&quot;wikipage &quot; title=&quot;Site building with MidCOM&quot;&gt;Site building with MidCOM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-template-style-elements/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM template style elements&quot;&gt;MidCOM template style elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/building-multilingual-sites-with-midcom-template/&quot; class=&quot;wikipage &quot; title=&quot;Building Multilingual sites with MidCOM template&quot;&gt;Building Multilingual sites with MidCOM template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/using-ssl-with-midcom-template/&quot; class=&quot;wikipage &quot; title=&quot;Using SSL with MidCOM template&quot;&gt;Using SSL with MidCOM template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/using-midcom-template-to-load-schema-variables/&quot; class=&quot;wikipage &quot; title=&quot;Using MidCOM template to load schema variables&quot;&gt;Using MidCOM template to load schema variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-template-global-variables/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM template global variables&quot;&gt;MidCOM template global variables&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
            <author>popeyevn popeyevn</author>
            <pubDate>Mon, 02 May 2011 04:17:00 +0000</pubDate>
        </item>
        <item>
            <title>midcom.services.rcs</title>
            <link>http://www.midgard-project.org/documentation/midcom-services-rcs/</link>
            <description>&lt;h1&gt;MidCOM Revision Control Service (RCS)&lt;/h1&gt;

&lt;div class=&quot;note&quot;&gt;
This applies to MidCOM version 2.6 and upwards.
&lt;/div&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM&quot;&gt;MidCOM&lt;/a&gt; &lt;abbr title=&quot;Revision Control Service&quot;&gt;RCS&lt;/abbr&gt; is backwards compatible with the older revision control service found in &lt;a href=&quot;http://www.midgard-project.org/documentation/aegir/&quot; class=&quot;wikipage &quot; title=&quot;Aegir&quot;&gt;Aegir&lt;/a&gt; and also supported by &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-helper-datamanager/&quot; class=&quot;wikipage default&quot; title=&quot;midcom.helper.datamanager&quot;&gt;MidCOM Datamanager&lt;/a&gt;, however to user the new revision control service, you will have to enable it spesificly in your MidCOM configuration file (usually found in &lt;code&gt;/etc/midgard/midcom.conf&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;The simpliest way to do this is to use the &lt;code&gt;autoconf.php&lt;/code&gt; file found in the MidCOM support directory. For PEAR installed versions of MidCOM look in the &lt;code&gt;/usr/share/php/midcom/support/midcom/support/&lt;/code&gt; directory for this file.&lt;/p&gt;

&lt;p&gt;Just run &lt;code&gt;php autoconf.php&lt;/code&gt; and it will generate a suggested configuration for you.&lt;/p&gt;

&lt;h2&gt;A note on the &lt;code&gt;/var/lib/midgard/rcs&lt;/code&gt; directory&lt;/h2&gt;

&lt;p&gt;It seems that &lt;a href=&quot;http://www.midgard-project.org/documentation/datagard/&quot; class=&quot;wikipage &quot; title=&quot;Datagard&quot;&gt;Datagard&lt;/a&gt; creates this directory for you, &lt;em&gt;but with the wrong file permissions&lt;/em&gt;. Therefore you should check this and make sure that the Apache user can write to the directory.&lt;/p&gt;

&lt;p&gt;Also, if you are running several Midgard databases you should use different root directories for each database.&lt;/p&gt;

&lt;h2&gt;Configuration options&lt;/h2&gt;

&lt;p&gt;There are three configuration options that may be used with the RCS service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;midcom_services_rcs_bin_dir&lt;/code&gt;: the prefix for the RCS utilities (usually &lt;code&gt;/usr/bin&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;midcom_services_rcs_root&lt;/code&gt;: the directory where the RCS files get placed. Usually &lt;code&gt;/var/lib/midgard/rcs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;midcom_services_rcs_use&lt;/code&gt;: If set to &lt;code&gt;true&lt;/code&gt;, MidCOM will fail
hard if the RCS service is not operational. It is useful to
ensure that the service is working.&lt;/li&gt;
&lt;/ul&gt;
</description>
            <author>Alexander Schuster</author>
            <pubDate>Mon, 18 Apr 2011 12:56:15 +0000</pubDate>
        </item>
        <item>
            <title>Mac OS X</title>
            <link>http://www.midgard-project.org/documentation/installation-distros-mac-os-x/</link>
            <description>&lt;h2&gt;Midgard for MacPorts&lt;/h2&gt;

&lt;p&gt;Midgard is being maintained as part of the &lt;a href=&quot;http://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt; collection. MacPorts is a &lt;a href=&quot;http://www.apple.com/macosx/&quot;&gt;Mac&lt;/a&gt; version of the BSD Ports collection that enables easy installation of preconfigured source packages. More information about MacPorts is available in &lt;a href=&quot;http://trac.macports.org/projects/macports/wiki&quot;&gt;their wiki&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To install Midgard with MacPorts you need the &lt;a href=&quot;http://developer.apple.com/tools/xcode/index.html&quot;&gt;Apple Xcode Tools&lt;/a&gt;. Once you have both MacPorts and Xcode installed, open Terminal and run:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo port sync
$ sudo port install apache2
$ sudo port install mysql5 +server
$ sudo port install php5 +apache2 +pear +mysql5
$ sudo port install midgard-data
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then you need to initialize and start the MySQL and Apache processes:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo launchctl load -w /Library/LaunchDaemons/org.darwinports.mysql5.plist
$ sudo launchctl load -w /Library/LaunchDaemons/org.darwinports.apache2.plist
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After that you should be able to set up the &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-database/&quot; class=&quot;wikipage &quot; title=&quot;Setting Up a Midgard Database&quot;&gt;database&lt;/a&gt; and &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-vhost/&quot; class=&quot;wikipage &quot; title=&quot;Creating a New Virtual Host&quot;&gt;virtual host&lt;/a&gt; normally.&lt;/p&gt;

&lt;p&gt;As these instructions are not very complete, feel free to ask &lt;a href=&quot;/community/whoswho/jwa.html&quot;&gt;Jyrki Wahlstedt&lt;/a&gt; (jwa (at) macports (dot) org).&lt;/p&gt;
</description>
            <author>Anna Wasinska</author>
            <pubDate>Thu, 03 Mar 2011 19:29:55 +0000</pubDate>
        </item>
        <item>
            <title>Formatting engine</title>
            <link>http://www.midgard-project.org/documentation/concepts-formatting/</link>
            <description>&lt;h2&gt;Inline variable display&lt;/h2&gt;

&lt;p&gt;Midgard adds a new language construct to PHP which allows you to include the value of a variable in HTML without using a &lt;code&gt;&amp;lt;? echo $var; ?&amp;gt;&lt;/code&gt; construct.&lt;/p&gt;

&lt;p&gt;You can now simply use &lt;code&gt;&amp;amp;(variablename);&lt;/code&gt; directly in HTML. Note the absence of the &lt;code&gt;$&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Object variables that would normally be accessed in PHP code as &lt;code&gt;$object-&amp;gt;field&lt;/code&gt; can be inserted as &lt;code&gt;&amp;amp;(object.field);&lt;/code&gt;. Similarly, fields of an associative array can be inserted with &lt;code&gt;&amp;amp;(array['key']);&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Standard formatting modifiers&lt;/h2&gt;

&lt;p&gt;The way the value is formatted can be specified by adding a modifier after the variable name: &lt;code&gt;&amp;amp;(variable:modifier);&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In PHP code the modifiers can be executed using the &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_format&lt;/span&gt; function.&lt;/p&gt;

&lt;p&gt;The standard modifiers are:&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;h&lt;/code&gt; - Encode content as HTML&lt;/h3&gt;

&lt;p&gt;Add value as HTML. Escapes &lt;code&gt;&amp;amp;&lt;/code&gt; to &lt;code&gt;&amp;amp;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt; to &lt;code&gt;&amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;&lt;/code&gt; to &lt;code&gt;&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Everything between &lt;code&gt;[&amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;]&lt;/code&gt; is added verbatim with the &lt;code&gt;[&amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;]&lt;/code&gt; dropped. PHP code embedded in such a section is executed.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;H&lt;/code&gt; - Encode content as HTML but keep entities verbatim&lt;/h3&gt;

&lt;p&gt;Add value as HTML. Everything is included verbatim.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;f&lt;/code&gt; - Format plain text to HTML&lt;/h3&gt;

&lt;p&gt;Add value as formatted text, the plain text input is formatted as HTML on the fly.&lt;/p&gt;

&lt;p&gt;Lines starting with `` will be transformed to unnumbered lists.&lt;/p&gt;

&lt;p&gt;Paragraphs delimited by an empty line will be surrounded by &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Everything between &lt;code&gt;[&amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;]&lt;/code&gt; is added verbatim with the &lt;code&gt;[&amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;]&lt;/code&gt; dropped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; PHP code embedded in such a section is executed. If you want to enable safe content input from unsecure users, use the &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;Markdown datatype&lt;/span&gt; instead.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;F&lt;/code&gt; - Format plain text to HTML with headlines&lt;/h3&gt;

&lt;p&gt;Add value as formatted text, the plain text input is formatted as HTML on the fly.&lt;/p&gt;

&lt;p&gt;Lines starting with `` will be transformed to unnumbered lists.&lt;/p&gt;

&lt;p&gt;Paragraphs delimited by an empty line will be surrounded by &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Lines after an empty line with less than 10 words that do not end in a period are formatted as &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Everything between &lt;code&gt;[&amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;]&lt;/code&gt; is added verbatim with the &lt;code&gt;[&amp;lt;&lt;/code&gt; and &lt;code&gt;&amp;gt;]&lt;/code&gt; dropped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; PHP code embedded in such a section is executed. If you want to enable safe content input from unsecure users, use the &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;Markdown datatype&lt;/span&gt; instead.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;p&lt;/code&gt; - Execute content as PHP code&lt;/h3&gt;

&lt;p&gt;Execute a value as PHP. Executes the value of the variable.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;u&lt;/code&gt; - URL encode content&lt;/h3&gt;

&lt;p&gt;Add the value urlencoded. Replaces non-safe URI characters with their &lt;code&gt;%code&lt;/code&gt; equivalents.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;s&lt;/code&gt; - Show content as-is&lt;/h3&gt;

&lt;p&gt;Show variable unmodified.&lt;/p&gt;

&lt;h2&gt;Custom formatters&lt;/h2&gt;

&lt;p&gt;You can also add custom formatters to your Midgard application. This is a powerful way of extending Midgards formatting engine.&lt;/p&gt;

&lt;p&gt;Basically you write a function which gets the text-to-be-formatted as an argument and echos dumps the formatted output to stdout.&lt;/p&gt;

&lt;p&gt;You then register that function using to Midgard's formatting engine using the &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;mgd_register_filter&lt;/span&gt; function.&lt;/p&gt;

&lt;h3&gt;Example:&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;function midgardize_my_content($text) 
{  
    // Replace all instances of &quot;CMS&quot; in content with &quot;Midgard&quot;
    $formatted_text = str_replace('CMS', 'Midgard', $text);
    echo $formatted_text;  
}  

mgd_register_filter('mgd', 'midgardize_my_content');

// Then, in some style element you can do this: &amp;amp;(my_variable:xmgd);
&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&quot;note&quot;&gt;
The custom formatters are prefixed with `x` before the registered name (in this case `mgd`)
&lt;/div&gt;
</description>
            <author>Andreas Flack</author>
            <pubDate>Sat, 22 Jan 2011 19:38:18 +0000</pubDate>
        </item>
        <item>
            <title>org.routamc.photostream</title>
            <link>http://www.midgard-project.org/documentation/org-routamc-photostream/</link>
            <description>&lt;p&gt;org.routamc.hotostream is a component for uploading, sorting, tagging and managing your pictures.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Uploading pictures:
although not visible at first hand, you can upload an archive with pictures (gz, zip). You can assign a title to your pictures which is assigned to every picture in an archive&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tagging pictures:
assigning tags to your pictures is the best way to sort and filter your pictures in galleries later, when uploading an archive all pictures get assigned the same tags (tags should be separated by a whitespace, not komma!)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
            <author>Alexander Schuster</author>
            <pubDate>Wed, 22 Sep 2010 14:30:44 +0000</pubDate>
        </item>
        <item>
            <title>openSUSE and SLE</title>
            <link>http://www.midgard-project.org/documentation/installation-distros-suse/</link>
            <description>&lt;p&gt;OpenSUSE and SLES/SLED packages are available (among other distributions) on &lt;a href=&quot;http://download.opensuse.org/repositories/home:/midgardproject:/ragnaroek/&quot;&gt;openSUSE Build Service&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Please note that the default rpm installation of Midgard requires that you have enabled &lt;a href=&quot;http://download.opensuse.org/repositories/server:/php:/extensions/&quot;&gt;server:php:extensions&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After you've installed the rpm packages, proceed by running the &lt;a href=&quot;http://www.midgard-project.org/documentation/datagard/&quot; class=&quot;wikipage &quot; title=&quot;Datagard&quot;&gt;Datagard&lt;/a&gt; install action which sets up Midgard CMS for you:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;datagard -a install
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;More information about Midgard installation in general is available in the &lt;a href=&quot;http://www.midgard-project.org/documentation/installation/&quot; class=&quot;wikipage &quot; title=&quot;Midgard Installation Manual&quot;&gt;Midgard Installation Manual&lt;/a&gt;.&lt;/p&gt;
</description>
            <author>Jarkko Ala-Louvesniemi</author>
            <pubDate>Mon, 12 Jul 2010 11:48:57 +0000</pubDate>
        </item>
        <item>
            <title>MidgardQueryBuilder Complex Constraints</title>
            <link>http://www.midgard-project.org/documentation/midgardquerybuilder-complex-constraints/</link>
            <description>&lt;p&gt;A special dot &lt;strong&gt;'.'&lt;/strong&gt;  separator may be used for &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;add_constraint&lt;/span&gt; and &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;add_order&lt;/span&gt; &lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder&quot;&gt;MidgardQueryBuilder&lt;/a&gt; methods. The main purpose of the dot separator is to query metadata and referenced types defined as &lt;a href=&quot;http://www.midgard-project.org/documentation/mgdschema-file-properties/&quot; class=&quot;wikipage &quot; title=&quot;MgdSchema file properties&quot;&gt;properties' link&lt;/a&gt; in the &lt;a href=&quot;http://www.midgard-project.org/documentation/mgdschema/&quot; class=&quot;wikipage &quot; title=&quot;MgdSchema&quot;&gt;MgdSchema&lt;/a&gt; files.&lt;/p&gt;

&lt;p&gt;The basic syntax for constraints and dot separator is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;propertyA.propertyB&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;propertyA is a member of a class which was initialized with Midgard Query Builder.
propertyB is a member of a class which was defined as &quot;linked&quot; one in Midgard schema file.&lt;/p&gt;

&lt;p&gt;There are few exceptions ( reserved words ) for propertyA name :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;metadata&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;add_constraint(&quot;metadata.created&quot;, &quot;&gt;&quot; , &quot;2006-01-27 00:00:00&quot;);&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;parameter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;add_constraint(&quot;parameter.name&quot;, &quot;=&quot; , &quot;component&quot;);&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;attachment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;add_constraint(&quot;attachment.mimetype&quot;, &quot;LIKE&quot; , &quot;jpg&quot;);&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Metadata query example&lt;/h3&gt;

&lt;p&gt;An example for $article-&gt;name and $article-&gt;metadata-&gt;created constraints:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?php
$qb = new MidgardQueryBuilder(&quot;midgard_article&quot;);

$qb-&amp;gt;add_constraint(&quot;metadata.created&quot;, &quot;&amp;gt;&quot; , &quot;2006-01-27 00:00:00&quot;);
$qb-&amp;gt;add_constraint(&quot;name&quot;, &quot;=&quot;, &quot;index&quot;);

$returned_array = $qb-&amp;gt;execute();

?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Only those objects will be queried which name is 'index' and were created after January 27th, 2006.&lt;/p&gt;

&lt;h3&gt;Referenced type query example&lt;/h3&gt;

&lt;p&gt;Schema type example for referenced types.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;type name=&quot;midgard_article&quot; table=&quot;article&quot;&amp;gt;
        &amp;lt;property name=&quot;creator&quot; link=&quot;midgard_person:id&quot;/&amp;gt;
&amp;lt;/type&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;PHP example&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?php
$qb = new MidgardQueryBuilder(&quot;midgard_article&quot;);

$qb-&amp;gt;add_constraint(&quot;creator.username&quot;, &quot;LIKE&quot; , &quot;%john%&quot;);
$qb-&amp;gt;add_constraint(&quot;name&quot;, &quot;=&quot;, &quot;index&quot;);

$returned_array = $qb-&amp;gt;execute();

?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Only those objects will be queried which name is 'index' and referenced object's username property contains 'john'.&lt;/p&gt;

&lt;div class=&quot;note&quot;&gt;
midgard\_article's creator property value must be equal to midgard\_person's id property's value and midgard_person's username property value must contain 'john'
&lt;/div&gt;

&lt;h3&gt;Mixed complex query example&lt;/h3&gt;

&lt;p&gt;Schema definition:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; &amp;lt;type name=&quot;midgard_member&quot; table=&quot;member&quot; parentfield=&quot;&quot;&amp;gt;
    &amp;lt;property name=&quot;id&quot;       type=&quot;integer&quot; primaryfield=&quot;id&quot;/&amp;gt;
    &amp;lt;property name=&quot;extra&quot;    type=&quot;string&quot;/&amp;gt;
    &amp;lt;property name=&quot;uid&quot;      type=&quot;integer&quot; link=&quot;midgard_person:id&quot;/&amp;gt;
    &amp;lt;property name=&quot;gid&quot;      type=&quot;integer&quot; link=&quot;midgard_group:id&quot; /&amp;gt;
 &amp;lt;/type&amp;gt;

&amp;lt;?php
$qb = new midgardquerybuilder(&quot;midgard_member&quot;);
$qb-&amp;gt;add_constraint('gid.name', '=', &quot;Users group&quot;);
$qb-&amp;gt;add_constraint('metadata.created', '&amp;gt;', &quot;2006-02-27 18:45:00&quot;);
$qb-&amp;gt;add_order('uid.firstname');

$returned_array = $qb-&amp;gt;execute();
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Such query returns objects for those persons  who are members of &quot;User group&quot; group, and were created after 27th February, 2006. 
Returned array is sorted by firstname of person record.&lt;/p&gt;

&lt;h3&gt;Parameter example&lt;/h3&gt;

&lt;p&gt;PHP example&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?php
$qb = new midgard_query_builder('midgard_article');

$qb-&amp;gt;add_constraint('parameter.domain', '=', 'domain');
$qb-&amp;gt;add_constraint('parameter.name', '=', 'name');
$qb-&amp;gt;add_constraint('parameter.value', '=', 'value');

$result = $qb-&amp;gt;execute();
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This code will search for the parameter domain.name with the given value and will return every article with that parameter and value.&lt;/p&gt;

&lt;h2&gt;See also&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder_objects_and_parameters/&quot; class=&quot;wikipage default&quot; title=&quot;MidgardQueryBuilder Objects and Parameters&quot;&gt;MidgardQueryBuilder Objects and Parameters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
            <author>Rex van Dorp</author>
            <pubDate>Tue, 04 May 2010 11:52:22 +0000</pubDate>
        </item>
        <item>
            <title>MidgardQueryBuilder</title>
            <link>http://www.midgard-project.org/documentation/midgardquerybuilder/</link>
            <description>&lt;p&gt;Midgard Query Builder is a special &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;Midgard PHP&lt;/span&gt; class which enables developers to optimize SQL queries used in a &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM&quot;&gt;Midgard application&lt;/a&gt;. Query Builder (QB) may be used only  with &lt;a href=&quot;http://www.midgard-project.org/documentation/mgdschema/&quot; class=&quot;wikipage &quot; title=&quot;MgdSchema&quot;&gt;MgdSchema&lt;/a&gt; registered types.&lt;/p&gt;

&lt;h2&gt;Creating new Query Builder object instance&lt;/h2&gt;

&lt;p&gt;Query Builder is instantiated by giving it the name of the MgdSchema type being queried.&lt;/p&gt;

&lt;p&gt;__object midgard_query_builder(string 'MgdSchema class');__&lt;/p&gt;

&lt;h2&gt;Midgard Query Builder methods&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-add_constraint/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method add_constraint&quot;&gt;add_constraint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-add_placeholder_constraint/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method add_placeholder_constraint&quot;&gt;add_placeholder_constraint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-add_order/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method add_order&quot;&gt;add_order&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-begin_group/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method begin_group&quot;&gt;begin_group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-end_group/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method end_group&quot;&gt;end_group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-execute/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method execute&quot;&gt;execute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-set_limit/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method set_limit&quot;&gt;set_limit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-set_offset/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method set_offset&quot;&gt;set_offset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-set_lang/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method set_lang&quot;&gt;set_lang&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-method-count/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder method count&quot;&gt;count&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Usage example:&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?php
// Instantiate Query Builder for an Article object
$qb = new midgard_query_builder('midgard_article');

// List articles only in topic 123
$qb-&amp;gt;add_constraint('topic', '=', 123);

// Run the query
$articles = $qb-&amp;gt;execute();

// Show the articles
foreach ($articles as $article)
{
    echo &quot;&amp;lt;h2&amp;gt;{$articles-&amp;gt;title}&amp;lt;/h2&amp;gt;\n&quot;;
}
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;See also&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder_objects_and_parameters/&quot; class=&quot;wikipage default&quot; title=&quot;MidgardQueryBuilder Objects and Parameters&quot;&gt;MidgardQueryBuilder Objects and Parameters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder-complex-constraints/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder Complex Constraints&quot;&gt;MidgardQueryBuilder Complex Constraints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgard-php---how-to-handle-datetimes/&quot; class=&quot;wikipage default&quot; title=&quot;Midgard PHP - how to handle datetimes&quot;&gt;Midgard PHP - how to handle datetimes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
            <author>Rex van Dorp</author>
            <pubDate>Tue, 04 May 2010 11:40:00 +0000</pubDate>
        </item>
        <item>
            <title>MidgardQueryBuilder Objects and Parameters</title>
            <link>http://www.midgard-project.org/documentation/midgardquerybuilder_objects_and_parameters/</link>
            <description>&lt;p&gt;midgard_query_builder class is very usefull to fetch object's data from database, but it's a bit limited if you need to query object and its parameters.&lt;/p&gt;

&lt;p&gt;Basically, during your development work, you have two cases to fetch object specifing parameters constraints. The first case is the simplest, when you need to  query object and only one parameter's constraint should be used. The second is much more difficult, when you need to query object and more than one parameter's constraint should be defined. In this case workaround is needed.&lt;/p&gt;

&lt;p&gt;Those two examples should explain how to write code for both cases:&lt;/p&gt;

&lt;h1&gt;Query object with one parameter.&lt;/h1&gt;

&lt;pre&gt;&lt;code&gt;$qb = new midgard_query_builder(&quot;midgard_article&quot;);
$qb-&amp;gt;add_constraint(&quot;name&quot;, &quot;=&quot;, &quot;news&quot;);
$qb-&amp;gt;add_constraint(&quot;parameter.value&quot;, &quot;=&quot;, &quot;cool&quot;); 
$ret = $qb-&amp;gt;execute();

$my_object =&amp;amp; $ret0
&lt;/code&gt;&lt;/pre&gt;

&lt;h1&gt;Query object with more than one parameter's constraint.&lt;/h1&gt;

&lt;pre&gt;&lt;code&gt;$qb = new midgard_query_builder(&quot;midgard_parameter&quot;);
$qb-&amp;gt;add_constraint(&quot;domain&quot;, &quot;=&quot;, &quot;midcom&quot;);
$qb-&amp;gt;add_constraint(&quot;name&quot;, &quot;=&quot;, &quot;component&quot;);
$qb-&amp;gt;add_constraint(&quot;value&quot;, &quot;=&quot;, &quot;my_component&quot;);
$ret = $qb-&amp;gt;execute();

$my_object = new midgard_topic($ret0&amp;gt;parentguid);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note that we initialized QB instance for midgard_parameter, not for objec's class we wanted to fetch. This cases requires two queries instead of one, but unfortunatelly midgard_query_builder is not aware ( and can not guess ) if you defined constraint in the same table's scope or another one ( which might be tha same ) for which SQL join should be made.&lt;/p&gt;

&lt;p&gt;In latter example, one object has been instatiated. But of course , you may need less constraints if you need fetch more objects:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$qb = new midgard_query_builder(&quot;midgard_parameter&quot;);
$qb-&amp;gt;add_constraint(&quot;domain&quot;, &quot;=&quot;, &quot;midcom&quot;);
$ret = $qb-&amp;gt;execute();

foreach($ret as $obj) {
    $my_object = new midgard_topic($obj-&amp;gt;parentguid);
    echo &quot;Found {$my_object-&amp;gt;name}&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
</description>
            <author>Rex van Dorp</author>
            <pubDate>Tue, 04 May 2010 11:33:36 +0000</pubDate>
        </item>
        <item>
            <title>midcom.services.indexer</title>
            <link>http://www.midgard-project.org/documentation/midcom-services-indexer/</link>
            <description>&lt;p&gt;&lt;strong&gt;midcom.services.indexer&lt;/strong&gt; is the integrated full-text search system in &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM&quot;&gt;MidCOM&lt;/a&gt;. It utilizes the &lt;a href=&quot;http://lucene.apache.org/&quot;&gt;Apache Lucene&lt;/a&gt; for actual search capabilities.&lt;/p&gt;

&lt;div class=&quot;warning&quot;&gt;
This is very old information, see &lt;a href=&quot;http://www.midgard-project.org/midcom-permalink-b487bad8110511dc980877b09f9f174b174b&quot;&gt;How to set up site search using Solr&lt;/a&gt; instead
&lt;/div&gt;

&lt;h2&gt;Installing MidCOM indexer&lt;/h2&gt;

&lt;p&gt;See the &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-services-indexer-installation/&quot; class=&quot;wikipage &quot; title=&quot;midcom.services.indexer installation&quot;&gt;midcom.services.indexer installation&lt;/a&gt; document.&lt;/p&gt;

&lt;h2&gt;Configuring the MidCOM Indexer Daemon (Quick start guide)&lt;/h2&gt;

&lt;p&gt;The MidCOM index daemon takes an optional filename as an argument during startup. It allows you to control four parameters: IP and port to bind to, log file name and log level. We are using standard Java Property files here, which consist of &lt;code&gt;name = value&lt;/code&gt; pairs.&lt;/p&gt;

&lt;p&gt;So a &lt;code&gt;debug.conf&lt;/code&gt; example config file could look like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;logfile = debug.log
loglevel = FINEST
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;which would be used like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;java -jar indexer.jar debug.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;&lt;code&gt;bind&lt;/code&gt; and &lt;code&gt;port&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;These two parameters control where the daemon binds to. By default &lt;code&gt;bind&lt;/code&gt; is set to &lt;code&gt;127.0.0.1&lt;/code&gt; and &lt;code&gt;port&lt;/code&gt; to &lt;code&gt;2222&lt;/code&gt;, which matches the MidCOM default configuration and is thus fine if you are working in the default installation environment.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;logfile&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;This parameter defaults to &lt;code&gt;stderr&lt;/code&gt; which, naturally, logs to the stderr pipe the daemon launches with. You can set any valid filename here, of course we need write permission.&lt;/p&gt;

&lt;p&gt;Log files are limited to 5 MB in size and are automatically rotated 4 times.&lt;/p&gt;

&lt;h3&gt;&lt;code&gt;loglevel&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;Specifies what to log, we use the log levels defined in the Java package &lt;code&gt;java.util.logging.Level&lt;/code&gt; here, defaulting to &lt;code&gt;WARNING&lt;/code&gt;. Valid log levels, from most terse to most verbose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SEVERE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WARNING&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;INFO&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CONFIG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FINE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FINER&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FINEST&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note, that not all of these log levels are in use yet, so don't wonder if you have no differences when moving between adjecant log levels.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;WARNING&lt;/code&gt; is recommended for day-to-day operation, &lt;code&gt;FINEST&lt;/code&gt; for debugging only. If you want to log each connection attempt, use &lt;code&gt;INFO&lt;/code&gt;.&lt;/p&gt;
</description>
            <author>Arttu Manninen</author>
            <pubDate>Mon, 19 Apr 2010 20:53:28 +0000</pubDate>
        </item>
        <item>
            <title>midcom.services.indexer installation</title>
            <link>http://www.midgard-project.org/documentation/midcom-services-indexer-installation/</link>
            <description>&lt;p&gt;These are instructions for installing and setting up the &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-services-indexer/&quot; class=&quot;wikipage &quot; title=&quot;midcom.services.indexer&quot;&gt;MidCOM full-text search system&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;warning&quot;&gt;
This is very old information, see &lt;a href=&quot;http://www.midgard-project.org/midcom-permalink-b487bad8110511dc980877b09f9f174b174b&quot;&gt;How to set up site search using Solr&lt;/a&gt; instead
&lt;/div&gt;

&lt;h3&gt;Recommended Reading&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/midcom-permalink-3d79ca5390b40723dec859ffc3a8b1e6&quot;&gt;mRFC 9: MidCOM Indexing Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.midgard-project.org/midcom-permalink-4aa26f6e6eb50e25f396ce4b449b4134&quot;&gt;mRFC 14: MidCOM Remote Indexing Service: XML Communication Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Class &lt;a href=&quot;http://www.nehmer.net/~torben/midcom-docs/midcom.services/midcom_services_indexer.html&quot;&gt;midcom_service_indexer&lt;/a&gt; in the &lt;a href=&quot;http://www.nehmer.net/~torben/midcom-docs/&quot;&gt;MidCOM API Documentation&lt;/a&gt;, section midcom.services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;General Structure&lt;/h3&gt;

&lt;p&gt;The Indexer is not directly indetrated into PHP. On one hand, the  performance in a persistently running indexer daemon is (on average) better, than a fully integrated solution. On the other hand, there is just no really usable PHP-level On-Demand Indexer out there anyway (not that I would trust PHP far enough in this respect.&lt;/p&gt;

&lt;p&gt;The structure of the index is further described in the &lt;a href=&quot;http://www.midgard-project.org/midcom-permalink-3d79ca5390b40723dec859ffc3a8b1e6&quot;&gt;mRFC 9&lt;/a&gt;. See there how Documents and Fields interact.&lt;/p&gt;

&lt;p&gt;This document will focus on setting up and using the Indexer.&lt;/p&gt;

&lt;h3&gt;Setting up the Lucene Daemon&lt;/h3&gt;

&lt;p&gt;All required files of the current CVS state are available for Download on the &lt;a href=&quot;https://www.midgard-project.org/development/download/required-indexer-files.html&quot;&gt;required indexer files&lt;/a&gt; page, but if you want an up-to-date build of the system, follow these instructions:&lt;/p&gt;

&lt;h4&gt;Building and Installing the Daemon&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Go to the Lucene Website and download the latest Lucene binary tarball. In it you will find a file named &lt;strong&gt;lucene-$version.jar&lt;/strong&gt;. Rename it to a plain &lt;strong&gt;lucene.jar&lt;/strong&gt;. (Use version 1.4.3 found here http://apache.fi/lucene/java/archive/)&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;external-tools/indexer-backends/lucene&lt;/strong&gt; directory of the current MidCOM CVS. Copy the &lt;strong&gt;lucene.jar&lt;/strong&gt; file into this directory and run make there, it will build a file named &lt;strong&gt;indexer.jar&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Create a directory and copy the files &lt;strong&gt;lucene.jar&lt;/strong&gt;, &lt;strong&gt;indexer.jar&lt;/strong&gt;, &lt;strong&gt;xml-communication-request.dtd&lt;/strong&gt; and &lt;strong&gt;xml-communication-response.dtd&lt;/strong&gt; into it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;Running the Daemon&lt;/h4&gt;

&lt;p&gt;Go to the newly created directory, with an user account that has write permissions to this directory. Run:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/usr/bin/java -jar indexer.jar (or wherever you have java)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You should be fine from that point, the daemon will listen to 127.0.0.1:2222, which is the default setting from the MidCOM side too.&lt;/p&gt;

&lt;p&gt;The Daemon will run in foreground by default, unless you launch it with some nohup wrapper. For the init-script (for debian), see &quot;To make indexer run as a init.d script&quot; section at the bottom of this page.&lt;/p&gt;

&lt;h4&gt;Changing Configuration&lt;/h4&gt;

&lt;p&gt;The daemon will take a filename during startup as first command line argument. A full configuration file looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;logfile = 
loglevel = WARNING
bind = 127.0.0.1
port = 2222
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;What I wrote here are the defaults, log warning level messages to stderr (no log file) and bind to 127.0.0.1:2222. Check &lt;a href=&quot;http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html&quot;&gt;java.util.logging.Level&lt;/a&gt; for valid logging levels.&lt;/p&gt;

&lt;p&gt;You should be fine using the defaults though.&lt;/p&gt;

&lt;h3&gt;Configuring MidCOM to use the Indexer&lt;/h3&gt;

&lt;p&gt;This is relativly easy, and consists of three tasks:&lt;/p&gt;

&lt;h4&gt;Activate the indexing feature in the MidCOM configuration&lt;/h4&gt;

&lt;p&gt;As usual, you will find all detailed information in the &lt;a href=&quot;http://www.nehmer.net/~torben/midcom-docs/&quot;&gt;MidCOM API docs&lt;/a&gt;, section &lt;a href=&quot;http://www.nehmer.net/~torben/midcom-docs/midcom/_midcom_config_midcom_config_php.html&quot;&gt;midcom_config.php&lt;/a&gt;. As long as you stick to the default configuration, it is enough to activate the XMLTCP indexing backend during MidCOM startup:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$GLOBALS['midcom_local_config']['indexer_backend'] = 'xmltcp';
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Two more configuration options, &lt;strong&gt;indexer_xmltcp_host&lt;/strong&gt; and &lt;strong&gt;indexer_xmltcp_port&lt;/strong&gt;, allowing you to explicitly specify the host/port combination where the indexer runs.&lt;/p&gt;

&lt;h4&gt;Index your entire site&lt;/h4&gt;

&lt;p&gt;Unless you are building a site from scratch, you obviously have to reindex your entire website. This is done by accessing this URL with full admin privileges:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http://your.site.com/midcom-exec-midcom/reindex.php
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Two important notes about this: First it will take quite some time, as the MidCOM side of the interface does not yet support batch indexing. Second, and far more important, Reindexing will take a huge amount of RAM. For example, a site with around 250 documents on it requires about 60 MB of total RAM.&lt;/p&gt;

&lt;h4&gt;Create the Indexer Frontend&lt;/h4&gt;

&lt;p&gt;Create a new topic using the component &lt;strong&gt;midcom.helper.search&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;To make indexer run as a init.d script (on debian).&lt;/h2&gt;

&lt;p&gt;To make indexer run as a init.d script so you can use normal start &amp;amp;
stop do the following steps. This is for Debian system. Tested in Sarge.
You must perform these steps as root.&lt;/p&gt;

&lt;p&gt;Create &lt;strong&gt;/usr/share/midgard/indexer/indexer&lt;/strong&gt; in which you put the following code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#! /bin/sh
#
# indexer

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC=&quot;MidCOM indexer&quot;
NAME=java-indexer
DAEMON=/usr/share/midgard/indexer/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
ARGS=&quot;-jar indexer.jar&quot;
APPDIR=/usr/share/midgard/indexer

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

# Read config file if it is present.
#if &amp;lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&amp;gt; -r /etc/default/$NAME &amp;lt;/span&amp;gt;
#then
#   . /etc/default/$NAME
#fi

#
#   Function that starts the daemon/service.
#
d_start() {
    start-stop-daemon --start --make-pidfile --pidfile $PIDFILE \
        --chdir $APPDIR --background --quiet \
        --exec $DAEMON -- $ARGS
}

#
#   Function that stops the daemon/service.
#
d_stop() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE
}

#
#   Function that sends a SIGHUP to the daemon/service.
#
d_reload() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE --signal 1
}

case &quot;$1&quot; in
  start)
    echo -n &quot;Starting $DESC: $NAME&quot;
    d_start
    echo &quot;.&quot;
    ;;
  stop)
    echo -n &quot;Stopping $DESC: $NAME&quot;
    d_stop
    echo &quot;.&quot;
    ;;
  #reload)
    #
    #   If the daemon can reload its configuration without
    #   restarting (for example, when it is sent a SIGHUP),
    #   then implement that here.
    #
    #   If the daemon responds to changes in its config file
    #   directly anyway, make this an &quot;exit 0&quot;.
    #
    # echo -n &quot;Reloading $DESC configuration...&quot;
    # d_reload
    # echo &quot;done.&quot;
  #;;
  restart|force-reload)
    #
    #   If the &quot;reload&quot; option is implemented, move the &quot;force-reload&quot;
    #   option to the &quot;reload&quot; entry above. If not, &quot;force-reload&quot; is
    #   just the same as &quot;restart&quot;.
    #
    echo -n &quot;Restarting $DESC: $NAME&quot;
    d_stop
    sleep 1
    d_start
    echo &quot;.&quot;
    ;;
  *)
    # echo &quot;Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}&quot; &amp;gt;&amp;amp;2
    echo &quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&quot; &amp;gt;&amp;amp;2
    exit 1
    ;;
esac

exit 0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you do not already have PEAR XML_Parser, you need to also get that:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;pear install xml_parser
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Copy &lt;strong&gt;indexer.jar&lt;/strong&gt;, &lt;strong&gt;xml-communication-request.dtd&lt;/strong&gt;,
&lt;strong&gt;xml-communication-response.dtd&lt;/strong&gt;, &lt;strong&gt;lucene.jar&lt;/strong&gt; in &lt;strong&gt;/usr/share/midgard/indexer/&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make sure you have Java runtime installed. Create symlink so that
&lt;strong&gt;/usr/share/midgard/indexer/java-indexer&lt;/strong&gt; points to java.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ln -s /opt/j2re/bin/java /usr/share/midgard/indexer/java-indexer
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The process we will be running will then be called &lt;strong&gt;java-indexer&lt;/strong&gt; so this
wont mess up with other java processes.&lt;/p&gt;

&lt;p&gt;Create symlink:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ln -s /usr/share/midgard/indexer/indexer /etc/init.d/indexer
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To make it automatically start and stop on startup/shutdown:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;update-rc.d indexer defaults
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Have fun indexing!&lt;/p&gt;
</description>
            <author>Arttu Manninen</author>
            <pubDate>Mon, 19 Apr 2010 20:52:57 +0000</pubDate>
        </item>
        <item>
            <title>Drupal</title>
            <link>http://www.midgard-project.org/documentation/drupal/</link>
            <description>&lt;h1&gt;Preface&lt;/h1&gt;

&lt;p&gt;This instruction supposes that you are installing MidCOM website in a subdomain of Drupal website and that MidCOM has access to Drupal's host filesystem and database. For example: Drupal at &lt;em&gt;example.com&lt;/em&gt; and MidCOM at &lt;em&gt;midcom.example.com&lt;/em&gt;. It is possible to achieve similar results in other environments, but process would become a bit more complicated&lt;/p&gt;

&lt;h2&gt;Drupal side&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;install &quot;&lt;strong&gt;erl&lt;/strong&gt;&quot; (External Redirector after Login) module available from &lt;a href=&quot;http://github.com/nemein/MeeGo/tree/master/drupal/modules/&quot;&gt;github repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;enable &quot;&lt;strong&gt;erl&lt;/strong&gt;&quot; module from Drupal's administration UI. It will register &lt;strong&gt;erl/login&lt;/strong&gt;, &lt;strong&gt;erl/logout&lt;/strong&gt; and &lt;strong&gt;erl/return&lt;/strong&gt; URLs&lt;/li&gt;
&lt;li&gt;in &quot;&lt;strong&gt;erl&lt;/strong&gt;&quot; module's settings add MidCOM's hostname to the list of allowed domains.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;MidCOM side&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;make sure, that php's &lt;strong&gt;pdo_mysql&lt;/strong&gt; extension is enabled (or &lt;strong&gt;pdo_pgsql&lt;/strong&gt;, if Drupal uses PostgreSQL database)&lt;/li&gt;
&lt;li&gt;install &quot;&lt;strong&gt;net.nemein.drupalauth&lt;/strong&gt;&quot; component from &lt;a href=&quot;https://svn.midgard-project.org/midgard/branches/ragnaroek/midcom/net.nemein.drupalauth/&quot;&gt;midgard's svn repo&lt;/a&gt; (8.09.8.25504+)&lt;/li&gt;
&lt;li&gt;make sure, that &lt;strong&gt;midcom.core&lt;/strong&gt;'s version is 8.09.8.25505 or newer (update if necessary)&lt;/li&gt;
&lt;li&gt;in MidCOM's website-settings (available via Asgard) set 3 config-variables:

&lt;ul&gt;
&lt;li&gt;Path to Drupal's settings.php file =&gt; &quot;/usr/share/drupal6/sites/default/settings.php&quot; (set whatever is right for your setup)&lt;/li&gt;
&lt;li&gt;Drupal's domain =&gt; &quot;example.com&quot; (according to our imaginary setup, set real domain of your Drupal host)&lt;/li&gt;
&lt;li&gt;Enable authentication via Drupal =&gt; &quot;Yes&quot;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Done.
As soon as you press &quot;Save&quot; button MidCOM won't allow you to authenticate using midgard logins/passwords anymore. You will need to use Drupal's credentials.
&lt;blockquote&gt;
  &lt;p&gt;Hint: create &quot;admin&quot; account in Drupal. It will connect to midgard's &quot;admin&quot; account and you will be able to proceed with this instruction&lt;/p&gt;
&lt;/blockquote&gt;&lt;/p&gt;

&lt;h2&gt;Edit your MidCOM styles to have the following links:&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;http://example.com/?q=erl/login for &quot;Login&quot; link (remember to replace &quot;example.com&quot; with your Drupal's site hostname)&lt;/li&gt;
&lt;li&gt;http://example.com/?q=erl/logout for &quot;Logout&quot; link&lt;/li&gt;
&lt;li&gt;http://example.com/?q=user/register for &quot;Register&quot; link&lt;/li&gt;
&lt;li&gt;http://example.com/?q=user for &quot;My Account&quot; link&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;check how we did it for meego.com demo-site &lt;a href=&quot;http://github.com/nemein/MeeGo/commit/691c721aaecc448e13725a1130f08dc69facbe7b#L1R6&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
            <author>Alexey Zakhlestin</author>
            <pubDate>Wed, 31 Mar 2010 14:11:43 +0000</pubDate>
        </item>
        <item>
            <title>Midgard Documentation</title>
            <link>http://www.midgard-project.org/documentation/</link>
            <description>&lt;p&gt;&lt;strong&gt;Midgard Documentation&lt;/strong&gt; is a &lt;a href=&quot;http://en.wikipedia.org/wiki/Wiki&quot; class=&quot;wikipedia&quot;&gt;Wiki&lt;/a&gt; collecting information about features, usage and development of &lt;a href=&quot;/&quot;&gt;Midgard&lt;/a&gt;, the Open Source Content Management System. See &lt;a href=&quot;/documentation/latest/&quot;&gt;latest Wiki changes&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation/&quot; class=&quot;wikipage &quot; title=&quot;Midgard Installation Manual&quot;&gt;Installing Midgard&lt;/a&gt;&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation-distros/&quot; class=&quot;wikipage &quot; title=&quot;Installing Midgard from Distribution Packages&quot;&gt;Distribution packages&lt;/a&gt;&lt;/strong&gt; - Midgard installers for distributions like &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-distros-debian/&quot; class=&quot;wikipage &quot; title=&quot;Debian&quot;&gt;Debian&lt;/a&gt;, &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-distros-fedora/&quot; class=&quot;wikipage &quot; title=&quot;Fedora and EL&quot;&gt;Fedora/EL&lt;/a&gt;, &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-distros-suse/&quot; class=&quot;wikipage &quot; title=&quot;openSUSE and SLE&quot;&gt;openSUSE/SLE&lt;/a&gt;, &lt;a href=&quot;http://www.midgard-project.org/documentation/ubuntu/&quot; class=&quot;wikipage &quot; title=&quot;Ubuntu&quot;&gt;Ubuntu&lt;/a&gt; and &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-distros-mac-os-x/&quot; class=&quot;wikipage &quot; title=&quot;Mac OS X&quot;&gt;Mac OS X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation-source/&quot; class=&quot;wikipage &quot; title=&quot;Installing Midgard from Source&quot;&gt;Source installation&lt;/a&gt;&lt;/strong&gt; - Compile Midgard on any Unix platform&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation-database/&quot; class=&quot;wikipage &quot; title=&quot;Setting Up a Midgard Database&quot;&gt;Database setup&lt;/a&gt;&lt;/strong&gt; - Creating a new Midgard database with &lt;a href=&quot;http://www.midgard-project.org/documentation/datagard/&quot; class=&quot;wikipage &quot; title=&quot;Datagard&quot;&gt;Datagard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation-vhost/&quot; class=&quot;wikipage &quot; title=&quot;Creating a New Virtual Host&quot;&gt;Virtual Host creation&lt;/a&gt;&lt;/strong&gt; - Setting Midgard to answer in different domain names&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installing-midcom-with-pear/&quot; class=&quot;wikipage &quot; title=&quot;Installing MidCOM with PEAR&quot;&gt;MidCOM installation&lt;/a&gt;&lt;/strong&gt; - Installing the &lt;a href=&quot;http://www.midgard-project.org/documentation/midcom/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM&quot;&gt;MidCOM&lt;/a&gt; component framework with PEAR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation-troubleshooting/&quot; class=&quot;wikipage &quot; title=&quot;Troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/strong&gt; - Common problems and solutions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation-upgrade/&quot; class=&quot;wikipage &quot; title=&quot;Upgrade Notes&quot;&gt;Upgrading Midgard&lt;/a&gt;&lt;/strong&gt; - How to upgrade an existing Midgard installation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/installation-authentication/&quot; class=&quot;wikipage &quot; title=&quot;Third-party Authentication&quot;&gt;Authentication settings&lt;/a&gt;&lt;/strong&gt; - Setting Midgard to authenticate using third-party sources like LDAP or Active Directory&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/performance-tuning/&quot; class=&quot;wikipage &quot; title=&quot;Performance tuning&quot;&gt;Performance tuning&lt;/a&gt;&lt;/strong&gt; - High performance setups with Midgard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/getting-started/&quot; class=&quot;wikipage &quot; title=&quot;Getting Started with Midgard&quot;&gt;Getting started&lt;/a&gt;&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/content-production-with-midcom/&quot; class=&quot;wikipage &quot; title=&quot;Content production with MidCOM&quot;&gt;MidCOM content editing&lt;/a&gt;&lt;/strong&gt; - Managing content in Midgard&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/getting-started-create-groups/&quot; class=&quot;wikipage &quot; title=&quot;Create Groups and People&quot;&gt;Groups and People&lt;/a&gt;&lt;/strong&gt; - Managing users in Midgard&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgard-administration-interfaces/&quot; class=&quot;wikipage &quot; title=&quot;Midgard Administration Interfaces&quot;&gt;Administration interfaces&lt;/a&gt;&lt;/strong&gt; - Applications for managing Midgard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/howto-midcom/&quot; class=&quot;wikipage &quot; title=&quot;Site building with MidCOM&quot;&gt;Site building&lt;/a&gt;&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/getting-started-create-style/&quot; class=&quot;wikipage &quot; title=&quot;Create a Style&quot;&gt;Style creation&lt;/a&gt;&lt;/strong&gt; - Creating custom layout templates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-method-dynamic_load/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM method dynamic_load&quot;&gt;Dynamic loading&lt;/a&gt;&lt;/strong&gt; - Including content from different site areas into a page&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/howto-midcom-menucreation/&quot; class=&quot;wikipage redirect&quot; title=&quot;Designing your own MidCOM menus&quot;&gt;Custom navigation&lt;/a&gt;&lt;/strong&gt; - Using the &lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-midcom-specs-subsystems-nap/&quot; class=&quot;wikipage &quot; title=&quot;Navigation Access Point&quot;&gt;NAP system&lt;/a&gt; to build custom site navigation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/building-multilingual-sites-with-midcom/&quot; class=&quot;wikipage default&quot; title=&quot;Building Multilingual sites with MidCOM&quot;&gt;Multilingual sites&lt;/a&gt;&lt;/strong&gt; - Making your site support multiple languages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-helper-metadata-approvals/&quot; class=&quot;wikipage &quot; title=&quot;midcom.helper.metadata approvals&quot;&gt;Approvals and scheduling&lt;/a&gt;&lt;/strong&gt; - Adding workflow to your site&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-component-configuration/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM component configuration&quot;&gt;Component configuration&lt;/a&gt;&lt;/strong&gt; - Tweaking components of your website&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/using-midcom-helper-datamanager-schemas/&quot; class=&quot;wikipage &quot; title=&quot;Using midcom.helper.datamanager schemas&quot;&gt;Content schemas&lt;/a&gt;&lt;/strong&gt; - Customizing the fields of your content editors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/styling-midcom-error-pages/&quot; class=&quot;wikipage &quot; title=&quot;Styling MidCOM Error Pages&quot;&gt;Error pages&lt;/a&gt;&lt;/strong&gt; - Customizing error pages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/drupal/&quot; class=&quot;wikipage default&quot; title=&quot;Drupal&quot;&gt;Drupal integration&lt;/a&gt;&lt;/strong&gt; - Using Drupal sessions for authenticating MidCOM&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Application development&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-component-development/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM component development&quot;&gt;Component development&lt;/a&gt;&lt;/strong&gt; - Developing your own PHP components&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/using-eclipse-for-midcom-development/&quot; class=&quot;wikipage &quot; title=&quot;Using Eclipse for MidCOM development&quot;&gt;Eclipse usage&lt;/a&gt;&lt;/strong&gt; - Using the Eclipse IDE for component development&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-midcom-specs-components-styleguide/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM Coding Styleguide&quot;&gt;Coding Standards&lt;/a&gt;&lt;/strong&gt; - Standards for formatting Midgard PHP code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/mgdschema-in-php/&quot; class=&quot;wikipage &quot; title=&quot;MgdSchema in PHP&quot;&gt;MgdSchema objects&lt;/a&gt;&lt;/strong&gt; - Data handling API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgardquerybuilder/&quot; class=&quot;wikipage &quot; title=&quot;MidgardQueryBuilder&quot;&gt;Query Builder&lt;/a&gt;&lt;/strong&gt; - Database object query API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/php_midgard_core/&quot; class=&quot;wikipage default&quot; title=&quot;PHP Midgard Core&quot;&gt;Midgard core in PHP&lt;/a&gt;&lt;/strong&gt; - Midgard core PHP API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/php-midgard_collector/&quot; class=&quot;wikipage &quot; title=&quot;PHP midgard_collector&quot;&gt;Collector&lt;/a&gt;&lt;/strong&gt; - Optimized database query API that doesn't return objects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom-helper-datamanager-api/&quot; class=&quot;wikipage &quot; title=&quot;midcom.helper.datamanager API&quot;&gt;Datamanager API&lt;/a&gt;&lt;/strong&gt; - Making your content fields customizable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/de-bitfolge-feedcreator/&quot; class=&quot;wikipage &quot; title=&quot;de.bitfolge.feedcreator&quot;&gt;Feed creator&lt;/a&gt;&lt;/strong&gt; - Adding RSS and Atom feeds into your components&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/reference/&quot; class=&quot;wikipage &quot; title=&quot;Midgard API Reference&quot;&gt;Complete API reference&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgard-core/&quot; class=&quot;wikipage &quot; title=&quot;Midgard core&quot;&gt;Midgard core C documentation&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/python_midgard/&quot; class=&quot;wikipage default&quot; title=&quot;Python Midgard &quot;&gt;Midgard in Python&lt;/a&gt;&lt;/strong&gt; - Midgard Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/objectivec_midgard/&quot; class=&quot;wikipage default&quot; title=&quot;ObjectiveC Midgard&quot;&gt;Midgard in ObjectiveC&lt;/a&gt;&lt;/strong&gt; - Midgard in ObjectiveC and on the Mac&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgard_app_builder/&quot; class=&quot;wikipage default&quot; title=&quot;Midgard App Builder&quot;&gt;Midgard App Builder&lt;/a&gt;&lt;/strong&gt; - Midgard package for building Fluid applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts/&quot; class=&quot;wikipage &quot; title=&quot;Concepts and features&quot;&gt;Midgard concepts&lt;/a&gt;&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midcom/&quot; class=&quot;wikipage &quot; title=&quot;MidCOM&quot;&gt;MidCOM&lt;/a&gt;&lt;/strong&gt; - Midgard's Component Framework for PHP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-host_and_page/&quot; class=&quot;wikipage &quot; title=&quot;Host, URL and Dynamic Page Parameters&quot;&gt;URL handling&lt;/a&gt;&lt;/strong&gt; - How Midgard maps URLs to the database&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-users/&quot; class=&quot;wikipage &quot; title=&quot;Permissions in Midgard&quot;&gt;Permissions&lt;/a&gt;&lt;/strong&gt; - How Midgard handles permissions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-page_and_style/&quot; class=&quot;wikipage &quot; title=&quot;Midgard Templating Engine&quot;&gt;Templating Engine&lt;/a&gt;&lt;/strong&gt; - How Midgard's page composition works&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-sitegroups/&quot; class=&quot;wikipage &quot; title=&quot;Sitegroup Virtual Databases&quot;&gt;Sitegroups&lt;/a&gt;&lt;/strong&gt; - Virtual Hosting Databases in Midgard&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-quota/&quot; class=&quot;wikipage &quot; title=&quot;Quota in Midgard&quot;&gt;Quota&lt;/a&gt;&lt;/strong&gt; - Setting disk quotas in hosting environments&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-i18n/&quot; class=&quot;wikipage &quot; title=&quot;Internationalization in Midgard&quot;&gt;Internationalization&lt;/a&gt;&lt;/strong&gt; - Support for multiple languages and character sets&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-attachments/&quot; class=&quot;wikipage &quot; title=&quot;File Attachments in Midgard&quot;&gt;File attachments&lt;/a&gt;&lt;/strong&gt; - Support for binary files&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/mgdschema/&quot; class=&quot;wikipage &quot; title=&quot;MgdSchema&quot;&gt;MgdSchema&lt;/a&gt;&lt;/strong&gt; - Database object abstraction&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/mgdschema-metadata-object/&quot; class=&quot;wikipage &quot; title=&quot;MgdSchema metadata object&quot;&gt;Metadata object&lt;/a&gt;&lt;/strong&gt; - Centralized metadata system&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/concepts-formatting/&quot; class=&quot;wikipage &quot; title=&quot;Formatting engine&quot;&gt;Formatting engine&lt;/a&gt;&lt;/strong&gt; - Registering and using content formatting functions in HTML&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/exorcist/&quot; class=&quot;wikipage &quot; title=&quot;Exorcist&quot;&gt;Exorcist&lt;/a&gt;&lt;/strong&gt; - Replication and cross-CMS content migration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/unittesting/&quot; class=&quot;wikipage &quot; title=&quot;UnitTesting&quot;&gt;UnitTesting&lt;/a&gt;&lt;/strong&gt; - Writing unittests for the php API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/midgard-admin-wizards/&quot; class=&quot;wikipage default&quot; title=&quot;midgard.admin.wizards&quot;&gt;Midgard Wizards&lt;/a&gt;&lt;/strong&gt; - tool for creating new &lt;a href=&quot;http://www.midgard-project.org/documentation/reference-sitegroup/&quot; class=&quot;wikipage &quot; title=&quot;MidgardSitegroup&quot;&gt;organizations&lt;/a&gt; and &lt;span class=&quot;wiki_missing_nouser&quot; title=&quot;Login to create this missing page&quot;&gt;websites&lt;/span&gt; into Midgard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Midgard tools and configuration&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/command-line-tools/&quot; class=&quot;wikipage &quot; title=&quot;Command line tools&quot;&gt;Command line tools&lt;/a&gt;&lt;/strong&gt; - Running midgard from command line, debug, testing and other tools&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/unified-configuration/&quot; class=&quot;wikipage &quot; title=&quot;Unified configuration&quot;&gt;Unified configuration&lt;/a&gt;&lt;/strong&gt; - Configuration with ini like files and reusing them between applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Other information&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/glossary/&quot; class=&quot;wikipage &quot; title=&quot;Glossary&quot;&gt;Glossary&lt;/a&gt;&lt;/strong&gt; - Getting hang of Midgard terminology&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/translating-midcom-and-components/&quot; class=&quot;wikipage &quot; title=&quot;Translating MidCOM and components&quot;&gt;Localization&lt;/a&gt;&lt;/strong&gt; - How to translate Midgard to your own language&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/external-tutorials/&quot; class=&quot;wikipage &quot; title=&quot;External tutorials&quot;&gt;External tutorials&lt;/a&gt;&lt;/strong&gt; - Midgard information elsewhere on the web&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/how-to-contribute-documentation/&quot; class=&quot;wikipage &quot; title=&quot;How to contribute documentation&quot;&gt;Documentation contribution&lt;/a&gt;&lt;/strong&gt; - How to contribute content to this wiki&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/authors/&quot; class=&quot;wikipage &quot; title=&quot;Authors&quot;&gt;Authors&lt;/a&gt;&lt;/strong&gt; - Wiki contributors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/folklore/&quot; class=&quot;wikipage default&quot; title=&quot;Folklore&quot;&gt;Folklore&lt;/a&gt;&lt;/strong&gt; - Cultural points about the Midgard project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.midgard-project.org/documentation/net-nemein-wiki/&quot; class=&quot;wikipage &quot; title=&quot;net.nemein.wiki&quot;&gt;Midgard Wiki&lt;/a&gt; software makes it easy for community members to add more documentation to this site. The whole documentation is &lt;a href=&quot;http://en.wikipedia.org/wiki/Open_content&quot; class=&quot;wikipedia&quot;&gt;open content&lt;/a&gt; available under the &lt;a href=&quot;/midcom-permalink-efc0f1058f661b2f8b765bbb46f9508b&quot;&gt;Creative Commons Attribution-ShareAlike&lt;/a&gt; license.&lt;/p&gt;
</description>
            <author>Alexey Zakhlestin</author>
            <pubDate>Wed, 31 Mar 2010 13:37:31 +0000</pubDate>
        </item>
        <item>
            <title>How to set up site search using Solr</title>
            <link>http://www.midgard-project.org/documentation/how_to_set_up_site_search_using_solr/</link>
            <description>&lt;h2&gt;About Solr&lt;/h2&gt;

&lt;p&gt;Solr is an open source enterprise search server based on the Lucene Java search library, with XML/HTTP and JSON APIs, hit highlighting, faceted search, caching, replication, and a web administration interface. It runs in a Java servlet container such as Tomcat.&lt;/p&gt;

&lt;p&gt;That means that to use Solr you will need to run in some Java servlet container.&lt;/p&gt;

&lt;h2&gt;Using solr-tomcat5.5&lt;/h2&gt;

&lt;p&gt;On Ubuntu et co we have this package available and dependency of the midgard metapackage, so after installing just do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make sure the Catalina process uses &lt;a href=&quot;http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q2&quot;&gt;UTF-8 for URI parsing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download the &lt;a href=&quot;http://trac.midgard-project.org/browser/trunk/external-tools/indexer-backends/solr/schema.xml&quot;&gt;MidCOM Solr Schema&lt;/a&gt; and copy over &lt;code&gt;/etc/solr/conf/schema.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure your website to use the indexer
Set the following values in  &lt;code&gt;code-init-before-midcom&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$GLOBALS['midcom_config_local']['indexer_reindex_allowed_ips'] = array ( '127.0.0.1', 'server.main.ip' );
$GLOBALS['midcom_config_local']['indexer_backend'] = 'solr';
$GLOBALS['midcom_config_local']['indexer_xmltcp_host'] = 'localhost';
$GLOBALS['midcom_config_local']['indexer_xmltcp_port'] = '8180';
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you get &lt;code&gt;java.lang.NoClassDefFoundError&lt;/code&gt; in Tomcat logs you may need to &lt;a href=&quot;http://yousefourabi.com/blog/2007/12/running-solr-on-debian-with-tomcat/&quot;&gt;disable Tomcat security&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Using Jetty&lt;/h2&gt;

&lt;div class=&quot;warning&quot;&gt;
This section is very old, we suggest using Tomcat
&lt;/div&gt;

&lt;h3&gt;Dependencies&lt;/h3&gt;

&lt;p&gt;On Debian you need the following packages:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt-get install libmx4j-java libregexp-java libsablevm-classlib1-java libservlet2.4-java libtomcat5.5-java libxerces2-java sun-java5-jdk
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Installing Jetty&lt;/h3&gt;

&lt;p&gt;Solr comes with Jetty in the example directory.&lt;/p&gt;

&lt;h3&gt;Installing Solr&lt;/h3&gt;

&lt;div class=&quot;note&quot;&gt;
You must use version 1.1 of Solr
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Download Solr from the Solr website
&lt;a href=&quot;http://www.apache.org/dyn/closer.cgi/lucene/solr/&quot;&gt;http://www.apache.org/dyn/closer.cgi/lucene/solr/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unpack solr and copy the jetty example install to the jetty home.&lt;/p&gt;

&lt;p&gt;unzip apache-solr-1.1*.zip&lt;br /&gt;
   cp -R apache-solr-1.1*/example /usr/share/jetty&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the setupfiles for Solr. (Currently just for Debian)&lt;/p&gt;

&lt;p&gt;svn co https://svn.midgard-project.org/midgard/trunk/external-tools/indexer-backends/solr&lt;br /&gt;
cd solr&lt;br /&gt;
bash ./install-solr.sh&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This will install setupfiles in the correct places and set the correct permissions.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Start solr&lt;/p&gt;

&lt;p&gt;/etc/init.d/jetty start&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now solr is running and listening to requests on port 8983.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a topic with the Search component.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the menu, choose website -&gt; website configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set the following values:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Indexer: Solr&lt;/li&gt;
&lt;li&gt;Hostname of indexer xmltcp service: localhost (or the host solr is running on)&lt;/li&gt;
&lt;li&gt;Port of indexer xmltcp service: 8983&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Reindex your site.
Visit &lt;code&gt;/midcom-exec-midcom/reindex.php&lt;/code&gt;. This will take some time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You should now be able to run searches on your site.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Security&lt;/h3&gt;

&lt;p&gt;In the &lt;code&gt;addListener&lt;/code&gt; definition in &lt;code&gt;jetty.xml&lt;/code&gt;, add the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;Set name=&quot;Host&quot;&amp;gt;localhost&amp;lt;/Set&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So Jetty doesn't listen to requests from the outside. If you want to still access the admin interface, use firewall scripts to hide the port from most users.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;http://wiki.apache.org/solr/SolrSecurity&quot;&gt;http://wiki.apache.org/solr/SolrSecurity&lt;/a&gt; for more information.&lt;/p&gt;

&lt;h3&gt;Troubleshooting&lt;/h3&gt;

&lt;h4&gt;&quot;Authorization required&quot;&lt;/h4&gt;

&lt;p&gt;When you're running &lt;code&gt;midcom-exec-midcom/reindex.php&lt;/code&gt;, and you get &quot;Authorization required&quot; errors, you should modify the &lt;code&gt;indexer_reindex_allowed_ips&lt;/code&gt;. Either set it in &lt;code&gt;/etc/midgard/midcom.conf&lt;/code&gt; or in the host settings.&lt;/p&gt;

&lt;p&gt;For the &lt;code&gt;midcom.conf&lt;/code&gt; file, you need to add:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$GLOBALS['midcom_config_site']['indexer_reindex_allowed_ips'] = array('127.0.0.1','192.168.126.128','127.0.1.1');
&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;&quot;Indexer failed&quot;&lt;/h4&gt;

&lt;p&gt;If you get an &quot;indexer failed&quot; error when reindexing the site, ensure that SOLR's data directory exists and is writable:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkdir /usr/share/jetty/solr/data  
chown jetty /usr/share/jetty/solr/data
&lt;/code&gt;&lt;/pre&gt;
</description>
            <author>Eero af Heurlin</author>
            <pubDate>Tue, 23 Feb 2010 13:53:10 +0000</pubDate>
        </item>
        <item>
            <title>External tutorials</title>
            <link>http://www.midgard-project.org/documentation/external-tutorials/</link>
            <description>&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www-106.ibm.com/developerworks/library/w-midgard/&quot;&gt;IBM DeveloperWorks Tutorial&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
A nice tutorial on Midgard. Written by David Seager, a software engineer
at IBM, the article describes setting up a basic Midgard site. The
article also does a good job of setting up a general context for what
Midgard is and how it works.&lt;br /&gt;
&lt;a href=&quot;http://www-106.ibm.com/developerworks/library/w-midgard/&quot;&gt;http://www-106.ibm.com/developerworks/library/w-midgard/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;a href=&quot;http://www.webtechniques.com/archives/2000/05/jepson/&quot;&gt;New Architect on Midgard&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
The May 2000 issue of New Architect (then Web Techniques) carried an
introductory article and tutorial to Midgard by Brian Jepson.&lt;br /&gt;
&lt;a href=&quot;http://www.webtechniques.com/archives/2000/05/jepson/&quot;&gt;http://www.webtechniques.com/archives/2000/05/jepson/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;a href=&quot;http://www.3rd-evolution.de/docs/misc/midgard/&quot;&gt;Midgard tutorial in German&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
3rd Evolution's tutorial on Midgard and Nadmin Studio on Mandrake Linux. In German.&lt;br /&gt;
&lt;a href=&quot;http://www.3rd-evolution.de/docs/misc/midgard/&quot;&gt;http://www.3rd-evolution.de/docs/misc/midgard/&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;Reference manuals&lt;/h2&gt;

&lt;p&gt;
&lt;strong&gt;&lt;a href=&quot;http://www.php.net/manual/&quot;&gt;PHP Manual&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
The PHP programming language manual and API reference.&lt;br /&gt;
&lt;a href=&quot;http://www.php.net/manual/&quot;&gt;http://www.php.net/manual/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;&lt;a href=&quot;http://midgardwiki.contentcontrol-berlin.de/index.php/Main_Page&quot;&gt;MidgardWiki @ Content Control&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
Wiki collecting Midgard site building information.
&lt;/p&gt;
</description>
            <author>Mattias Stahre</author>
            <pubDate>Mon, 22 Feb 2010 01:27:06 +0000</pubDate>
        </item>
        <item>
            <title>PHP midgard object method delete_attachments</title>
            <link>http://www.midgard-project.org/documentation/php_midgard_object_method_delete_attachments/</link>
            <description>&lt;p&gt;Delete object's attachments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;boolean&lt;/em&gt; &lt;strong&gt;delete_attachments(&lt;em&gt;array&lt;/em&gt; args);&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This method takes one argument:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;args, associative array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Array's keys must be &lt;em&gt;midgard_attachment&lt;/em&gt; properties' names, values should define constraints  with properties's values.&lt;/p&gt;

&lt;p&gt;Delete all attachments with matching properties' values. It's possible to undelete attachment which have been deleted with this method.&lt;/p&gt;

&lt;p&gt;Blobs that are linked to attachment are &lt;strong&gt;not&lt;/strong&gt; deleted because one blob can be linked to many attachments. Blobs are deleted with blob's &lt;a href=&quot;http://www.midgard-project.org/documentation/php_midgard_blob_method_remove_file/&quot; class=&quot;wikipage default&quot; title=&quot;PHP midgard_blob method remove_file&quot;&gt;remove_file&lt;/a&gt; function&lt;/p&gt;

&lt;p&gt;Returns &lt;em&gt;TRUE&lt;/em&gt; on success, &lt;em&gt;FALSE&lt;/em&gt; otherwise.&lt;/p&gt;

&lt;h2&gt;Example&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;?php

/* Delete all image attachments */

 try {
     $style = new midgard_style($guid);
 } catch (Exception $e) {
     echo $e-&amp;gt;getMessage();  
 }

 $args = array (&quot;mimetype&quot; =&amp;gt; &quot;image/jpeg&quot;);

 if($style-&amp;gt;delete_attachments($args))
     echo &quot;Deleted all image attachments&quot;;

 ?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://www.midgard-project.org/documentation/php_midgard_object_attachments/&quot; class=&quot;wikipage default&quot; title=&quot;PHP midgard object attachments&quot;&gt;midgard object attachments&lt;/a&gt;&lt;/p&gt;
</description>
            <author>Tero Heikkinen</author>
            <pubDate>Fri, 19 Feb 2010 14:08:14 +0000</pubDate>
        </item>
        <item>
            <title>Debian</title>
            <link>http://www.midgard-project.org/documentation/installation-distros-debian/</link>
            <description>&lt;p&gt;Debian packages are now built using &lt;a href=&quot;http://download.opensuse.org/repositories/home:/midgardproject:/ragnaroek/Debian_5.0/&quot;&gt;OpenSuse Build System&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Add OBS repository to &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;deb http://download.opensuse.org/repositories/home:/midgardproject:/ragnaroek/Debian_5.0/ ./
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or for Debian Etch:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;deb http://download.opensuse.org/repositories/home:/midgardproject:/ragnaroek/Debian_Etch/ ./
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To get rid of this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;W: GPG error: http://download.opensuse.org ./ Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY DFD08130B9E2252E
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;...Download Release.key and import it, e.g.:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;wget http://download.opensuse.org/repositories/home:/midgardproject:/ragnaroek/Debian_5.0/Release.key

cat Release.key | apt-key add -
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Download packages and install them manually, if packages can not be installed with apt-get.&lt;/p&gt;

&lt;p&gt;Run these commands when repository is added:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt-get update
apt-get install midgard
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Try to install &lt;code&gt;midgard-debian&lt;/code&gt; package if &lt;code&gt;midgard&lt;/code&gt; is not installable.&lt;/p&gt;

&lt;p&gt;If latter fails:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;apt-get install midgard-data php5-midgard
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Old stable 1.8 generation &quot;Thor&quot;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;deb http://download.opensuse.org/repositories/home:/midgardproject:/midgard18/Debian_Etch/ ./
&lt;/code&gt;&lt;/pre&gt;
</description>
            <author>Jarkko Ala-Louvesniemi</author>
            <pubDate>Thu, 04 Feb 2010 11:19:33 +0000</pubDate>
        </item>
        <item>
            <title>Kerberos single sign-on with Active Directory</title>
            <link>http://www.midgard-project.org/documentation/kerberos-single-sign-on-with-active-directory/</link>
            <description>&lt;p&gt;&lt;strong&gt;Kerberos authentication&lt;/strong&gt; is a &lt;a href=&quot;http://www.midgard-project.org/documentation/installation-authentication/&quot; class=&quot;wikipage &quot; title=&quot;Third-party Authentication&quot;&gt;third party authentication&lt;/a&gt; mechanism supported by Midgard. It allows users to &lt;a href=&quot;http://www.midgard-project.org/documentation/logging-into-midcom/&quot; class=&quot;wikipage &quot; title=&quot;Logging into MidCOM&quot;&gt;log in&lt;/a&gt; to Midgard using their LDAP or Active Directory accounts. In Kerberos authentication users may log in to Midgard in the normal way or using single sign-on method.&lt;/p&gt;

&lt;h2&gt;Basic kerberos configuration on midgard server&lt;/h2&gt;

&lt;p&gt;Install mod_auth_kerb.&lt;/p&gt;

&lt;p&gt;Configure /etc/krb5.conf&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[libdefaults]
    default_realm = KERBEROS.REALM

[domain_realm]
    apache.server.fqdn = KERBEROS.REALM

[realms]
    KERBEROS.REALM = {
        kdc = kdc.kerberos.realm
        }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Test configuration&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ kinit username
$ klist
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you get ticket from the kerberos server, you should be fine to continue. Otherwise you might find the troubleshooting section, in the end of this document, useful.&lt;/p&gt;

&lt;h2&gt;Creating keytab for single sign-on&lt;/h2&gt;

&lt;p&gt;First you must create a user account on the kerberos domain controller server. The user account must not be disabled and the password must stay the same. Otherwise you  might need to recreate the keytab. In this example the user account name is &quot;apache_server&quot; and has password &quot;apache_password&quot;.&lt;/p&gt;

&lt;p&gt;Windows Server 2003:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;C:\Program Files\Support Tools&amp;gt;ktpass -princ HTTP/apache.server.fqdn@KERBEROS.REALM -mapuser apache_server -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass apache_password -out name.keytab
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Windows Server 2000 (not tested):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;C:\Program Files\Support Tools&amp;gt;ktpass -princ HTTP/apache.server.fqdn@KERBEROS.REALM -mapuser dummyuser -crypto DES-CBC-MD5 -pass password -out name.keytab
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Install support tools to optain ktpass.exe. After creating the keytab you propably need to reset the password because of the new crypto type. You need to use the same password.&lt;/p&gt;

&lt;p&gt;apache.server.fqdn = the site url you are going to use. The url must be resolvable by the kerberos and midgard server to the midgard server ip-address.&lt;/p&gt;

&lt;p&gt;Place the keytab file on the midgard server and give apache user read rights to the file.&lt;/p&gt;

&lt;p&gt;Test the keytab:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ kinit -k -t /etc/name.keytab HTTP/apache.server.fqdn
$ klist
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you get ticket from the kerberos server, you should be fine to continue. Otherwise you might find the troubleshooting section, in the end of this document, useful.&lt;/p&gt;

&lt;h2&gt;Configuring midgard vhost&lt;/h2&gt;

&lt;p&gt;Below is a configuration for a kerberos SingleSignOn authentication which fallbacks to a kerberos password authentication.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Servername apache.server.fqdn
MidgardAuthType trusted

&amp;lt;Location &quot;/&quot;&amp;gt;
    AuthName &quot;Kerberos Authentication&quot;
    AuthType Kerberos
    KrbAuthRealms KERBEROS.REALM
    Krb5Keytab /etc/name.keytab
    KrbMethodNegotiate on
    KrbMethodK5Passwd on
    Order Allow,Deny
    # Allow cron scripts etc from local machine
    Allow from localhost
    Allow from apache.server.fqdn
    # Require kerberos for others
    Require valid-user
    Satisfy any
&amp;lt;/Location&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Browser support for single sign-on&lt;/h2&gt;

&lt;p&gt;Firefox:&lt;/p&gt;

&lt;p&gt;Go to about:config
edit network.negotiate-auth.trusted-uris and add http(s)://(site)&lt;/p&gt;

&lt;p&gt;IE6:&lt;/p&gt;

&lt;p&gt;Add the site to trusted sites.
Make sure that &quot;Enable Integrated Windows Authentication&quot; is on&lt;/p&gt;

&lt;h2&gt;Troubleshooting and useful links&lt;/h2&gt;

&lt;p&gt;In midgard server the site url must be /etc/hosts as a first entry for the ip in question:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;172.0.0.1       locahost.localdomain localhost
'ip-address'    apache.server.fqdn apache
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The midgard server must be in same time with the kerberos server. You can use ntp or ntpdate for this.&lt;/p&gt;

&lt;h3&gt;GSS failure &quot;Key version number for principal in key table is incorrect&quot;&lt;/h3&gt;

&lt;p&gt;If you reset the password after creating the keytab you will need to create a new one, even if kinit does not complain the Kerberos server will refuse to serve authentication requests for the &quot;old&quot; keytab.&lt;/p&gt;

&lt;p&gt;Links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://modauthkerb.sourceforge.net/&quot;&gt;mod_auth_kerb, the Apache Kerberos module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.grolmsnet.de/kerbtut/&quot;&gt;useful kerberos authentication tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://technet.microsoft.com/fi-fi/library/bb742433%28en-us%29.aspx&quot;&gt;Microsoft's kerberos interoperability guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerberr.mspx&quot;&gt;Microsoft's kerberos troubleshooting document&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
            <author>Eero af Heurlin</author>
            <pubDate>Thu, 21 Jan 2010 12:33:36 +0000</pubDate>
        </item>
    </channel>
</rss>

