<xml>
  <sip_build_site>
        <site>
          <runParams>
            <dev>1</dev>
          </runParams>
          <siteParams>
              <site_admin_email>me@example.com</site_admin_email>    
          </siteParams>
              
          <sips>

            <drupal5_core_drupal>
              <buildParams>
                <sip_install_package>drupal</sip_install_package>

                <sip_build_site>
                  <site>    
                    <sips>
                      <drupal5_core_drupal>
                        <buildParams>

                <sip_set_configvars>
                  <configvar>
                    <varname>filter_default_format</varname>
                    <varvalue>3</varvalue>
                  </configvar>
                </sip_set_configvars>

                          <drupal_insert_nodes>                          



                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder enables the automatic installation of PostNuke sites</title>
<created>2005-07-04</created>
                              <body>
                              
                              
<![CDATA[

<p>sifbuilder is a PHP based object based framework allowing the declarative definition and automatic installation of web sites. Some of the features of sifbuilder include:</p><div class="itemizedlist"><ul type="disc"><li>
<p>generic PHP application installer supporting releases and dependencies</p></li><li>
<p>online catalogue including PHP applications such as PostNuke, Xoops, dotProject, Sugar and Mantis</p></li><li>
<p>provide installation packages for PostNuke modules, blocks and themes</p></li><li><p>support install, uninstall and upgrade packages</p></li><li>
<p>support site installation from the PHP command line and accept all the site configuration parameters as command options</p></li><li>
<p>with tools like putty and 7z, automates the installation of sites on remote hosting servers, such as sourceforge</p></li><li>
<p>the same site definition script may be used to create a local site and a site on a hosting server using a ssh connection</p></li><li>
<p>the functional modules and the layout of the target site may be described in a declarative xml file and passed as parameters to the installation script</p></li><li>
<p>sifbuilder is usable as a PostNuke module. In this mode, it compares the versions of the locally install PostNuke modules against those available in the update server</p></li><li>
<p>includes various commerce sites installation scripts including a commerce site based on Tony Lee's implementation of OsCommerce, one based on pnCommerce, one based on Nathan Welch's PayPalCart, and one including Dustin Barnes's eBays module. The oscommerce installation package installs the original osc 2.2ms2 site</p></li><li>
<p>supports the declarative definition of Pagesetter schemas and publications and automates the insertion of news</p></li><li>
<p>includes a new theme, PostNuke07_theme_sif, that extremes the use of tableless design and automatically adapts itself to the site configuration</p></li></ul>


]]>
                              
                              </body>
                              <promote>1</promote>
                            </node>

                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 0.3.1 released</title>
<created>2006-01-23</created>
                              <body>
                              
                              
<![CDATA[

<p>sifbuilder 0.3.1 raises the level of abstraction and the functional scope of the program.</p>
<p>This release represents a substantial towards a generic PHP applications installer  conceived to automate the installation of composite web sites.</p>
<p>As an installer, it incorporates the functions of download, unzip, copy and modification  of files and dirs, installation, removal and update of packages. It also controls versions, dependencies and conflicts between packages.</p>
<p>Being oriented to automate the creation of modular web sites, it implements a framework with site, module, block and panel objects.</p>
<p>It supports the declarative description of a web site, including actions such as installation of modules, application of themes, creation of blocks or insertion of module links in blocks. This definition is represented in xml and is the basis for the automatic composition of a web site.</p>
<p>Based on this model, installation scripts generate web sites specifically aimed for various purposes, intranet, project management, gaming.</p>
<p>This version introduces also an XML based processor that automatically generates functional modules based on the underlying relational model.</p>
<p>In a different area, a new theme is introduced. This theme explores the possibilities of table-less design and adapts its links on the basis of the modules available in the site.</p>


]]>
                              
                              </body>
                              <promote>1</promote>
                            </node>

                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.0.0 released</title>
<created>2006-04-14</created>
                              <body>
                              
                              
