[opencms-dev] IMPORT USERS FROM EXTERNAL DATABASE TO OPENCMS
Ruben Martín
ruben.martin.ramos at gmail.com
Thu Apr 8 14:26:40 CEST 2010
Thank you very much
I will try with this...but it is very confusing at the moment because I have
to adapt an schema of a data base with opencms tables with users...this is a
good idea.
Yours faithfully
ruben
2010/4/8 Vahe Momjian <m_vahe at yahoo.com>
> Hello
>
> I have had a situation like this las year, I needed to import users to
> Newsletter subscription from external XML file.
>
> Look into this source , I could help you
>
> import org.openuri.fdadEmailSubscribers.impl.RootDocumentImpl;
> import org.openuri.fdadEmailSubscribers.SubscriberDocument;
> import org.apache.xmlbeans.XmlException;
> import org.apache.xmlbeans.XmlObject;
> import org.opencms.file.CmsUser;
> import org.opencms.file.CmsObject;
> import org.opencms.main.CmsException;
> import org.opencms.main.OpenCms;
> import org.opencms.jsp.CmsJspActionElement;
> import org.opencms.util.CmsStringUtil;
>
> import java.io.File;
> import java.io.IOException;
> import java.util.Locale;
> import java.util.Collections;
>
> import com.alkacon.opencms.newsletter.CmsNewsletterManager;
>
> import javax.servlet.jsp.JspWriter;
>
> /**
> * Created by IntelliJ IDEA.
> * User: Vahe Momjyan
> * Date: 03.09.2009
> * Time: 16:55:14
> */
> public class CmsNewsletterUserImport {
>
> /**
> * The admin CmsObject that is used for user/group operations.
> */
> private CmsObject m_adminCms;
>
> /**
> * The name of the newsletter module.
> */
> public static final String MODULE_NAME =
> CmsNewsletterManager.class.getPackage().getName();
>
> /**
> * The default password for all newsletter users, can/should be
> overwritten in the module parameter.
> */
> private static final String PASSWORD_USER = "Uw82-Qn!";
>
> /**
> * The full name of newletter subscription mailing list.
> */
> private static final String NESLETTER_OFQN = "nl_Newsletter/Mailing
> List";
>
>
> public CmsNewsletterUserImport(CmsJspActionElement jsp) {
> this.m_adminCms = jsp.getCmsObject();
>
> }
>
>
> protected CmsUser createNewsletterUser(String email, String groupName,
> boolean activate, Locale locale) {
>
> CmsUser user = null;
> // create additional infos containing the active flag set to passed
> parameter
>
> try {
> String ouFqn = getAdminCms().readGroup(groupName).getOuFqn();
> try {
> // first try to read the user
> user = getAdminCms().readUser(ouFqn + email);
> } catch (CmsException e) {
> // user does not exist
> }
> if (user == null) {
> // create the user with additional infos
> user = getAdminCms().createUser(
> ouFqn + email,
> getPassword(),
> "Alkacon OpenCms Newsletter",
> Collections.EMPTY_MAP);
> // set the users email address
> user.setEmail(email);
> if (!activate) {
> // set the additional info as marker that the new user
> is currently not active at all
>
> user.setAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE,
> Boolean.FALSE);
> }
> } else {
> Object o =
> user.getAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE +
> groupName);
> if (o != null) {
> // user tried to subscribe to this mailing list group
> before, return null to show error message
> return null;
> }
> }
>
> user.setAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE +
> groupName, Boolean.valueOf(activate));
> user.setAdditionalInfo("Language", locale.getLanguage());
> if (activate &&
> user.getAdditionalInfo().get(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE)
> != null) {
> // remove flag that this user is not active at all
>
> user.deleteAdditionalInfo(CmsNewsletterManager.USER_ADDITIONALINFO_ACTIVE);
> }
> // write the user
> getAdminCms().writeUser(user);
> // add the user to the given mailing list group
> getAdminCms().addUserToGroup(user.getName(), groupName);
> } catch (CmsException e) {
> // error creating user or modifying user
> }
> return user;
> }
>
> /**
> * Returns the admin CmsObject that is used for user/group
> operations.<p>
> *
> * @return the admin CmsObject that is used for user/group operations
> */
> private CmsObject getAdminCms() {
>
> return m_adminCms;
> }
>
> /**
> * Returns the password to use for all newsletter users.<p>
> *
> * @return the password to use for all newsletter users
> */
> public static String getPassword() {
>
> return
> OpenCms.getModuleManager().getModule(CmsNewsletterManager.MODULE_NAME).getParameter(CmsNewsletterManager.MODULE_PARAM_PASSWORD_USER,
> PASSWORD_USER);
> }
>
> public void ImportUsersFromXML(String xmlfilename, JspWriter out)
> throws XmlException, IOException {
> // Input XML
> File xmlFile = new File(xmlfilename);
>
> // Bind the instance to the generated XMLBeans type.
> RootDocumentImpl document = null;
>
> document = (RootDocumentImpl) XmlObject.Factory.parse(xmlFile);
>
> int counter = 0;
> SubscriberDocument.Subscriber[] allNewSubscribers =
> document.getRoot().getSubscriberArray();
>
> //get default locale
> Locale defLocale =
> OpenCms.getWorkplaceManager().getDefaultLocale();
> for (SubscriberDocument.Subscriber each : allNewSubscribers) {
>
> if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(each.getEmail()))
> {
> createNewsletterUser(each.getEmail(), NESLETTER_OFQN, true,
> defLocale);
> counter++;
> }
> else
> {
> out.write("User not imported<BR><b>" + each.getEmail() +
> "</b><br>");
> }
> }
> out.write("Total users imported: " + counter);
> }
> }
>
> ------------------------------
> *From:* Ruben Martín <ruben.martin.ramos at gmail.com>
> *To:* opencms-dev at opencms.org
> *Sent:* Thu, April 8, 2010 1:22:00 PM
> *Subject:* [opencms-dev] IMPORT USERS FROM EXTERNAL DATABASE TO OPENCMS
>
> Hi guys ,
>
> Is There any way of import users from an external database and mapping to
> the fields of the OAMP register module fields ? We could use LDAP but it is
> mandatory to import every data of the users into the opencms.
>
> Is there any way ?
>
> Thanks in advance
>
>
>
>
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20100408/27c916e7/attachment.htm>
More information about the opencms-dev
mailing list