Manuel de migration technique vers 1.6.0

Depuis la version 1.6.0, le service Flux RSS ou Atom permet d'ajouter plusieurs flux RSS dans le même service, contrairement aux versions antérieures du plugin qui ne permettaient d'insérer qu'un seul flux RSS.

Le passage à la version 1.5.0 du plugin nécessite donc la migration des services existants.

Rendez-vous sur la console du repository (http://[url_cms]/_repository) et exécutez le script suivant:

Migration des services Flux RSS v1.5.0 ou antérieurs

var qm = session.getWorkspace().getQueryManager();
var migrated = 0;
  
var query = qm.createQuery("//element(*, ametys:zoneItem)[@ametys-internal:type='SERVICE' and @ametys-internal:service='org.ametys.plugins.syndication.service.RSS']", javax.jcr.query.Query.XPATH);
var nodes = query.execute().getNodes();
  
while (nodes.hasNext())
{
    var node = nodes.next();
    var paramsNode = node.getNode('ametys:service_parameters');
      
    if (!paramsNode.hasNode('ametys:feeds'))
    {
        var feedsNode = paramsNode.addNode('ametys:feeds', 'ametys:compositeMetadata');
        var entryNode = feedsNode.addNode('ametys:1', 'ametys:compositeMetadata');
          
        if (paramsNode.hasProperty('ametys:url'))
        {
            var url = paramsNode.getProperty('ametys:url').getString();
            entryNode.setProperty('ametys:url', url);
            paramsNode.getProperty('ametys:url').remove();
        }
          
        if (paramsNode.hasProperty('ametys:length'))
        {
            var length = paramsNode.getProperty('ametys:length').getString();
            entryNode.setProperty('ametys:length', length);
        }
        
        paramsNode.setProperty('ametys:link', '');
        paramsNode.setProperty('ametys:link-title', '');
        paramsNode.setProperty('ametys:nb-feed-max', '');
        paramsNode.setProperty('ametys:nb-feed-user', '');
        paramsNode.setProperty('ametys:cache', '3');
    
        entryNode.setProperty('ametys:title', '');
        entryNode.setProperty('ametys:limited', 'false');
        entryNode.setProperty('ametys:fo-user', '');
        entryNode.setProperty('ametys:fo-group', '');
        entryNode.setProperty('ametys:cache', '3');

        migrated++;
    }
}
  
session.save();
  
println(migrated + ' service(s) have been migrated.');