<![CDATA[

<p>sifbuilder 1.0.0 opens the way to a generic configuration definition framework allowing automatic creation of web sites on different content management systems.</p>
<p>sifbuilder 1.0.0 extends the framework to OpenStar and introduces support to XOOPS. It adds a test environment and includes a set of use cases allowing remote installation of web sites. This version supports the specification of the installation parameters and  the site definition via uri references.</p>
<p>Specific to PostNuke, it provides an implementation of the pagesetter listmenu block for OpenStar, includes installation packages for tRSSNews, rssfeed2 and psak, and provides a pagesetter news template for rssfeed.</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>


                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.1.0 extends the sif framework to XOOPS and adds installation packages for
Drupal and Joomla cores</title>
<created>2006-07-08</created>
                              <body>
                              
                              
<![CDATA[

<p>sifbuilder 1.1.0 attaches the site, module, block and panel objects to the core and each installation package inherits the common installation api via the site object of its core.</p>
<p>Individual sips may export their own configuration api via the dao object that is accessible to other sips.</p>
<p>The installation framework covers PostNuke07 and PostNuke08. It covers also OpenStar4 and XOOPS2. Installation packages have been added for the Drupal and Joomla cores, that are now added to MDPro, Mantis, dotProject and Sugar. The framework for the installation of modules and blocks for those cores will be added in future versions. Experimentally, an installation packages for xampp for windows has also been added to the distribution.</p>
<p>The extension of the framework to XOOPS is done together with the inclusion of 50 packages for the installation packages for XOOPS modules, blocks and themes. A sif theme is among these
packages.</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>

 
                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.2.0 extends the sif framework to Drupal</title>
<created>2006-08-06</created>
                              <body>
                              
                              
<![CDATA[

<p>This release of sifbuilder extends the sif framework to Drupal supporting version 4.7.3.
The distribution includes installation packages for some Drupal modules and themes.</p>
<p>It comes with two site profiles, sif and intranet. The xml template for the sif profile creates 
a Drupal site with the sif theme. It shows how to interface with the permissions modules
activate system modules, configure blocks in panels, insert nodes and configure vars.
It shows also how to create a block and add links to the block.</p>
<p>The template for the intranet profiles creates a site installing various themes including 
aquasoft, foundation, interlaced, internet_services, kubrick, meta, bluemarine_smarty, 
box_grey_smarty and sets slash as default. 
It installs also some modules such as survey, advuser, filemanager, acidfree,
article, jstools, wforms, ldap_integration, linksdb, monitor, og, worklog,
project, site_map and hof.
It shows also how to add entries to the navigation and the primary links blocks.
</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
 
                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.2.1 released</title>
<created>2006-08-24</created>
                              <body>
                              
                              
<![CDATA[

<h2 class="title" style="clear: both">sifbuilder 1.2.1 adds new installation packages</h2>
<p>This release includes installation packages for XOOPS20_core_xoops_2_0_15, OpenStar4_core_OpenStar_4_03, PostNuke07_mod_pagesetter_6_3_0b3 and xampp1_core_xamppwin32_1_5_3a.</p>
<p>xampp will be installed to support the configuration of the site passed in siteParmams.</p>
<p>This version includes also the migration of the sif theme to PostNuke. This is the theme currently used in http://www.sifbuilder.com.</p>
<p>A few fixes have also been added, notably to rsync and sif_sip. With this, it is now possible to specify the siteParams defining the site in a sif bin to be used as 'php sifcmd.php url_of_sib'.</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
                             <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder interaction with the cores</title>
<created>2006-09-09</created>
                              <body>
                              
                              
<![CDATA[

<p>Whenever sifbuilder installs a component, it follows the following actions:</p>
<ol type="1"><li>
<p>Process. Manage package versions, dependencies, and conflicts</p></li><li>
<p>Control. Control the version of the site package (core or module) to be installed. This is taken from the sip installation package. Check whether that package is already installed in the site and get the installed version</p></li><li>
<p>Transpose. Download and explode the site package source if not available</p></li><li>
<p>Transfer. Copy the package files from the packages repository to the site (this may remove information of the pre-update status</p></li><li>
<p>Config. Configure the site parameters. Done normally only with the installation of the core</p></li><li>
<p>Install or Upgrade the package as required. Installation is dependent on the type of package. Installation of a module usually includes initialization and activation. Installation of a theme may imply activation of that theme</p></li><li>
<p>Build. When sifbuilder runs against a site definition template, the previous actions are followed by configuration of panels and blocks, setting of system variables and permission, and creation of content.</p></li></ol></div>
<p>These actions are carried out by sifbuilder in a single session relying as much as possible on the interfaces offered  by the site core and its modules. In optional conditions, sifbuilder should neither modify the code of the core nor import code from it.</p>
<p>The easiness with which sifbuilder may interact with a WCM system is determined by three features of the cores:</p><div class="itemizedlist"><ul type="disc"><li>
<p>Exposure. The exposure refers to the functionality offered by the core and components to an external application. It is dependant on an API. When the level of exposure is low, extending or modifying the behavior of the application is done by modifying the code and not by adding functional components to a repository</p></li><li>
<p>Segmentation. The segmentation refers to the separation between the presentation and the logic code. When the level of segmentation is low, calls to a function may generate undesired output intended for user interaction</p></li><li>
<p>Contextualization. Contextualization refers to the possibility of entering the code once the global status has evolved. Usually, wcm systems are designed to allow a single package action in a session. With a low  level of contextualization, installing various themes or upgrading a module is difficult. This may be provoked by the use of static variables, include instead of include_once, or unbundled code in files</p></li></ul>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>

 
                             <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.2.2 released</title>
<created>2006-09-27</created>
                              <body>
                              
                              
<![CDATA[

<h2 class="title" style="clear: both">sifbuilder 1.2.2 covers update of drupal modules and clone of WCM sites</h2>
<p>sifbuilder 1.2.2 extends the support to the automatic generation and maintenance of Drupal sites. With this version it is now possible to create a Drupal site -based on the XML declarative definition of the modules, blocks, themes, permissions and nodes that compose it- and automatically update modules when installation packages for new releases are available.</p>
<p>sifbuilder comes with the sif theme for Drupal. A sample site using the sif theme and automatically generated with the <a href="http://www.sifbuilder.com/downloads/sib_drupal47_sif_sif.xml">template</a> is <a href="http://www.sifbuilder.com/sifbuilder/d501/">this</a> . </p>
<p>Interacting with the permissions module, sifbuilder supports activation of system modules and definition of configuration variables. It enables also the creation of blocks and the configuration of blocks in panels.</p>
<p>It is also possible to create content nodes of different types and add entries to the navigation and the primary links blocks</p>
<p>sifbuilder supports the installation of themes. Its first release supporting Drupal includes installation packages for aquasoft, foundation, interlaced, internet_services, kubrick, meta, bluemarine_smarty, box_grey_smarty and sets slash as default. Some of the installation packages for Drupal modules are survey, advuser, filemanager, acidfree, article, jstools, wforms, ldap_integration, linksdb, monitor, og, worklog, project, site_map and hof. </p>
<p>Another Drupal sample site automatically generated by sifbuilder with the <a href="http://www.sifbuilder.com/downloads/sib_drupal47_intranet_slash.xml">template</a> is <a href="http://www.sifbuilder.com/sifbuilder/d502/">this</a>  .</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>

                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder upgrade of Drupal sites</title>
<created>2006-09-28</created>
                              <body>
                              
                              
<![CDATA[

<h2 class="title" style="clear: both">Upgrade of Drupal sites</h2>
<p>In a WCM system, updates refer normally to the core or to the modules.</p><p class="bold"><span class="bold"><strong>Drupal core update</strong></span></p>
<p><a href="#">http://drupal.org/upgrade/tutorial-introduction</a> describe the update procedure for Drupal. sifbuilder implements the update of the core in the installation package for Drupal 4.7.3. Its scope is limited to the sites based \on 4.7 series.</p><p>The update process involves three steps, update of the schema, update of the file system and site configuration, management of contrib modules and themes.</p>
<p>In Drupal, the core schema identification system is not related to the version of the core. It is not registered either in the file system or in the schema at the time of installation. Ideally, the core version should be accessible as a variable in a configuration file. The schema update functions should be exposed in a class dependent on the core. The 4.7 series releases do not modify the structure of the schema and drupal47_core_drupal_4_7_3 simply shows how the schema core would be updated if it would.</p>
<p>The update of the file system and the contributed modules and themes is done in the following steps:</p>
<ol type="1"><li><p>Copy the site file system to a temporary folder</p></li><li>
<p>Copy new file system to site folder</p></li><li>
<p>Copy files from backup to site folder: .htaccess, sites/default/settings.php</p></li><li>
<p>Copy files from backup to site folder:</p></li></ol>
<p><span class="bold"><strong>Update of Drupal modules</strong></span></p><p>n the most general case, a module is updated when, in the course of its installation, a previous version is found on the target site. Module are usually updated copying the module file system to the site modules folder and eventually updating the database schema structure and data.</p>
<p>The steps in this procedure are:</p><div class="orderedlist"><ol type="1"><li>
<p>For the module to be installed, get the version available, either on the local instance of sifbuilder on the update server</p></li><li>
<p>Check if the module is already installed and, if that is the case -as it is assumed in this note-, get the version on the site.</p></li><li><p>Update the module file system</p></li><li>
<p>Update the module schema structure and data</p></li><li>
<p>Update the site configuration for the module</p></li></ol></div><p>In general, if the status of the module on the site is kept in the site schema, the specification of the update version vector may be recalculated at step 4. Otherwise, that information must be transferred from step 2.</p><p>The update of Drupal modules is influenced by the following factors:</p>
<ul type="disc"><li>
<p>The version of the module package refers to the version of the core.</p></li><li><p>There is an sequential module schema version coded in the update functions in the module install file.</p></li></ul>
<p>To facilitate univocous module reference and enable versioning control, the date of last modification of a module is added to the release version. Thus, the sif installation package drupal47_mod_acidfree_4_7_0R060831 refers to the Drupal acidfree module for Drupal core 4.7 last modified on 31 August 2006. Each package release is associated to its hash value. This means that, unfortunately, the Drupal module repository cannot be used as the only sifbuilder module server.</p>
<p>For what concerns update of the module file system, sifbuilder update of Drupal packages assumes that the package file system is replaced by the contents in the new package distribution.</p>
<p>For what concerns update of the schema, an important design principle is that the update data and functions are provided by the module package and that it is called by reentrant functions in the core, ie. that the core API and the module design are contextualizable. In Drupal, includes/install.inc is not contextualizable. To generalize the update of modules, the schema version management functions in that file are recoded in the sifbuilder Drupal core module class and are called locally by the module activate (to set the schema version) and update functions (to retrieve and update it).</p>
<p>Once the update vector has been identified, the Drupal core module update function loads the install file for that specific module and identifies the update functions from the registered version of the schema up to that of the package being installed. Then, it sets the new version.</p>
<p>This enables the installation and update of a series of Drupal modules in a single sifbuilder session associated to a site template.</p>
<p>To describe the update facilities of Drupal sites in sifbuilder, we may run:</p>
<pre class="programlisting">&gt; php sifcmd.php file://template_for_site_to_be_updated.xml</pre><p>where template_for_site_to_be_updated.xml is the following xml file:</p>
<pre class="programlisting">&lt;xml&gt;
  &lt;sip_build_site&gt;
        &lt;site&gt;
          &lt;sips&gt;
            &lt;drupal47_core_drupal_4_7_2&gt;
             &lt;buildParams&gt;
              &lt;sip_install_package/&gt;
             &lt;/buildParams&gt;
            &lt;/drupal47_core_drupal_4_7_2&gt;

            &lt;drupal47_mod_project_4_7_0R060725&gt;
             &lt;buildParams&gt;
              &lt;sip_install_package/&gt;
             &lt;/buildParams&gt;
            &lt;/drupal47_mod_project_4_7_0R060725&gt;
 
            &lt;drupal47_mod_acidfree_4_7_0R060720&gt;
             &lt;buildParams&gt;
              &lt;sip_install_package/&gt;
             &lt;/buildParams&gt;
            &lt;/drupal47_mod_acidfree_4_7_0R060720&gt;
          &lt;/sips&gt;
        &lt;/site&gt;
  &lt;/sip_build_site&gt;
&lt;/xml&gt;</pre><p>This will install a Drupal 4.7.2 site as well as the filemanager module release on 24 April 2006 and the acidfree module released on 20 July 2006.</p>
<p>Then, if we run:</p><pre class="programlisting">&gt; php sifcmd.php file://template_with_updated_packages.xml</pre>
<p>with the template file</p><pre class="programlisting">&lt;xml&gt;
  &lt;sip_build_site&gt;
        &lt;site&gt;
          &lt;sips&gt;
            &lt;drupal47_core_drupal_4_7_3&gt;
             &lt;buildParams&gt;
              &lt;sip_install_package/&gt;
             &lt;/buildParams&gt;
            &lt;/drupal47_core_drupal_4_7_3&gt;

            &lt;drupal47_mod_project_4_7_0R060908&gt;
             &lt;buildParams&gt;
              &lt;sip_install_package/&gt;
             &lt;/buildParams&gt;
            &lt;/drupal47_mod_project_4_7_0R060908&gt;

            &lt;drupal47_mod_acidfree_4_7_0R060831&gt;
             &lt;buildParams&gt;
              &lt;sip_install_package/&gt;
             &lt;/buildParams&gt;
            &lt;/drupal47_mod_acidfree_4_7_0R060831&gt;  
          &lt;/sips&gt;
        &lt;/site&gt;
  &lt;/sip_build_site&gt;
&lt;/xml&gt;</pre>
<p>the following will happen:</p>
<p>Drupal core will be updated from 4.7.2 to 4.7.3. The modules filemanager and acidfree, in their original version, will be copied to the updated site.</p><p>Then, the last version of the module filemanager will be installed. Since currently there is no more recent release, the installation of that module will be ignored.</p>
<p>Then, sifbuilder will install acidfree from 31 August, 2006. The system will identify that this is an update. It will therefore copy the new file system to the Drupal modules folder.</p>
<p>Then, it will find that the schema version in the system table -set by the previous installation- is 1 and that the new package has a update function for schema version 2. Therefore, the acidfree_update_2 will be run and the new schema version will be set in the database, ending the process.</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>


                            <node>
                              <nodetype>blog</nodetype>
<title>the art of backup in sifbuilder</title>
<created>2006-09-28</created>
                              <body>
                              
                              
<![CDATA[

<p>sifbuilder 1.2.2 covers backup, restore and clone of web sites and pods. A pod is a site within a site folder, similar to the prefixed tables within a db instance. .The reason to introduce the pod was supporting the creation of multiple sites within the same folder, not necessarily the web root.</p>
<p><span class="bold"><strong>Pod backup</strong></span></p><p>To backup a pod, it must exist first.  A pod may be created with</p>
<pre class="programlisting">&gt; php sifcmd.php b 
 --sifpacksdir=../sifpacksdir
 --sifnetsite=sbd501_at_localhost 
 --siburi=file://./sibs/sib_drupal47_drupal_bluemarine.xml -x -f</pre><p>NOTE: do not do this, in particular do not use the -f -x options, if you do not know what it implies.</p>
<p>Once the pod is created, the backup is done with </p>
<pre class="programlisting">&gt; php sifcmd.php backup_pod --sifnetsite=sbd501_at_localhost -f</pre>
<p>Since there may be many site pods, we specify it with the --sifnetsite option that defines the parameters of the site in sifnet_config.php, that may be modify to respond to local configuration, or sifnet_config_local.php, if this has been created.</p>
<p>This command will create a file, in this case bck_pod_200609190012_d501.zip, under the siftmp/tmpBackup folder. That tar contains three files:</p>
<ul type="disc"><li>
<p>podcf.xml, with the parameters of the backuped site (including the reference to the pod)</p></li><li><p>poddb.sql, with the sql dump of the pod database</p></li><li><p>podfs.zip, with the tar file of the pod file system</p></li></ul>
<p>The definition sql instructions in poddb.sql are build on the result of Metabase functions MetabaseListTables, MetabaseGetColumnNames and MetabaseListTableFields.</p>
<p><span class="bold"><strong>Pod restore</strong></span></p>
<p>Once the pod is backuped, in order to test the restore function, first we empty it:</p>
<pre class="programlisting">&gt; php sifcmd.php x --sifnetsite=sbd501_at_localhost -f</pre>
<p>That command will empty the site tables and remove the file system. Then, the pod may be restored with:</p>
<pre class="programlisting">&gt; php sifcmd.php restore_pod
 --siburi=file://./siftmp/tmpBackup/bck_pod_200609190012_d501.zip -f</pre>
<p>This command will extract the files in the backup tar. The file system in podfs.zip will be copied to the site file system and the poddb.sql will be run against the dbms depending on the site information in podcf.xml.</p>
<p class="bold"><span class="bold"><strong>Pod clone</strong></span></p>
<p>A pod is cloned from the backup of the source one. </p><pre class="programlisting">&gt; php sifcmd.php restore_pod --sifnetsite=sbd502_at_localhost 
 --siburi=file://./siftmp/tmpBackup/bck_pod_200609190012_d501.zip -f</pre>
<p>The difference from the restore is that, in this case, the parameters of the target site are taken from the sif instruction.</p>
<p>In this case, the site parameters, in particular those relevant to the target file system and database, are taken from the sbd502_at_localhost class as defined in sifnet_config.php or sifnet_config_local.php, instead of those in the backup tar file.</p>
<p>Yet, the site will not work. It is still necessary to configure it according to those parameters. This is done by</p>
<pre class="programlisting">&gt; php sifcmd.php sip_configure_site --sifnetsite=sbd502_at_localhost </pre>
<p>The site configuration depends on the core and the core sip must implement the sip_sip_configure_package function. In the case of PostNuke, this function will modify the /config.php file, in Drupal it will modify /sites/default/settings.php, in XOOPS it will be the /mainfile.php file.</p>
<p>Backup functions in sifbuilder are for development purpose and not intended to replace commercial products. </p>



]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
                             <node>
                              <nodetype>blog</nodetype>
<title>The last sifbuilder 1.2.2 problem</title>
<created>2006-09-29</created>
                              <body>
                              
                              
<![CDATA[

<h2>The last sifbuilder 1.2.2 problem solution</h2>
<p>The release of sifbuilder 1.2.2 has been delayed for some days because of a problem in the automatic generation of the sif site (<a href="#">http://www.sifbuilder.com/</a>), that is part of the tests before submitting a release.</p>
<p>The problem appeared in the news listed in the center block. When showed in full mode, they did not respond to the html formatting. When looking at the source, most of the angle brackets were escaped.</p><p>The site is generated applying to templates (sif beans of sibs) in the sibs folder. First, sib_PostNuke07_sif_sif.xml, that installs and configures the core, modules, blocks and them, and the sib_PostNuke07_sif_content.xml that adds the content. When the site was built with the  content alone, however, they rendered fine.</p>
<p>The first ideal was that the theme (sif) was affecting the presentation of the news. To test this, the installation of the theme was removed from the sif sib and the site built from afresh on the local host. The problem, however, persisted. Then, we though that it could be some configuration variable but, after recreating the site without specification of modvars the problem remained. The debug did not show anything relevant either.</p>
<p>The last option was removing each module in the sib and rebuild a new site each time to try to find out which component was creating the problem. Following a series of tries it appeared that the cause was in the installation of PostNuke07_mod_v4blib. This is a sip that simply copies files to the target site and has no impact on the database. </p>
<p>We could have left the sif site without the calendar block but it was kind of a pity and it would have prevented form using the useful modules in the v4b series. More important, exchanging a problem by a doubt is not a good option.</p>
<p>Thus, we removes folders and files from the source package in sifpacksdir and recreated the site from scratch. Finally, the problem appeared to be come from includes/pnApi.php that replaces the one in the target site.</p>
<p>With the editor we compared both files, the original in the target site and the one provided by the package. There are not many differences and the first guess was the right one: the removal of the pnConfigGetVar('safehtml') != '1') condition when applying htmlspecialchars to the output data. </p>
<p>The modification of those lines, in line with the original file, is encoded in the sip_sip_transfer_modifyFiles function in the mod_v4blib sip.</p><p>Since the reason for that change is not clear, better not to draw any particular conclusion.</p>



]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.3.3 released</title>
<created>2006-11-06</created>
                              <body>
                              
                              
<![CDATA[

<p>Release 1.3.3 of sifbuilder includes the installation package for <span class="bold"><strong>PostNuke .763</strong></span>. Having this release installed, these instruction generate the sifbuilder site (<a href="#">http://www.sifbuilder.com/</a>) with that version of PostNuke:</p><pre class="programlisting">&gt; php sifcmd.php b --sifpacksdir=../sifpacksdir --sifnethost=localhost 
 --sifnetsite=sbpn_at_localhost --siburi=./sibs/sib_PostNuke07_sif_sif.xml -x -f
&gt; php sifcmd.php b --sifpacksdir=../sifpacksdir --sifnethost=localhost 
 --sifnetsite=sbpn_at_localhost --siburi=./sibs/sib_PostNuke07_sifcontent.xml -f</pre><p>This requires that the <span class="emphasis"><em>localhost</em></span> host and the  <span class="emphasis"><em>sbpn_at_localhost</em></span> are properly defined in <code class="filename">sifnet_config.php</code> (use the -f and -x options ONLY if you are aware of the implications).</p>
 <p>The sip installing that version of PostNuke includes a new version of the <span class="bold"><strong>upgrade</strong></span> function intended to support pn .76 sites. Sites having the v4b library installed are also upgraded. By copying pnApi, however, the PostNuke version appears as not increased. To test the update function it is necessary to have a .76 site available. This can be done with</p>
<pre class="programlisting">&gt; php sifcmd.php t tca001 -f -v</pre><p>The command creates the sifbuilder site with the PostNuke .7.6.2 core. then, it updates the site to pn .7.6.3. That test case, defined in <code class="filename">sifnet_usecases.php</code>, relies on the same localhost and sbpn_at_localhost host and site. Run the command without the -v option to see the parameters behind the use case and modify it as necessary. Alternatively, run
 <pre class="programlisting">
 &gt; php sifcmd.php i --sifnethost=localhost --sifnetsite=sbpn_at_localhost 
  --sifpacksdir=../sifpacksdir PostNuke07_core_postnuke_0_7_6_2 -x -f
 &gt; php sifcmd.php file://./sibs/sib_PostNuke07_sif_sif.xml --sifnethost=localhost 
  --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir -f
 &gt; php sifcmd.php file://./sibs/sib_PostNuke07_sif_content.xml --sifnethost=localhost 
  --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir -f
 &gt; php sifcmd.php file://./sibs/sib_PostNuke07_sif_delta.xml --sifnethost=localhost 
  --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir -f
 &gt; php sifcmd.php u --sifnethost=localhost --sifnetsite=sbpn_at_localhost 
  --sifpacksdir=../sifpacksdir PostNuke07_core_postnuke -f
 </pre>with localhost and sbpn_at_localhost configured in <code class="filename">sifnet_config.php</code>. The first and last commands are enough to test the site upgrade. (Use the -f option ONLY if you are aware of the implications.)</p>
<p>The upgrade process copies the resident site to a tmp backup folder. Then a new core site is generated and all the existing files in the modules, themes, includes and images folders that are not found in the new release are copied from the backup. This applies also to <code class="filename">config.php</code> and <code class="filename">config-old.php</code> in the root folder.</p><p>To update the sites with v4blib  installed, the files <code class="filename">index.php</code>, <code class="filename">personal_config.php</code>, <code class="filename">includes/pnAPI.php</code>, <code class="filename">includes/pnLang.php</code>, <code class="filename">includes/pnMod.php</code>, <code class="filename">includes/pnRender.class.php</code>, <code class="filename">includes/pnSession.php</code> and <code class="filename">images/icons</code> overwrite the new ones. Note that this may create problems in some installations.</p><p>sifbuilder 1.3.3 incorporates the installation package for <span class="bold"><strong>postnuke 0.8.0.0MS2</strong></span>. This version of the core may be installed with the sourceforge block, the Topics module and sysconfig with </p><pre class="programlisting">&gt; php sifcmd.php b --sifpacksdir=../sifpacksdir --sifnethost=localhost 
 --sifnetsite=sbpn_at_localhost --siburi=./sibs/sib_PostNuke08_env.xml --dev -x -f</pre>
<p>or, just for the core, with</p><pre class="programlisting">&gt; php sifcmd.php b --sifpacksdir=../sifpacksdir --sifnethost=localhost 
 --sifnetsite=sbpn_at_localhost PostNuke08_core_postnuke --dev -x -f</pre><p>Note the --dev option that is required for the sips related to development packages. Use the -f and -x options ONLY if you are aware of the implications.</p>
<p>Installation packages for some PostNuke modules are also included.</p><p>PostNuke07_mod_mediashare_2_0_0 is the sip for <span class="bold"><strong>mediashare 2.0.0</strong></span>. sips are associated to packages -that they be cores, blocks, modules or themes-. A sip normally gets and installs a package. Building a sip may imply creating an entry in the Main Menu, showing a block in a panel or setting a theme as default. sips are not intended to create content, that is inherently independent from packages. This is done with the sibs (the sif beans in the sibs folder) that typically describe the complete target site: core, modules, blocks, theme and content. Content nodes are however limited to text, such as the pagesetter publications in the <a href="#">http://www.sifbuilder.com/</a> site. The line of development of sifbuilder includes support for tar sibs. It should then be possible publish a sib and have a content rich site automatically generated. This will be dependent, however, on the programmatic interfaces of the media management modules.</p>
<p>PostNuke07_mod_pnFreeChat_1_02 installs <span class="bold"><strong><span class="bold"><strong>pnFreeChat</strong></span> 1.02</strong></span> It builds with an entry in Main Many and shows how to install the pnFreeChat block.</p><p>PostNuke07_mod_netquery_4_0 installs <span class="bold"><strong>Netquery 4.0</strong></span> . We have not seen a way to install this module on PostNuke .7.6.3 without modifying <code class="filename">pnuser.php</code> to have browserinfo -used in <code class="filename">netquery_user_main.htm</code> (380-383)- assigned by Sniffer. The package build includes the activation of the Sniffer module.</p><p>Following the experience with the sif site, a few sips are fixed and delivered with a new version.</p><p>The stable <span class="bold"><strong>PostNuke07_mod_pagesetter_6_2_0</strong></span> and development PostNuke07_mod_pagesetter_6_3_0b5 sips modify the /pntemplates/plugins/function.pagesetter_ezcommentsCount.php function to call EZComments getall with mod param and get the correct number of comments per publication category and item.</p>
<p>The <span class="bold"><strong>PostNuke07_mod_v4bPostCalendar_4_03</strong></span> sip modifies the calendar view adding the  <code class="filename">PostCalendar/pntemplates/plugins/function.pc_view_select.php</code> from previous releases to the package installation.</p>
<p>This release includes also a few modifications to the sifbuilder and sif libraries and some sips files that determine the modification of the release number.</p><p>The <span class="bold"><strong>SifFso cp_diff_r</strong></span> function has been changed to behave recursively in all subfolders. This is used in the pn update function, in particular to cover the <code class="filename">includes/blocks</code> and <code class="filename">includes/language</code> subfolders. The flat behavior of the previous code is done by cp_diff_d, in line with cp_d.</p><p>The <span class="bold"><strong>sif_sip sip_sip_install_site_wrapper</strong></span> function has been set to ignore upgrade of packages in force mode if reinstall is not requested.</p>
<p>In this release, sifbuilder stop on error has been activated in <code class="filename">sifConfigParams.php</code>.</p>
  


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
                            
                             
                             <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.4.5 released</title>
<created>2006-12-07</created>
                              <body>
                              
                              
<![CDATA[

<h2 class="title" style="clear: both"></a></h2>
<p>The purpose of sifbuilder is allowing the declarative definition of a web site by a XML file and the automatic generation and update of the site independently of the core and modules. The automatic update of the core and installed packages requires the comparison of the locally installed releases against those in an update server and the application of the update procedures to the local core and modules when required.</p>
<p>To check this process, we create a WCM site from scratch with</p>
<pre class="programlisting">&gt; php sifcmd.php b --sifnethost=localhost --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir 
    PostNuke07_core_postnuke PostNuke07_mod_netquery PostNuke07_theme_sif --doupdate -f -x</pre>
    <p>The site parameters (location, credentials, admin user) are defined in the sbpn_at_localhost class, that must be correctly specified in <code class="filename">sifnet_config.php</code>. The site will be created on the sifnethost host (assigned to localhost in that command), that must also be defined in <code class="filename">sifnet_config.php</code>, with the site packages available in <code class="filename">../sifpacksdir</code>. If the site packages (core, modules, themes) are not there, sifbuilder will try to download them from the corresponding package host. Since we use the -f option, we assume that all those parameters are correctly defined -test it without that option first to see if the site and credential parameters are correctly set-, and since we use the -x option, the file system and database of the site defined by sifnetsite will be emptied -another reason not to use the -f option it if not completely sure-</p>
<p>That command creates a site with the PostNuke core, the Netquery module and the sif theme. Since we want to test the automatic update functions of sifbuilder, we have to run this command on a old distribution of sifbuilder contains outdated sips for the core and packages, such as sifbuilder 1.2.2. In fact, the resulting site will be based on the PostNuke 0.7.6.2 core and will include Netquery 3.3 with the sif theme applied as default.</p>
<p>To check the status of the site, we switch a more recent version of sifbuilder, and run</p>
<pre class="programlisting">&gt; php sifcmd.php rlist --sifnethost=localhost --sifnetsite=sbpn_at_localhost -f</pre><p>That function will show, among other entries, the following:</p>
<pre class="programlisting"> 71. PostNuke07_core_postnuke       0.7.6.1a +   Content management system
 72. PostNuke07_core_postnuke       0.7.6.2  + * Content management system
 73. PostNuke07_core_postnuke       0.7.6.3  +   Content management system
 74. PostNuke07_core_postnuke       0.7.6.4  =   Content management system
101. PostNuke07_mod_netquery        3.2      +   Whois, DNS, port check, ping, tracerou
102. PostNuke07_mod_netquery        3.3      + * Whois, DNS, port check, ping, tracerou
103. PostNuke07_mod_netquery        4.0      +   Whois, DNS, port check, ping, tracerou
104. PostNuke07_mod_netquery        4.0.5    =   Whois, DNS, port check, ping, tracerou
175. PostNuke07_theme_sif           1.0      = * sif Xanthia theme</pre>
<p>That table indicates, with an asterisk, the package releases installed in the just generated site, PostNuke07_core_postnuke 0.7.6.2 and  PostNuke07_mod_netquery 3.3 , and indicates also that, in the new distribution of sifbuilder, there are installation packages (sips) for more recent versions of those packages.</p>
<p>To update the site, always using sifbuilder 1_4_5 or above, we run the same command that generated the site:</p>
<pre class="programlisting">&gt; php sifcmd.php b --sifnethost=localhost --sifnetsite=sbpn_at_localhost --PostNuke07_core_postnuke PostNuke07_mod_netquery PostNuke07_theme_sif --doupdate -f</pre>
<p>but without the -x option which, as discussed, empties the site before starting the installation process. While in the first case the packages were logically not available and the latest release for each package was installed, in this case sifbuilder identifies that the version of the theme package is the same and nothing is required but, on the contrary, there are new versions for the core and the netquery module and, therefore, tries to update them. This is done by calling the update function in the individual sips with, in general, call the update function in the individual packages. The update of the core, however, requires a more complicated process including restoring the folders for modules and themes that we available in the site to be updated. </p>
<p>After applying the installation command to the already generated site, the status shown by rlist is the following:</p>
<pre class="programlisting"> 71. PostNuke07_core_postnuke       0.7.6.1a +   Content management system
 72. PostNuke07_core_postnuke       0.7.6.2  + * Content management system
 73. PostNuke07_core_postnuke       0.7.6.3  +   Content management system
 74. PostNuke07_core_postnuke       0.7.6.4  = * Content management system
101. PostNuke07_mod_netquery        3.2      +   Whois, DNS, port check, ping, tracerou
102. PostNuke07_mod_netquery        3.3      + * Whois, DNS, port check, ping, tracerou
103. PostNuke07_mod_netquery        4.0      +   Whois, DNS, port check, ping, tracerou
104. PostNuke07_mod_netquery        4.0.5    = * Whois, DNS, port check, ping, tracerou
175. PostNuke07_theme_sif           1.0      = * sif Xanthia theme</pre>
<p>The latest release of the core and the packages have been installed. Though it is possible configuring sifbuilder to get information about the packages interrogating the core, it is important to note that currently, by default, the status of the site packages is obtained from the sifbuilder installation register. Thus, the output is correct when the site has been generated and maintained by sifbuilder. Installing a package on a site that has it already installed outside the sif framework could provoke undesired effects. </p>
<p>Once the update procedure is tested with that site configuration, it is tested with the complete sif site and contents.</p>
<pre class="programlisting">&gt; php sifcmd.php file://./sibs/sib_PostNuke07_sif_sif.xml --sifnethost=localhost 
   --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir -f -x</pre>
<p>That command creates a site similar to <a href="#">http://www.sifbuilder.com/</a> as defined in the <code class="filename">sib_PostNuke07_sif_sif.xml</code> file in the sibs folder. This means that the core, theme, blocks, modules and configuration instructions specified in that sib are applied or activated. The correspondence between the XML file and the resulting generated site is the <span class="bold"><strong>f</strong></span>irst major objective of sifbuilder. Once again, this is run on the sifbuilder 1.2.2 distribution. </p>
<p>Then we load the content with</p>
<pre class="programlisting">&gt; php sifcmd.php file://./sibs/sib_PostNuke07_sifcontent.xml --sifnethost=localhost 
   --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir -f</pre>
<p>This command creates the sifbuilder news entries that appear in the sifbuilder site front page as pagesetter publication items in the SFNews category of the News01 publication type. The <code class="filename">sib_PostNuke07_sifcontent.xml</code> sif bean (the name has slightly changed in the 1.4.5 version of sifbuilder) calls the PostNuke07_pgpub_News01 sip and passes a pagesetter schema and the news items in the form of XML elements as parameter. The schema in the sib file includes the News01 publication type, which defines the type of publication, including its custom fields and the workflow to apply for approval of each publication item as well the key to the templates to use to render the publication items as a list or individually. Besides the publication type, each pagesetter schema defines also the [tree of] categories of the publication. In this case we define a single category. Within each category, we create the individual publication items. In short, an XML element passed to sifbuilder defines the structure of the news, the hierarchy how they are organized, the templates to use for presentation and the individual news item content.</p>
<p>We may choose do a backup of the site before updating it. As said before, these operations should always be done on a development host first.</p>
<pre class="programlisting">&gt; php sifcmd.php backup_pod --sifnetsite=sbpn_at_localhost -f</pre>
<p>The backup sif command creates, in the <code class="filename">tmp/tmpBackup</code> folder; a zip with three files: a zip file with the site file system, a SQL file containing the SQL statements to reproduce the site database -built using the Metabase library-; and a metadata file containing the site definition, including the site and database credentials.</p>
<p>To test the update function in sifbuilder, we run the command that generated the site originally, this time from the sifbuilder 1.4.5 folder without the -x option.</p><pre class="programlisting">&gt; php sifcmd.php file://./sibs/sib_PostNuke07_sif_sif.xml --sifnethost=localhost 
   --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir -f --doupdate</pre>
<p>The process, that may take some time to complete, will result in an updated sif site. This is the <span class="bold"><strong>s</strong></span>econd objective of sifbuilder, introduce the automatic update of open source multi-author composite Web Content Management sites.</p>
  


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
                            
                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.4.5 upgrade of postnuke cores</title>
<created>2007-01-07</created>
                              <body>
                              
                              
<![CDATA[

<h2 class="title" style="clear: both"></h2>
<p>Testing new releases of sifbuilder usually implies locally creating relatively complex new cm sites based on one or more of the sif supported cores. For example,</p>
<pre class="programlisting">&gt; php sifcmd.php file://./sibs/sib_drupal47_sif_sif.xml --sifnethost=localhost --sifnetsite=sbd4_at_localhost
 --sifpacksdir=../sifpacksdir --doupdate --dev -x
&gt; php sifcmd.php file://./sibs/sib_PostNuke07_sif_sif.xml --sifnethost=localhost --sifnetsite=sbpn07_at_localhost 
 --sifpacksdir=../sifpacksdir --doupdate -x
&gt; php sifcmd.php file://./sibs/sib_XOOPS20_sif_sif.xml --sifnethost=localhost --sifnetsite=sbx2_at_localhost 
--sifpacksdir=../sifpacksdir --doupdate -x</pre>
<p>These commands will create drupal, postnuke or xoops sif sites, as defined by sbd4_at_localhost, sbpn07_at_localhost and sbx2_at_localhost, on the localhost, instantiated in <code class="filename">sifnet_config.php</code>. (The -f option may be used when the site parameters are correctly defined).</p>
<p>If the modifications include providing new module installation packages, then those are installed, for example as with</p><pre class="programlisting">&gt; php sifcmd.php b --sifnethost=localhost --sifnetsite=sbpn_at_localhost --sifpacksdir=../sifpacksdir 
  PostNuke07_mod_netquery --doupdate</pre><p>When the changes are relevant to the sifbuilder site (http://www.sifbuilder.com/sifbuilder/pn/), the changes are applied to the site on the hosting server, usually with the tc905 sif usecase.</p>
  <p>In the case of release 1_4_5 of sifbuilder, the changes implied (among others) updating the sifbuilder site from postnuke 0.7.6.2 to 0.7.6.4. </p><p>Updating the cm cores may involve operations on the site database and on the site file system. In this particular case, the data model was not altered. Normally, the affected files cover the core files and classes, the configuration files and those related to packages contributed by open source authors and installed on the site being updated. These packages may be modules, themes and blocks. Though usually there are specific repositories for these contributions, they are not always implemented as new entries there. </p>
  <p>The postnuke core update procedure in sifbuilder, for what concerns the site file system, implements the approach of cleaning the original site, copying the new core file system and copying back the difference from the backup of the original to the new file tree. This is implemented, in a similar was as in other cores, in the sip_sip_upgrade_package function of PostNuke07_core_postnuke_0_7_6_4_sip.php. </p>
  <p>Since the system data on the database is not changed, the installation of the existing modules is usually fulfilled by copying the modules related directories and files to the updated core file system. This is not the case if the installation of a module affects the core files. Given the specific nature of v4b, this happens with the v4blib package. This is why the upgrade procedure of the core calls, as part of it, sip_sip_transfer_package for that package. This implies copying the v4b library files from the site package to the include directory -together with other files to the images, language and module folders-. </p>
  <p>Relevant to the behavior of sifbuilder, however, is the replacement of the core pnAPI.php file, which is part of the normal installation of the vb4 library. The specific aspect of this covered in this note is the change of the value of the _PN_VERSION_NUM constant. sifbuilder needs to interrogate a core to know if a module is installed as well as to get its installed release version. Often, this information is usually retrieved from the value of a constant. Ideally it should be accessible through a non-static variable from an interface function or a configuration file. </p>
  <p>By changing the value of that constant, the installation of the v4blib package influences the information retrieved when sifbuilder interrogates postnuke on the version of the core installed. Because of that, it affects the overall management of modules and packages dependencies. This made necessary rewriting the PostNuke07_mod_v4blib_4_04_sip.php installation package for v4blib to avoid that.</p>
  


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node> 
 
                             <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder, postnuke and pagesetter</title>
<created>2007-02-01</created>
                              <body>
                              
                              
<![CDATA[

<p>We were programming a product catalogue. It seemed reasonable to use OsCommerce 2ms2. We had a tree of categories and a list of products linked to images. It should be possible to ask for products and get the requests approved or refused with the inventory updated as a result. The product records were available in XML with associated image files on the file repository. We scripted the upload of those records into OSC.</p>

<p>Once that was done, it seemed useful installing some contributions to the site, for example all_prods, which allows the display of all the inventory products with pagination and buy-now, inventory_qty, which shows a column in the edit order view indicating the remaining quantity of every item in the order, and others. To install these contributions we had to modify the core code. That work was not easy and we thought that it would be useful to script those changes allowing others to automate those installations and authors to contribute with their own installation packages. Then, it seemed a good idea to use BTS, a nice template structure that eased the customization of the layout of the site. However, it turned out that the modifications on the code for the various contributions differed depending whether BTS was installed or not. Hence, it seemed necessary to incorporate control of dependencies and conflicts among contributions. At that time we incorporated the idea of the profiles as groups of contributions responding to specific site purposes.</p>

<p>When the sif framework was ready, it seemed a good idea creating a site for it. A friend was hosting some postnuke sites and we were pleased to work on the same core. </p>

<p>Unsurprisingly, it seemed logical trying to automate the creation of the PostNuke site for sif in the way in which sif automated the creation of OsCommerce sites.</p>

<p>PostNuke offered an API to the core functions, which had been the subject of discussion in the OSC forums for a long time. However, different as the implementation could be, the concepts underlying that work remained the same: for a multi-author composite open program, we had to introduce control on the package installation process depending on the site status and the installation series, we had to provide a conventions to allow releasing packages with their installation code, and to provide a mechanism to automatically install and update the packages composing the site.</p>

<p>The only new conceptual element introduced since the time of sif was the installation bean (sib), understood as a xml file describing the composition and configuration of the site that may be used to automatically create or update it. </p>

<p>Another new element, not really new but convergent, was the automatic generation of a module. Once the creation of a site was automated on the basis of the constituent modules, blocks and themes, it was only logical trying to automate the generation of the logic code on the basis of the basic initial conditions: the data model.</p>

<p>Since then, the sif approach has proved being usable independently of the core and supports the automation of sites on xoops, openstar or drupal. </p>

<p>However, the sifbuilder site (http://www.sifbuilder.com) has maintained the postnuke core. The reason for this is the capability to automate the catalog of sips and directly show them in a menu block, the sips block.</p>

<p>That catalogue is implemented as a pagesetter set of publications, similar to those shown on the front page. Pagesetter is a module that combines management of content (categories and publications), processing logic (workflows) and presentation (publication templates). The best way to look at the structure of pagesetter publications is with a pagesetter schema, for example the SipsSchema schema in the sib_PostNuke07_sif_sif.xml sib included in the sifbuilder distribution and that is used to create the sifbuilder site. The first part of the schema, the category element, defines the classification of publications in referable groups. Each category is a group under the items multiple instance element. In our case, we have foreseen one level tree of categories for the various types of site packages: cores, modules, themes, and so on. The other root element under the publication schema is the publication element. This data structure specifies, among others, the workflow to be applied to the process of publishing publications, the template to be used to render the various views of the publications, and the fields that compose a publication. </p>

<p>The main entities in a pagesetter publications conceptual framework are the category type (or list, recorded in the lists table), the category item (or list item, in the listsitems table), the publication type (or pubtype, in the pubtypes table) and the publication item (for each pubtype, a pubdata table contains the publication items).</p>

<p>Each list type is identified by a list id (lid) and its title. The list items associated to a list type compose the tree of categories that host the publication items.  Each list item has a title and the fields that allow the creation of a hierarchical structure.</p>

<p>Publication types contain a title, a reference to the set of templates that control the presentation of the publication lists and items, the fields controlling ordering of publication items, the workflow to be applied to the process of publishing publications, and others.</p>

<p>Publication types are referred to from the pubfields table thus defining the data fields associated to a publication. Each field is described in the pubfields table, including the publication type (tid). Besides the tid, each field contains a fix set of attributes: the name, title, description, and tags: istitle, ispageable, issearchable and others. The type controls how the field will be processed.</p>

<p>Items of a publication type are stored as records in a pubdataX table. Each pubdata record has the attributes common to pagesetter publications, such as the publication date, and the custom fields specific to a publication type.</p>
 
<p>With this conceptual framework, it is easy to automate the creation and publication of the sips catalogue. To make things as easy as possible, we consider a sip record as a news item.  The News publication type is provided in the pagesetter distribution and comes with a set of templates. We associate the sip release to the news headline and the sips are grouped in list items where the site package type (core, mod, theme, block, hack, other) corresponds to the category title (listitem full title). Relying on a standard publication type, pagesetter takes care to create the menu block.</p>

<p>The process of creation of the catalogue is called when the site is created. The sip_sifbuilder_insert_sipitems function in the PostNuke_mod_sifbuilder sip is called from the site generator sib. That function calls the sifapi sif_get_sif_entries, relying itself on SifDb -as other SifApi functions that need to have the list of available installation packages-, on the  that gets the sip entries in the sifbuilder distribution. 

<p>With the list of sip records is converted to a list of pagesetter news, the pagesetter dao inserts the individual sip records.</p>

<p>The reason to tell all this is that sifbuilder 1_4_5 incorporated a fix to the pagesetter sip. In fact, the pagesetter sip, as other site package sips, interprets symbolic identifiers and translates them to numeric ids before interacting with the module APIs. In order to register a publication item, the data passed to the pagesetter sip includes the publication type title. Based on this, it is necessary to determine the tid. Previously, a new tid was always created (ie. a new publication type or list). The last version of the sip controls if the publication type exists and creates it only if it doesn't.</p>
</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
                             <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.5.6 released</title>
<created>2007-06-05</created>
                              <body>
                              
                              
<![CDATA[

<p>Good morning, good afternoon, good evening developers from accross the <a href="http://www.futurestraders.com/">globe</a>, welcome to the sif scriptable web site programming show.</p>
<p>After a few months, and responding to zousands and zousands of comments and suggestions that have made of our program one of the most exclusive ones in the world, the builder presents a new release that adds the installation packages with which we have built our new <a href="http://www.sifbuilder.com>">site</a> and recalls some of the ideas implemented in sifbuilder.</p>
<p>First of all, sifbuilder is a coaching programme. It coaches the installation process: interprets and adapt the user request, controls the initial conditions, fetches required components, puts them in the right place, installs upgrades or deletes packages, configures the target site, creates content and delivers style. For each package, this information is coded in the installation package (<b>sip</b>). See details <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&amp;func=viewpub&amp;tid=2&amp;pid=7">here</a></p>
<p>To make the automatic installation process as complete as possible, the program controls package releases and the request to install a package is translated into the installation of the most recent release of that package. Before installing a package, the program identifies the whole tree of required dependencies and matches it against the status of the target site (isn't it great that postnuke 0.8 and drupal 5.0 introduce management of module dependencies.) If a package is already installed with a previous release, the program will translate the installation into an upgrade. This, generalized, enables the automatic update of a whole site.</p>
<p>Since the main target of sifbuilder is the creation of open WCMs, independently of the underlying core, the program incorporates abstraction of site, module, block and package objects which are instantiated for every supported core, now postnuke, xoops, drupal and joomla. Basic functions are made available: apply theme, add block to panel, add row to block.</p>
<p>Though the target site may be built with a series of calls to those objects, sifbuilder introduces the sib, which is a xml file describing the site to be built. To enable the declarative definition of a site, the main object properties have a symbolic key which is then translated to the keys handled by the various cores and modules.</p>
<p>Since the configuration is a specific step in the installation process, it is <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=viewpub&tid=2&pid=10">possible</a> to backup a site and restore it with a new configuration, thus allowing to create a clone of a site in a different server. Some jommla contributions do that!</p>
<p>As an evolution of the code generation approach, sifbuilder aims to provide automatic module generator modules for the supported cores taking as input the relational model of the relevant data. Such a module is available for postnuke and hopefully soon also for drupal. The ideal is being able to define the data model of an application defined in a XML file and having the basic logic code automatically generated, with the user, session and presentation being managed by the postnuke, xoops, drupal or joomla cores.</p>
<p>A natural way of using sifbuilder is to define a target site in a sib and have it installed many times through script in different locations and operating systems. It may happen that the target site is available through a ssh connection. This is the case with sourceforge. For <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=viewpub&tid=2&pid=13">this</a>, sifbuilder incorporates the functions to automate the connection to the destination server and the installation of the target site.</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>

 
                            <node>
                              <nodetype>blog</nodetype>
<title>site vectorially described by a XML file</title>
<created>2007-06-06</created>
                              <body>
                              
                              
<![CDATA[

<p>The sifbuilder bean <a href="http://www.sifbuilder.com/downloads/sibs/sib_PostNuke08_sif_sif.xml">sib_PostNuke08_sif_sif.xml</a> describes the <a href="http://www.sifbuilder.com site">sifbuilder site</a>. This XML file includes the instructions that the sifbuilder program runs to build the site. The file reads that, given the the runParams parameters that determine how the program will be executed and the siteParams paraneters that specify where the site will be built, apply the listed instructions per package to build the target site.</p>
<p>This sib contains just one runParams element which sets the --dev option. This setting removes the default filter that forces that only estable packages are considered for installation. Other runParams may be specified in the command line. Here it seems natural setting this option since the site will be based on the installation package for a core still in development. The sipParams, that define the site where the packages operations will be applied may also be passed here or in the command line.</p>
<p>Processing the sips elements, the PostNuke08_core_postnuke sip installs the <b>postnuke 0.8</b> <a href="http://www.postnuke.com/">core</a>. Then, the welcome message is set. It is important to note that this instruction is run within an inner level wrapped by sip_build_site element. The reason for this is that, while the core is installed in absence of an installed site with an abstract site context, the configuration of welcome message requires the postnuke core to be available since it relies on core functions. sip_build_site makes that the context is rechecked. Then it finds that the site is just available. Naturally, the target site should not exist before running the core sip or the runParams should include a directive to remove it before starting. The sifbulider distribution includes installation packages for three release candidates of postnuke 0.8. The sib element refers only to postnuke 08 but the program recognizes wich is the latest relase available and installs it. A specific release could have been indicated in place of the package name. Version 0.8 of postnuke is very much improved in relation to 0.76 to be an application framework in the sense of the <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=viewpub&tid=2&pid=7">sifbuilder framework</a>. However, sifbuilder would like to init the site with pninit before a package installation in a site generation, and then login as admin. This is not possible yet. Hard setting configuration properties of the block upon creation is something sifbuilder would like not to see.</p>
<p>The installation of the <b>Topics</b> module follows that of the core. It is not included in the system module collection and it is a dependency of pagesetter. As such, it could have been automatically incorporated to the installation tree by the request to install pagesetter. This element adds also a topic to the configuration.</p>
<p>The the <b>sif theme</b> is installed. It could be released as a theme package. It is however included in the PostNuke08_theme_sif_1_0 installation package itself. This theme is similar to the one available for PostNuke07. As part of the installation and activation of the theme, some standard blocks are desactivated and a new one of type menu is created. This one will contain the entries for the user modules that will be installed later. The sif theme contextually presents the user access functions: login and register at conection time, account and logout when the user is logged on, and admin when the registered user is the site administrator.</p>
<p>After the installation of the core and theme, four sets of packages are installed: the packages related to content management around pagesetter; the packages for creation and visualization of news feeds including rssfeed and trssnews; communication packages inclundig pnFreeChart, pnSkype, googleMap, netquery and xSiteMap; and productivity packages, in particular pnFlashGames.</p>
<p><a href="http://noc.postnuke.com/projects/ezcomments/">EZComents</a> is also a dependency of pagesetter. The latest version of this module for which there is a sip available is 1.5. This module, hooked by pagesetter, allows registered users to issue comments for pagesetter news.</p>
<p>The <b><a href="http://www.elfisk.dk/">pagesetter</a></b> module and the pagesetter publications support the creation of content in the site. Besides the installation of the module, the pagesetter sip hooks pagesetter to EZComments, then sets module vars for pagesetter, installs the pagesetter schema for the type of publication associated to the sip records, the installation packages for the varoius types of site packages. Besides this, the PostNuke08_mod_pagesetter sip i this sib creates the SIPS listmenu block which is proposed by pagesetter to automate the presentation of publications in a block. The sips publication is defined in the schema with a file upload file so that users may contribute with their own installation packages. The pagesetter conceptual model is described <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=viewpub&tid=2&pid=15">here</a></p>
<p>The PostNuke08_pgpub_News01 sip creates the news publication that will be presented in the central block in the from page. This is set with the startpage variable.</p>
<p>The istallation of <b><a href="http://www.elfisk.dk/">photoshare</a></b> is also part of the pagesetter set of modules that manage content. It may be used to manage the pictures shown in publications. Unfortunatelly it is not obvious how to use it in a programmatic environment.</p>
<p>After pagesetter is installed, the sib installs a series of individual modules. The first one is <b><a href="http://openstar.postnuke.com/modules.php?op=modload&name=News&file=article&sid=51">pnFreeChat</a></b>. As all the contributions from <b><a href="http://openstar.postnuke.com/index.php?cb=-1&cm=-1">openstar</a></b>, this module is functionally and technically very interesting. Since the Main menu, that in postnuke 0.8 include lines to the installed modules with user access, is desactivated, a row for this and other modules is added to the MENU block, wich is weighted less to be shown first on the right panel.</p>
<p><b>pnSkyp</b> is also an interesting module provided by <b><a href="http://www.cmods-dev.de/index.php">cmods-dev</a></b>. The module may be seen at work <a href="http://www.cmods-dev.de/index.php">here</a>. Unfortunatelly, the icons provided by skype, that reflect the status of the target skype user as controlled by the module, do not fit in the aesthetics of the sif theme. Because of this, a simple link to skype called by the module is added by the MENU block.</p>
<p>Then <b>pnForum</b> is installed. The PostNuke08_mod_pnForum element in the sib instructs sifbuilder to install also the Forum staticstics block and to create a forum category. The block is not shown. Great pacakge, but exiting the program upon initialization error when the tables cannot be created ... the opposite of the sif <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=viewpub&tid=2&pid=7">philosophy.</a></p>
<p><b>GoogleMap</b> is another most interesting module contributed by <b><a href="http://dev.pnconcept.com">pnconcept</a></b>. Google is creating a most relevant programming environment and integration with its apis will be fundamental for many web sites. Note that a <a href="">key</a> is required to present the google maps. Pitty not having been able to find <b>pnWikka</b>, also from pnconcepts, that responds to an important functional need.</p>
<p>The <b>netquery</b> sip, following the PostNuke08_mod_netquery instruction, installs version 4.11 of the module of the netquery module from <b><a href="http://virtech.org/tools/">virtech</a></b>. This is an excellent module and a perfect package that fully responds to the standard behavior of sif packages. As such, it could be installed directly from a sib withouth having the need to have an associated installation package.</p>
<p><b>rssfeed</b> is another important module from <b>Craig R. Saunders</b> at mtrad that responds to a core functional need. Unfortunatelly, the <a href="http://www.mtrad.com">mtrad</a> seems not to be available. The <b>rssfeed_pgnews</b> element creates a template for pagesetter news. The news generated by rssfeed may be visualized activating the trssdisplay block part of the <b>tRSSNews</b> module.</p>
<p>The <b><a href="http://www.pnflashgames.com/">pnFlashGames</a></b>, <b><a href="http://games.knet.ca/">GamePack</a></b>, billiard set is there for this. Note that games are not classified and arrive through the all games link.</p>
<p>The <b><a href="http://www.invalidresponse.com/">xSiteMap</a></b> from <b>Devin Hayes</b> shows a map of the site.</p>
<p>The PostNuke08_block_sourceforge element in the sib builds and activates a block referring to the program host.</p>

]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
 
                            <node>
                              <nodetype>blog</nodetype>
<title>Initial conditions</title>
<created>2007-06-10</created>
                              <body>
                              
                              
<![CDATA[

<p>A good friend got curious about sifbuilder. Must be the attaction of the unknown. Graduated in Physics as he is, I told him that using sifbuilder to generate an operational web site was obvious. It was a surprise when he came back and asked me to demonstrate that it was obvious. And, to start with, he wanted to know why PHP was required. Of course the explanation for such a reaction is that he directly moved from a very successful career as COBOL programmer to an even more successful one as j2ee project manager. Demonstration by implementation should suffice.</p>
<p><b>xampp</b> is a reasonable option to get everything necessary to make sifbuilder work and build web sites with different open web content management cores. In the most frequent case of a linbox <a href="http://www.ibm.com/developerworks/linux/library/l-xampp/">this page</a> seems a useful infosource. Let's suppose however a winbox for the sake of dealing with the exceptions first.</p>
<p>Download the distribution from <a href="http://www.apachefriends.org/en/index.html">the apachefriends site</a>. for the method, the builder erased the complete existing programming environment and downloaded the <a href="http://www.apachefriends.org/en/xampp-windows.html#641">XAMPP Windows 1.6.2</a> zip file.</p>
<p>Choosing a random location, the builder downloaded it to D:\ALL\sifbuilder_local and <a href="http://sourceforge.net/projects/sevenzip/">seven zipped</a> it to here generating D:\ALL\sifbuilder_local\xampp. Let's call it $xampplocation. then, he cdded to $xampplocation and dos ran setup_xampp.bat.</p>
<p>Since the builder wanted to have php.exe directly available on the command line, he added $xampplocation\php to My Computer->Properties->Advanced->Environment->path and rebooted. This set the <b><a href="http://www.php.net/">PHP</a></b> programming enviroment. Configuration was tested with > php -v.</p>
<p>The builder wanted to maintain the d:/webroot/htdocs document root as it appears in the already vast bibliography on sifbuilder. Thus, he moved $xampplocation/htdocs to d:/webroot/htdocs and replaced $xampplocation\htdocs by d:/webroot/htdocs in files in $xampplocation. Changes were $xampplocation\apache\conf\httpd.conf (2 times), $xampplocation\apache\conf\extra\httpd-ssl.conf (1 time), $xampplocation\apache\conf\extra\httpd-xampp.conf (5 times) and it seems to work to set the <b><a href="http://apache.org/">apache</a></b> web server environment.</p>
<p>The <b><a href="http://mysql.org/">mysql</a></b> database server root password is set with $xampplocation\mysql\bin\mysqladmin -u root password pwd_root. There is a possibility that if a root password is used other than the one in the example the installation procedure fails. But, if the same one is used the whole system will surely fail.</p>
<p>It should now be possible to download sifbuilder and run it to create a postnuke, xoops, drupal or joomla site.</p>

]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
 
                             <node>
                              <nodetype>blog</nodetype>
<title>Code of style</title>
<created>2007-06-14</created>
                              <body>
                              
                              
<![CDATA[

<a href="http://www.youtube.com/watch?v=-wI6uAOHzvo">Details</a><br />

<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/-wI6uAOHzvo"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/-wI6uAOHzvo" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>


]]>
                              
                              </body>
                              <promote>1</promote>
                            </node>

 
                            <node>
                              <nodetype>blog</nodetype>
<title>sifbuilder 1.7.8 released</title>
<created>2007-06-15</created>
                              <body>
                              
                              
<![CDATA[



<p>This <a href="https://sourceforge.net/project/showfiles.php?group_id=125777">release</a> of sifbuilder fixes a few things noted when generating <a href="http://www.siufbuilde.com/">the new version of the sifbuilder site</a></p>
<p>When creating a postnuke block with sifbilder, either with the common sip_configure_blocks function or sip-processed such as with tRSSNews_blockupdate_blocks, the sif interface to postnuke-blocks implemented in the PostNuke08_core_postnuke_0_8_0_0_MS3 sip checks if the block exists in the target site and behaves accordingly. In this version, the Blocks user api call getall is called with inactive=>true arguments to get also the non active blocks.</p>
<p>The SifApi sif_run_usecase function is fixed to pass sips arguments when installing sites remotely through a sifrelation. Was thought to install a module with a newly available sip.</p>
<p>A few fixes in the sifrelation object methods support now uploading sections of the program to the sif directory in the remote nethost. This includes sifnet_upload_to_sifdir to upload new sibs, notably to generate new content. upload in sifnet_ssh2pwd_windows_relation behaves now recursively to copy folders from sifTmp/tmpUpload to the remote nethost sif directory.</p>
<p>Commands with nethost set are now processed by the sif API and passed to the sifnetrelation object. This executes the sif action on the remote host.</p>
<p>The templates PG-News01 of the News01 pagesseter publication look now a bit more like those of a blog. The teaser comes functionally closer to and will eventually replace the text field. To help moving to the news body, a readme link appears now on the footer. The pn- styles have been added to the publication template css and make the footer look nicer. To allow the publication of <a href="http://www.youtube.com/">youtube videos</a> sip_set_configvars within the PostNuke08_pgpub_News01 sip element in the sib_PostNuke08_sif_sif.xml sif enables object, param and embed tags in AllowableHTML site vars.</p> 
<p>The SIPS publication has now a file upload field that permits registered users contribute <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=view&tid=1&filter=category^sub^1">sips</a>.</p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>

 
                             <node>
                              <nodetype>blog</nodetype>
<title>The easiest case</title>
<created>2007-06-16</created>
                              <body>
                              
                              
<![CDATA[



<p>The running environment, the web server and the database server are in <b><a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&amp;func=viewpub&amp;tid=2&amp;pid=20">place</a></b>. The latest version of sifbuilder has been <a href="http://sourceforge.net/project/showfiles.php?group_id=125777">downloaded</a> and exploded to, let's say, win d:/sifbuilder_1.7.8/. Have a parallel folder ../sifbuilder_local/ created. It will contain the downloaded site packages and the local configuration files.</p>
<p>Let's suppose that the site is to be created locally. Let's suppose also that we want to install the <a href="http://www.sifbuilder.com/">sifbuilder site</a> currently based on the <b><a href="http://www.postnuke.com/">postnuke</a></b> core.</p>
<p>Run the sib definition of the site to create the site as defined in the <b><a href="http://www.sifbuilder.com/downloads/sibs/sib_PostNuke08_sif_sif.xml">sib</a></b>.</p>
<p><b>php sifcmd.php <a href="http://www.sifbuilder.com/downloads/sibs/sib_PostNuke08_sif_sif.xml">file://./sibs/sib_PostNuke08_sif_sif.xml</a> --sifpacksdir=../sifbuilder_local/packages --sifnetconfigfile=../sifbuilder_local/sifnet_config.php --sifnetsite=sbpn_at_localhost --dev</b></p>
<p>The semantics of the sib_PostNuke08_sif_sif sib was described <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&amp;func=viewpub&amp;tid=2&amp;pid=19">here</a></p>
<p><b>--sifpacksdir</b> option is important. sifbuilder relies on the site packages downloaded from the net. By storing them outside the sifbuilder folder, updating the program will not remove them.</p>
<p>Even more important though for other reasons are sifnetconfigfile and sifnetsite. sifnetconfigfile indicates where sifnetsite is defined. And sifnetsite as here instantiated in <b>sbpn_at_localhost</b> is the class in that file defining the parameters of the target site to be built, or the site itself in a certain sense. Having these options on file permits to refer to each site configuration by name. Take <a href="http://www.sifbuilder.com/downloads/files/sifnet_config.php.txt">sifnet_config.php</a> in the sifbuilder root folder as example. Wrong setting of those options may erase a whole system. No need to look for a demonstration.</p>
<p>The <b>--dev</b> option is here necessary to trap the postnuke 0.8MS3 sip that corresponds to a development site package.</p>
<p><b>-x</b> may be added to the command to remove the site root and empty the site database before starting the installation. Do that only if you have the possibility of and know how to restore your working environment.</p>
<p><b>-f</b> may be used to force the execution of the command in non-interactive mode. It can be used and will be used if you are a programmer when you know to be in control of what you are doing.</p>
<p>Web sites with other cores may be created in the same way with other sibs. for <b><a href="http://www.xoops.org/">xoops</a></b> use the sib_XOOPS20_sif_sif.xml sib, for <b><a href="http://www.drupal.org">drupal</a></b> sib_drupal47_sif_sif.xml and for <b><a href="http://www.joomla.org">joomla</a></b> use sib_joomla1_sif_sif.xml.</p>
<p>The installation of the site is normally followed by the creation of content. Can be done with</p>
<p><b>php sifcmd.php <a href="http://www.sifbuilder.com/downloads/sibs/sib_PostNuke08_sif_sif.xml">file://./sibs/sib_PostNuke08_sif_content.xml</a> --sifpacksdir=../sifbuilder_local/packages --sifnetconfigfile=../sifbuilder_local/sifnet_config.php --sifnetsite=sbpn_at_localhost --dev</b></p>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
 
                             <node>
                              <nodetype>blog</nodetype>
<title>We debbit to her</title>
<created>2007-06-17</created>
                              <body>
                              
                              
<![CDATA[



<h2 class="title" style="clear: both">sifbuilder interaction with the cores</h2>
<p>Whenever sifbuilder installs a component, it follows the following actions:</p>
<ol type="1"><li><p>Process. Manage package versions, dependencies, and conflicts</p></li><li><p>Control. Control the version of the site package (core or module) to be installed. This is taken from the sip installation package. Check whether that package is already installed in the site and get the installed version</p></li><li><p>Transpose. Download and explode the site package source if not available</p></li><li><p>Transfer. Copy the package files from the packages repository to the site (this may remove information of the pre-update status</p></li><li><p>Config. Configure the site parameters. Done normally only with the installation of the core</p></li><li><p>Install or Upgrade the package as required. Installation is dependent on the type of package. Installation of a module usually includes initialization and activation. Installation of a theme may imply activation of that theme</p></li><li><p>Build. When sifbuilder runs against a site definition template, the previous actions are followed by configuration of panels and blocks, setting of system variables and permission, and creation of content.</p></li></ol>
<p>These actions are carried out by sifbuilder in a single session relying as much as possible on the interfaces offered  by the site core and its modules. In optimal conditions,</p>

<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/oUG0GjdoGHE"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/oUG0GjdoGHE" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>

<p>sifbuilder should neither modify the code of the core nor import code from it.</p><p>The easiness with which sifbuilder may interact with a WCM system is determined by three features of the cores:</p>
<ul type="disc"><li><p>Exposure. The exposure refers to the functionality offered by the core and components to an external application. It is dependant on an API. When the level of exposure is low, extending or modifying the behavior of the application is done by modifying the code and not by adding functional components to a repository</p></li><li><p>Segmentation. The segmentation refers to the separation between the presentation and the logic code. When the level of segmentation is low, calls to a function may generate undesired output intended for user interaction</p></li><li><p>Contextualization. Contextualization refers to the possibility of entering the code once the global status has evolved. Usually, wcm systems are designed to allow a single package action in a session. With a low  level of contextualization, installing various themes or upgrading a module is difficult. This may be provoked by the use of static variables, include instead of include_once, or unbundled code in files</p></li></ul>


]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
                             <node>
                              <nodetype>blog</nodetype>
<title>The bar and the page</title>
<created>2007-06-24</created>
                              <body>
                              
                              
<![CDATA[

<p>google offers a <a href="http://translate.google.com/translate_t?hl=en">translation service</a>. It will translate text and public web pages from Spanish, French, German, Italian, Portuguese, Russian, Chinese, Japanese, Arabic and Korean into English. That changes the value of localization of web sites and sets a new level for the return on the cost to implement it.</p>
<p>To get that service available, it is enough adding a <a href="http://translate.google.com/translate_buttons?hl=en">button</a> to the browser's Links Toolbar. A drag and drop from <a href="http://translate.google.com/translate_buttons?hl=en">this page</a> will work. This opens the question on the role of a web content site. Where is the border between the browser and the content. This note is edited with the <a href="http://www.mozilla.org/products/mozilla1.x/">mozilla composer</a>. I can do most of the web editing tasks with that.<br/></p>
<p>The tool bars were introduced in the late nineties. My toolbars include the button to the weather page, the list of recently published titles, the links to my email boxes and the control to the web search.</p>
<p>So there seems that there is a certain transfer of function from the page to the browser. However, there are functions that remain associated to the content and not to the container. This is when it resembles a working space. In this line we liked the <a href="http://wallstrip.blip.tv/file/276181/">wallstrip interview</a> with Andy Swan presenting <a href="http://mytrade.com/">mytrade.com</a>. Not only when he identifies Youtube as competitor in the sense that they both compete for time from users. Also because the beta site supports fully personalised customization that promises an interesting working environment for the next but one professional life.</p>
<p>Despite the fact that we are currently interested on the content management side of the window, some may find rewarding putting to hard probe the de2en google translator with the lyrics in text. suess wie sie sagt. <br/>
</p>
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/kfyTS2tJu74"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/kfyTS2tJu74" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>

<p>Lyrics in Latain alphabet from <a href="http://www.lyricsbox.com/wir-sind-helden-lyrics-8f8f6.html">lyricsbox</a></p>
<p>
Komm mal ans Fenster komm her zu mir <br/>
Siehst du da drueben gleich da hinterm Wellblechzaun<br/>
Da drueben auf dem Platz vor Aldi haben sie<br/>
unser Abbild in Stein gehaun<br/>
<br/>
Komm auf die strasse komm her zu mir<br/>
Ueberall Blumen und Girlanden halb zerknuellt<br/>
Sieht so aus als haetten die unser Denkmal heute Nacht<br/>
schon ohne uns enthuellt<br/>
<br/>
Hol den Vorschlaghammer<br/>
Sie haben uns ein Denkmal gebaut<br/>
und jeder Vollidiot weiss<br/>
dass das die Liebe versaut<br/>
Ich werd die schlechtesten Sprayer<br/>
dieser Stadt engagieren<br/>
Die sollen Nachts noch die Truemmer <br/>
mit Parolen beschmieren<br/>
<br/>
Komm auf die Beine komm her zu mir<br/>
Es wird bald hell und wir haben nicht ewig Zeit<br/>
Wenn uns jetzt hier wer erwischt sind wir fuer immer vereint<br/>
in Beton und Seligkeit<br/>
<br/>
Hol den Vorschlaghammer<br/>
Sie haben uns ein Denkmal gebaut<br/>
und jeder Vollidiot weiss<br/>
dass das die Liebe versaut<br/>
Ich werd die schlechtesten Sprayer <br/>
dieser Stadt engagieren<br/>
Die sollen Nachts noch die Truemmer <br/>
mit Parolen beschmieren
<br/>
Siehst du die Inschrift da unten bei den Schuhen<br/>
Da steht in goldener Schrift wir sollen in Ewigkeit ruhen<br/>
<br/>
Hol den Vorschlaghammer<br/>
Sie haben uns ein Denkmal gebaut<br/>
und jeder Vollidiot weiss<br/>
dass das die Liebe versaut<br/>
Ich werd die schlechtesten Sprayer <br/>
dieser Stadt engagieren<br/>
Die sollen Nachts noch die Truemmer <br/>
mit Parolen beschmieren<br/>
<br/>
Sie haben uns ein Denkmal gebaut<br/>
und jeder Vollidiot weiss<br/>
dass das die Liebe versaut<br/>
Ich werd die schlechtesten Sprayer <br/>
dieser Stadt engagieren<br/>
Die sollen Nachts noch die Truemmer <br/>
mit Parolen beschmieren<br/>
</p>

]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
 
                             <node>
                              <nodetype>blog</nodetype>
<title>The success and the calm</title>
<created>2007-06-25</created>
                              <body>
                              
                              
<![CDATA[



<p>
Blade Runner appeared on the screens 25 years ago. Based on the novel Do Androids Dream of Electric Sheep? by Philip K. Dick, it was coldly received at home and became a mass success only years later, in particular after 1992 with the release of the director's cut version, and with its distribution on video. </p>
<p><i>"I've seen things you people wouldn't believe... Attack ships on fire off the shoulder of Orion... I watched c-beams glitter in the dark near the Tanhauser Gate. All those moments will be lost in time... like tears in the rain. Time to die."</i> evokes the attraction of space and emphasizes individualism. The calm in the untergang reinforces the replicant's aspiration to a human existence. The night, the mist, the city. <a href="http://www.br-insight.com/2001/03/12/the-city-eyes and-christ/">An interesting analysis of the film</a> deepens into the relationship between visual perception, memories, feelings and knowledge. <a href="http://www.youtube.com/watch?v=ZDhWrLyXiyc">Vangelis' Memories of Green</a> composition accompanies the superb interpretation by Rutger Hauer and Sean Young.</p>

<p>Five years before, on the other side of the Atlantic, David McWilliams had published <a href="http://www.youtube.com/watch?v=zPJnCEjECgE">The Days Of Pearly Spencer</a> that was highly appreciated only overseas. It became a chart hit in his country only in 1992 when a new version was released by Marc Almond. </p>
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/4VDS8uArR0A"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/4VDS8uArR0A" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object> <p>
David led a remarkable life that is narrated <a href="http://www.zenuk.com/links/page/davidmcwilliams.html">here</a> and <a href="http://www.davidmcwilliams.com/">here</a>. In common with the film, the song shows serene interpretation of strong emotions. It was based on a homeless man in Ballymena who was befriended by David and this song was his tribute to him.</p>
<p>
The song shares some points with Jethro Tull's <a href="http://www.youtube.com/watch?v=QqZmtq5LhFo">Aqualung</a>, the classic released by Ian Anderson in 1971. The subject, a homeless, and the distorsion of the voice. The <a href="http://www.collectin -tull.com/Albums/Lyrics/Aqualung.html">lyrics</a> were <a href="http://www.jtull.com/discography/aqualung/index.html">composed by his wife</a>,  were based on a poem by her or were inspired  <a href="http://www.j-tull.com/news/stbrides.cfm">by photos taken by her in London</a>, depending on the sources. Aqualung got its name from the sound of the song's character broken lung and voice in the cold winter that Anderson identified with the gurgling sound of the underwater diving gear. Yet both songs could not differ more on the headline.
</p>



]]>

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>
                            
                                                     
                            <node>
                              <nodetype>blog</nodetype>
<title>Through the mirror</title>
<created>2007-08-15</created>
                              <body>
                              
                              
<![CDATA[

<p>When in 2004 sifbuilder moved from an oscommerce contribution to a multi core site generator, it lost <a href="http://forums.oscommerce.com/index.php?showuser=33440">Carine's kind comments</a> and had to look for a host server. At that time, <a href="https://sourceforge.net/">sourceforge</a> supported the distribution of os programs and was introducing the <a href="https://sourceforge.net/project/admin/prweb.php?group_id=125777">web, shell and database services</a> for hosted projects. <a href="https://sourceforge.net/docs/F01/en/#top">Access to shell services</a> was available through SSH connections authenticated with SSH2 keys. sifbuilder supported the automatic generation of web sites on the localhost and those requirements seemed reasonable to try to automate the installation of sites on remote hosts, such as those of sourceforge. This was done introducing the sifnet concept based on the sifnethost, sifnetrelation and sifnetsite entities.<br /> </p>
<!--break-->
<p>A sifnetrelation establishes a relationhip between a lochost -usually instantiated by the local devhost- and a nethost -usually a remote host. This note will take as motiv the installation of a site on a nethost instantiated to sourceforge defined by the sfhost class in the sifnetconfigfile file-. The sifnetsite describes the site to be installed on the nethost. The relation is reflexive and transitive but, unfortunately, not commutative. The non equivalence may be read as 'having the site hosted on Linux matters'.</p>
<p>Currently, a sifnetrelation is based on a SSH connection -in the case of sourceforge, the connection is controlled by a SS2 pair of keys-. The origin of the relation -identified by the lochost- is a winbox hosting the sifbuilder development package; the destination point -identified by the nethost- is a Linux host offering the following services: a shell to the sifdir where the sifbuilder package will be transferred to, a database hosting the remote site database, and a webdir hosting the remote site file system.<br />
</p>
<p>On the origin winbox, we have available a SSH client -ex. <a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/">putty</a> among various <a href="https://sourceforge.net/docs/B01/en/#ssh_client">ssh clients</a> - and a tar/untar tool -in our case <a href="http://sourceforge.net/projects/sevenzip/">7-zip</a> - and we have created the private and public ppk keys following the sf <a href="http://sourceforge.net/docman/display_doc.php?docid=761&amp;group_id=1">instructions</a>. </p>
<p>The information on the lochost, the nethost, the sifnetsite and the type of sifnet relation (SS2 keys or login/password) is passed to sifbuilder in the sifnet_config.php file. A model of this file is included in the sifbuilder root folder. Normally, the customized file is stored in a parallel file tree as defined with the --sifnetconfigfile option. The following classes show the information assigned there.<br /> </p>
<p>The sfhost describes the target host at sourceforge. It extends a sifnet_linux_host and this a sifnet_host.</p>
<p style="font-family: monospace; font-size=-1;">class sfhost extends sifnet_linux_host<br />
{<br />
var $hostParams = array(<br />
'hosttype'=&gt;'linux'<br />
,'access'=&gt;'ssh2key'<br />
,'userdir'=&gt;'/home/users/m/my/myuser'<br />
,'sifdir'=&gt;'/home/users/m/my/myuser/myproject/'<br />
,'webdir'=&gt;'/home/groups/m/my/myproject/htdocs/'<br />
,'host_domain'=&gt;'myproject.sf.net'<br />
,'user_login'=&gt;'my_user_login'<br />
,'user_pwd'=&gt;'my_user_pwd'<br />
,'user_key'=&gt;'D:\\sf_private_key.ppk'<br />
,'php_bin'=&gt;'php '<br />
,'rexec_bin'=&gt;'ssh '<br />
,'rcp_bin'=&gt;'scp '<br />
);<br />
}</p>


<p>The devhost describes the local host, including the syntax of the local php, tar and remote exec commands.<br />
</p>
<p style="font-family: monospace; font-size=-1;">
class devhost extends sifnet_windows_host<br />
{<br />
var $hostParams = array(<br />
'hosttype'=&gt;'windows'<br />
,'access'=&gt;'local'<br />
,'userdir'=&gt;'.\\'<br />
,'sifdir'=&gt;'.\\'<br />
,'webdir'=&gt;'D:\\webroot\\htdocs\\'<br />

,'downloadsdir'=&gt;'D:\\webroot\\htdocs\\downloads\\'<br />

,'packagesdir'=&gt;'D:\\webroot\\htdocs\\downloads\\packages\\'<br />
,'host_domain'=&gt;'localhost'<br />
,'user_login'=&gt;''<br />
,'user_pwd'=&gt;''<br />
,'user_key'=&gt;''<br />
,'php_bin'=&gt;'php '<br />
,'zip_bin'=&gt;'"C:\\Program Files\\7-Zip\\7z.exe "
a -tzip '<br />
,'unzip_bin'=&gt;'"C:\\Program Files\\7-Zip\\7z.exe"
x '<br />
,'rexec_bin'=&gt;'D:\\BIN\\plink.exe '<br />
,'rcp_bin'=&gt;'D:\\BIN\\pscp.exe '<br />
);<br />
}<br /></p>



<p>The sfhost describes the remote host, including the syntax of the remote php, tar and remote exec commands, and the location of the SSH2 keys to be passed to the SSH client of the local host.
</p>


<p style="font-family: monospace; font-size=-1;">
class sfhost extends sifnet_linux_host<br />
{<br />
var $hostParams = array(<br />
nbsp; 'hosttype'=&gt;'linux'<br />
,'access'=&gt;'ssh2key'<br />
,'userdir'=&gt;'/home/users/m/my/myuser'<br />
,'sifdir'=&gt;'/home/users/m/my/myuser/myproject/'<br />
,'webdir'=&gt;'/home/groups/m/my/myproject/htdocs/'<br />
,'host_domain'=&gt;'myproject.sf.net'<br />
,'user_login'=&gt;'my_user_login'<br />
,'user_pwd'=&gt;'my_user_pwd'<br />
,'user_key'=&gt;'D:\\sf_private_key.ppk'<br />
,'php_bin'=&gt;'php '<br />
,'rexec_bin'=&gt;'ssh '<br />
,'rcp_bin'=&gt;'scp '<br />
);<br />
}<br />
</p>


<p>The remote site describes the site to be created on the remote host. This instance describes the structure of a sourceforge site but mirrors the structure and semantics of any site created or updated with sifbuilder. </p>

<p style="font-family: monospace; font-size=-1;">
class sbd501_at_sfhost extends sifnet_site<br />
{<br />
var $siteParams = array(<br />
'site_host'=&gt;'myproject.sourceforge.net'<br />
,'site_name'=&gt;'mysite'<br />
,'site_pod'=&gt;'d501'<br />
,'db_server'=&gt;'mysql4-m'<br />
,'db_database'=&gt;'db_myproject'<br />
,'db_prefix'=&gt;'d501_'<br />
,'db_prefix_sep'=&gt;''<br />
,'db_dbtype'=&gt;'mysql'<br />
,'db_tabletype'=&gt;'myisam'<br />
,'db_username'=&gt;'db_admin'<br />
,'db_password'=&gt;'db_admin_pwd'<br />
,'site_admin_username'=&gt;'my_user_login'<br />
,'site_admin_password'=&gt;'my_user_pwd'<br />

,'dir_fs_document_root'=&gt;'/home/groups/m/my/myproject/htdocs/'<br />
,'sys_temp'=&gt;''<br />
,'encodedpwd'=&gt;1<br />
,'enable_ssl'=&gt;0<br />
);<br />
}<br />

</p>
<p>To create the site on the remote sourceforge host server for a sourceforge project, we follow the following steps. Note that, when running in sifnet mode, the -v option launches the sifnet command in real mode. Without that option, the translated command will appear in simulation mode. Before running any of those commands, pick up any of the disclaimers in <a href="http://flyonwallstreet.blogspot.com/">here</a> and apply them to the rest of the note. Age quod agis. </p>
<p>Test the connection to the remote host with the ac001h admin case, as described in sifnet_usecases.php:<br />
</p>
<p style="font-family: monospace; ">&gt;php sifcmd.php a ac001h
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnethost=sbhost -v<br />
</p>
<p>This command will list the entries in the home dir in the remote host. Since the local sifbuilder distribution may have changed because of the development process or because new installation packages (sip) or installation profiles (sib) have been added, we create a new distribution. We create it with </p>
<p style="font-family: monospace; ">&gt;php sifcmd.php build_program
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php</p>
<p>
and its tar file.</p>
<p style="font-family: monospace; ">
&gt;php sifcmd.php sifnet_create_program_zip --sifnethost=devhost -v<br />
</p>
<p>Up to here the steps followed to create each new sifbuilder release package to be ftp uploaded to the sourceforge incomming area.  To create the remote site, we upload the tar file, located in the ./siftmp/tmpUplaod folder from the sifbuilder distribution root, to the remote host.</p>
<p style="font-family: monospace; ">&gt;php sifcmd.php sifnet_upload_program
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnethost=sfhost -v<br />
</p>
<p>
and we explode the tar there.</p>
<p style="font-family: monospace; ">&gt;php sifcmd.php sifnet_explode_package --sifnethost=sfhost
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php -v</p>
<p>
As it appears in that command and most of the examples of the site, the local sifnet config file is located in a parallel file tree. The same happens with the site packages that constitute the generated site. This is the time to create it. It can be done connecting to the site or with </p>
<p style="font-family: monospace; ">&gt;php sifcmd.php a ac001i
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnethost=sfhost -v</p>

<p>Since we want to use a single and locally edited customized config file, we upload it to the remote sifbuilder_local/ folder:</p>
<p style="font-family: monospace; ">&gt; php sifcmd.php a ac023
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnethost=sfhost -v</p>
<p>
sifbuilder takes care to <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&amp;func=viewpub&amp;tid=2&amp;pid=24">download</a> the site packages required to build the site. However, sourceforge does not allow establishing an outgoing httpd connection. It is therefore necessary to upload them to the sifbuilder_local folder. First we copy them to siftmp/tmpUpload/packages folder -since we plan to create a drupal site using the sib_drupal5_sif_sif.xml sib, we copy the site packages that correspond to the drupal5_core_drupal, drupal5_mod_views and drupal5_mod_site_map installation packages (sips) - and run</p>
<p style="font-family: monospace; ">&gt; php sifcmd.php sifnet_upload_packages --sifnethost=sfhost
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifpacksdir=../sifbuilder_local/packages </p>
<p>
Then, the site may be created. </p>
<p style="font-family: monospace; ">&gt; php sifcmd.php b --sifpacksdir=../sifbuilder_local/packages
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnetsite=sbd501_at_sfhost --sifnethost=sfhost
--siburi=./sibs/sib_drupal5_sif_sif.xml -x -f -v</p>
<p>
Running a sif command with -x means erasing the target site file system and dropping all the tables in the target database. -f means doing that without the predefine settings and without the possibility to fix them. -v means confirming those options in a remote site. Collect all the disclaimers in the site above before doing this.</p>
<p>The difference between that command and the usual sif commands used to generate a local site resides on setting the sifnethost option.  By setting the sifnethost option the command is translated into a remote instruction, in this case the command that creates the remote target site.</p>

<object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/6xhYk9PEmXA"></param><param name="wmode" value="transparent"></param> <embed src="http://www.youtube.com/v/6xhYk9PEmXA" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"></embed></object> 

<p>If the -v option is ommitted, the remote command is shown but not run. It shows</p>
<p style="font-family: monospace; ">&gt; D:\BIN\plink.exe -ssh -2 -l my_user_login -i
D:\LOCAL\sf_private_key.ppk myproject.sourceforge.net 
" php /home/users/m/my/myuser/myproject/sifcmd.php sif_sip_build_site
--dev
--expandsiteparams --noupd --emptypod --force --complete --dbgtype=both
--siburi=./sibs/sib_drupal5_sif_sif.xml
--site_host=myproject.sourceforge.net --site_name=mysite
--site_pod=d501 --db_server=mysql4-m --db_database=db_myproject
--db_prefix=d501_ --db_dbtype=mysql --db_tabletype=myisam
--db_username=db_admin --db_password=db_admin_pwd
--site_admin_username=my_user_login --site_admin_password=my_user_pwd
--dir_fs_document_root=/home/groups/m/my/myproject/htdocs/
--encodedpwd=1 --sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifpacksdir=../sifbuilder_local/packages
--siflochost=devhost
drupal5_core_drupal drupal5_theme_sif
drupal5_mod_views
drupal5_mod_site_map drupal5_script_locals "
</p>
<p>The result of these steps was a sourceforge site available <a href="http://sifbuilder.sourceforge.net/sifbuilder/d501/">here</a>, until it was removed in the natural course of things.</p>
<p>The <a href="http://www.sifbuilder.com/">sifbuilder site</a> was created and is regularly maintained following this process. if not automatic, the process is systematic. And every systematic process requires a table of definitions.</p>

<table RULES="ALL" FRAME="BOX" style="text-align: left; width: 624px; height: 172px;" border="1">
<tr>
<td style="vertical-align: top; font-weight: bold;">domain<br />
</td>
<td style="vertical-align: top; font-weight: bold;">terms<br />
</td>
<td style="vertical-align: top; font-weight: bold;">definition<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;">hostparams<br />
</td>
<td style="vertical-align: top;">usedir<br />
</td>
<td style="vertical-align: top;">root folder of the use work environment. Usually, the sifbuilder tar will be downloaded to this location.<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">sifdir<br />
</td>
<td style="vertical-align: top;">folder containing the working sifbuilder distribution. Usually, the result of exploding the sifbuilder tar to this location.<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">webdir<br />
</td>
<td style="vertical-align: top;">folder containing the root to the web environment.<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">access<br />
</td>
<td style="vertical-align: top;">type of authentication, currently ssh2key or ssh2pwd.<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;">siteParams<br />
</td>
<td style="vertical-align: top;">--site_name<br />
</td>
<td style="vertical-align: top;">folder under the webdir that will contain the target sites.<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">--site_pod<br />
</td>
<td style="vertical-align: top;">folder under that the site_name folder that will contain the specific target site. Plays, in a certain way, for the file system, the role of the prefix in the target database.<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;">runParams<br />
</td>
<td style="vertical-align: top;">--sifpacksdir<br />
</td>
<td style="vertical-align: top;"> indicates where the site packages (core, modules and themes) are downloaded. By storing them outside the sifbuilder folder, updating new versions of sifbuilder will not remove them.</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">--sifnetconfigfile<br />
</td>
<td style="vertical-align: top;">points to the file hosting the
classes
describing the target sites referenced by sifnetsite. The sample <a href="http://www.sifbuilder.com/downloads/files/sifnet_config.php.txt">sifnet_config.php</a> is included in the sifbuilder root folder. It should always be adapted to the local configuration before starting using sifbuilder.</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">--sifnetsite<br />
</td>
<td style="vertical-align: top;">refers to the class in the <b>sifnetconfigfile</b> with properties the site configuration options typically set during the installation of a new content management site. They coincide with the elements in the sifSiteParams.xml file in the sifbuilder root. Having these options on file permits to refer to each site configuration by name. Wrong setting of those
options may erase a whole system. No need to look for a demonstration.</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">--sifnethost<br />
</td>
<td style="vertical-align: top;">refers to the (usually remote) host where the sifcommands will be run. By setting this option, the normal sif commands are translated into remote execution commands using the information in the associated class defined in the sifnetconfig file.<br />
</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">-x<br />
</td>
<td style="vertical-align: top;">may be added to the command to remove the site root and empty the site database before starting the installation. Do that only if you have the possibility of and know how to restore your working environment.</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">-f<br />
</td>
<td style="vertical-align: top;">may be used to force the execution of the command in non-interactive mode. It can be used and will be used if you are a programmer when you know to be in control of what you are doing.</td>
</tr>
<tr>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;">-v<br />
</td>
<td style="vertical-align: top;">sifnet commands are run on the nethost by default in simulation mode. When the -v option is set, they run in real mode.<br />
</td>
</tr>
</table>

]]>                     

                              
                              
                              </body>
                              <promote>1</promote>
                            </node>


                            <node>
                              <nodetype>blog</nodetype>
<title>Catalogue of Functions</title>
<created>2007-08-18</created>
                              <body>
                              
                              
<![CDATA[

<p>"now will I tell the purpose of the sifbuilder functions and the functions in their order": the automatic generation of sites from a XML site definition specifying constituting modules, blocks, themes and content, and based on various core CMS -the specification files are located in the sibs folder in the sifbuilder distribution-; association of modules and themes to specific site profiles; management of dependencies and conflicts between modules and site components; structure the <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=viewpub&tid=2&pid=24">actions</a> constituting the creation of a site; access to the functions of the cores and modules from the command line; comparison of the version of installed packages against that of the most recent releases; update of modules in a site with those most recently released aiming to the automatic update of web sites; backup and restore of web sites; cloning of sites using site backup, restore and site configuration; generation of a module based on the XML representation of the relational schema as a means to automate the development of a Web application building of the functions offered by the CMS cores; installation of sites on remote hosts through SSH connections; creation or removal of multiple sites using use cases.</p>
<!--break-->
<p>These examples assume the configuration of target hosts and sites in ../sifbuilder_local/sifnet_config.php. Examples of those definitions can be found <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php?module=Pagesetter&func=viewpub&tid=2&pid=28">here</a>. Omitting -v and adding --expandsiteparams option, the command is shown in simulated mode. Without -f, specification of the target site can be done interactively through the command line. </p>
<p><b>Using sifbuilder is risky and can result is substantial data loss. Never use sifbuilder without a backup in place.</b> Once said that, the <a href="http://www.sifbuilder.com/sifbuilder/pn/index.php">sifbuilder site</a> is regularly updated and maintained using sifbuilder.</p><br />
<table RULES="ALL" FRAME="BOX" style="text-align: left; width: 500px; height: 1424px;" border="1" cellspacing="5" style="border:1 solid black">
    <tr>
      <td style="vertical-align: top; font-weight: bold;">Domain<br />
      </td>
      <td style="vertical-align: top; font-weight: bold;">Action<br />
      </td>
      <td style="vertical-align: top; font-weight: bold;">Instruction<br />
      </td>
      <td style="vertical-align: top;"><b>Result instance</b><br />
      </td>
    </tr>
    
    <tr>
      <td style="vertical-align: top;">program<br />
      </td>
      <td style="vertical-align: top;">configure<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php sip_configure_site 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifnethost=devhost --sifnetsite=sbpn_at_localhost 
PostNuke08_core_postnuke -f -v</td>
      <td style="vertical-align: top;">Configure the distribution<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">create<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php build_program 
--sifnethost=devhost --sifnetconfigfile=../sifbuilder_local/sifnet_config.php -v</td>
      <td style="vertical-align: top;">Create the sifbuilder program
in siftmp/tmpUpload/ from the development environment<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">tar<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php 
sifnet_create_program_zip --sifnethost=devhost -v</td>
      <td style="vertical-align: top;">Create the sifbuilder
program tar<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">upload<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php sifnet_upload_program 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php --sifnethost=localhost -v</td>
      <td style="vertical-align: top;">Upload the program
tar to the nethost sifdir<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">explode<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php sifnet_explode_package 
--sifnethost=localhost --sifnetconfigfile=../sifbuilder_local/sifnet_config.php -v</td>
      <td style="vertical-align: top;">Explode the program
tar in the nethost sifdir<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">local dir<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php a ac001i 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php --sifnethost=localhost -v</td>
      <td style="vertical-align: top;">Create the sifbuilder_local file tree<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">local config<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php a ac023 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php --sifnethost=localhost -v</td>
      <td style="vertical-align: top;">Upload the local sifnet config file<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">packages<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php sifnet_upload_packages 
--sifnethost=sfhost --sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifpacksdir=../sifbuilder_local/packages</td>
      <td style="vertical-align: top;">Upload site packages if necessary<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">site<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php b 
--sifpacksdir=../sifbuilder_local/packages 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifnetsite=sbd501_at_localhost --sifnethost=localhost 
--siburi=./sibs/sib_drupal5_sif_sif.xml -x -f -v</td>
      <td style="vertical-align: top;">Build the target site<br />
      </td>
    </tr>

    <tr>
      <td style="vertical-align: top;">release<br />
      </td>
      <td style="vertical-align: top;">create<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php build_release 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifnethost=devhost -f -v</td>
      <td style="vertical-align: top;">Create a new sif packages release<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">upload<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php sifnet_upload_release 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifnethost=devhost -f -v</td>
      <td style="vertical-align: top;">Upload a sip release to the sif host<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">create old site<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php b 
--sifpacksdir=../sifbuilder_local/packages 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifnethost=localhost 
--sifnetsite=sbpn501_at_localhost --siburi=./sibs/sib_PostNuke07_sif_old.xml 
--dev -x -f -v
</td>
      <td style="vertical-align: top;">Create a site with old site packages<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">check new versions<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php rlist 
--sifpacksdir=../sifbuilder_local/packages 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifnethost=localhost 
--sifnetsite=sbpn501_at_localhost --dev -f -v
</td>
      <td style="vertical-align: top;">Update site with most recent packages<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">update<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php b 
--sifpacksdir=../sifbuilder_local/packages 
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php 
--sifnethost=localhost --sifnetsite=sbpn501_at_localhost 
--siburi=./sibs/sib_PostNuke07_sif_sif.xml 
--dev --doupdate -f -v
</td>
      <td style="vertical-align: top;">Update site with most recent packages<br />
      </td>
    </tr>

    <tr>
      <td style="vertical-align: top;">try<br />
      </td>
      <td style="vertical-align: top;"></td>
      <td style="vertical-align: top;"><object width="255" height="210"><param name="movie" value="http://www.youtube.com/v/dBJnoMP1Uyc"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/dBJnoMP1Uyc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></td>
      <td style="vertical-align: top;"></td>
    </tr>
    
    <tr>
      <td style="vertical-align: top;">drupal<br />
      </td>
      <td style="vertical-align: top;">create<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php b
--sifpacksdir=../sifbuilder_local/packages
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnetsite=sbd501_at_localhost
--siburi=./sibs/sib_drupal47_sif_sif.xml -f -x</td>
      <td style="vertical-align: top;">Creates in force mode the
http://localhost/sifbuilder/d501 site<br />
Pre empties the d501 database and pre removes the
d:/webroot/sifbuilder/d501/ folder<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">backup</td>
      <td style="vertical-align: top;">php sifcmd.php backup_pod
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnetsite=sbd501_at_localhost -f</td>
      <td style="vertical-align: top;">backup the d501 site into the
autodefined bck_pod_200707220010_sifbuilder_d501.zip tar at
./siftmp/tmpUpload/<br />
      <br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">restore</td>
      <td style="vertical-align: top;">php sifcmd.php restore_pod
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnetsite=sbd502_at_localhost drupal47_core_drupal -x -f</td>
      <td style="vertical-align: top;">Restores in force mode the
database and file system from the latest backup tar with the backuped
siteParms :into the&nbsp; sbd502_at_localhost pre-cleaned site<br />
Configures the site with the drupal47_core_drupal core with the new
siteParmas<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">clone</td>
      <td style="vertical-align: top;">php sifcmd.php clone_pod
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnetbcksite=sbd501_at_localhost --sifnetsite=sbd502_at_localhost
drupal47_core_drupal -f -x</td>
      <td style="vertical-align: top;">Backup the sbd501_at_localhost
site and restore it into sbd502_at_localhost with post configuration by
the core sip<br />
      </td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">clean</td>
      <td style="vertical-align: top;">php sifcmd.php clean_pod
--sifpacksdir=../sifbuilder_local/packages
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnetsite=sbd501_at_localhost -f</td>
      <td style="vertical-align: top;">Clean sbd501_at_localhost site
and test sbd502_at_localhost at&nbsp; http://localhost/sifbuilder/d502</td>
    </tr>
    <tr>
      <td style="vertical-align: top;"><br />
      </td>
      <td style="vertical-align: top;">restore with uri<br />
      </td>
      <td style="vertical-align: top;">php sifcmd.php b
--sifpacksdir=../sifbuilder_local/packages
--sifnetconfigfile=../sifbuilder_local/sifnet_config.php
--sifnetsite=sbd501_at_localhost
--siburi=./sibs/sib_drupal47_sif_sif.xml -f -x</td>
      <td style="vertical-align: top;">Build the site<br />
      </td>
    </tr>
    <tr>
      <td s