Hi,
Thanks for the informations ; I has confirmed my first idea.
I have written a draft for the script (a jsp file) that restores the locks
on webdav files, and I think it may look like the following code :
<%!/** lock a WevDAV file if any usage is found */
private void lockDAVFile(DAVFileAccess file, ParamBean jParams) {
if (file != null && jParams != null) {
synchronized (file) {
if (!file.isLocked()) {
if (!file.isCollection()) {
//get usages
List usages =
JahiaWebdavBaseService.getInstance()
.findUsages(file.getPath(), jParams, true);
if (usages != null &&
!usages.isEmpty()) {
//lock file
file.lockFile(true);
} else {
//no usage
}
} else {
//file is a collection
}
} else {
//file is already locked
}
}
}//null
}
/** lock a WevDAV file tree */
private void lockDAVCollection(DAVFileAccess file, ParamBean jParams) {
if (file != null && jParams != null) {
//top-down and left-right approach to traverse the file tree
if (!file.isCollection()) {
//dav file is a real one => try to lock it
lockDAVFile(file, jParams);
} else {
//file is a collection => get its children
List children = file.getChildren();
if (children != null && !children.isEmpty()) {
//iterate over children
Iterator iterator = children.iterator();
while (iterator.hasNext()) {
DAVFileAccess child =
(DAVFileAccess) iterator.next();
//recursive call over the child
lockDAVCollection(child, jParams);
}
} else {
//no children
}
}
}//null
}
%><%//title
out.write("Fix for slide locks on active/published files \n");
out.write("-----------------------------------------------\n");
//jData
JahiaData jData = (JahiaData) request
.getAttribute("org.jahia.data.JahiaData");
if (jData == null) {
HashMap tempEngineMap = (HashMap) request
.getAttribute("org.jahia.engines.EngineHashMap");
jData = (JahiaData) tempEngineMap.get("jData");
}
//param bean
ParamBean jParams = jData.params();
//user
JahiaUser user = jParams.getUser();
boolean isUserAdmin = user.isAdminMember(jParams.getSiteID());
if (isUserAdmin) {
//gets all sites
Enumeration enumSites = ServicesRegistry.getInstance()
.getJahiaSitesService().getSites();
try {
while (enumSites.hasMoreElements()) {
JahiaSite site = (JahiaSite)
enumSites.nextElement();
//create dav file for "/shared" folder
DAVFileAccess shared = new DAVFileAccess(jParams,
site,
user, "/shared");
//try to lock the tree
lockDAVCollection(shared, jParams);
}
out.write("Script successfully ended!\n");
} catch (Exception e) {
out.write("Exception during processing : \n");
e.printStackTrace(new PrintWriter(out));
}
} else {
//no action
out
.write("User is not an administrator. The script is
not started.\n");
}
%>
Regards,
Fabrice Marchon
> -----Message d'origine-----
> De : Thomas Draier [mailto:[EMAIL PROTECTED]
> Envoyé : vendredi, 21. juillet 2006 11:45
> À : [email protected]
> Objet : Re: Slide locks lost with upgrade to Jahia 4.1
>
> Hi,
> You're right, publication locks are not copied during the
> migration process. There is no option to restore all locks in
> jahia 4.1 , but we can help you writing a simple script that
> recreates them. On each file, you can call
> JahiaWebdavBaseService.getInstance ().findUsages
> (file.getPath (), jParams, true), and the just call file.lockFile
> (true) if some usages are found. This can be quite long on
> 8Gb of files, but this should recreate all locks on published files.
> Thomas
>
> Le 21 juil. 06 à 10:53, Fabrice Marchon a écrit :
>
> > Hi!
> >
> > I am trying to upgrade from jahia version 4.0.7_01 to
> 4.1.1_01 using
> > the official patch. I have to migrate 8 Go of files for our
> production
> > server, so that I try to be carefull as much as possible.
> >
> > The patch has been applied successfully after some modifications of
> > the original Slide 1 tables structure into our jahia
> database (running
> > on MySQL 4.0.27). In fact, there were some integrity
> problems that I
> > have corrected.
> >
> > Full of motivation, I try the new Jahia 4.1, but when I use
> the Jahia
> > filemanager, I see that all locks on webdav files that are
> published
> > on pages are gone, so that I (and all other users) can delete all
> > files without any protection! I test the case of uploading some new
> > files and the latter are locked after I have published them
> on a page.
> >
> > So my question is how to restore the lost locks or how to
> create them
> > again with the new slide 2 ?
> >
> > It seems that the offical Jahia 4.1 patch simply drops the
> > jahia_slide_lock table from the previous Slide 1.
> >
> >
> > Waiting for some help...
> >
> > Regards,
> >
> > Fabrice Marchon