--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<% /**
+*Copyright © Igor Barma, Alexandre Desoubeaux, Christian Martel, Eric Brun, Mathieu Amblard, Gwenael Gevet, Pierre Guillot, 2012
+ * Copyright Alexandre Desoubeaux, Christian Martel, Cedric Lecarpentier, Alexandre Lefevre, Marc Salvat 2014-2016
+ * Copyright Alexandre Desoubeaux, Christian Martel, Cedric Lecarpentier, Marc Salvat, Marc Suarez, Harifetra Ramamonjy 2017
+*
+*This file is part of the work and learning management system Pentila Nero.
+*
+*Pentila Nero is free software. You can redistribute it and/or modify since
+*you respect the terms of either (at least one of the both license) :
+*- under the terms of the GNU Affero General Public License as
+*published by the Free Software Foundation, either version 3 of the
+*License, or (at your option) any later version.
+*- the CeCILL-C as published by CeCILL-C; either version 1 of the
+*License, or any later version
+*- the GNU Lesser General Public License as published by the
+*Free Software Foundation, either version 3 of the license,
+*or (at your option) any later version.
+*
+*There are special exceptions to the terms and conditions of the
+*licenses as they are applied to this software. View the full text of
+*the exception in file LICENSE-PROJECT.txt in the directory of this software
+*distribution.
+*
+*Pentila Nero is distributed in the hope that it will be useful,
+*but WITHOUT ANY WARRANTY; without even the implied warranty of
+*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+*Licenses for more details.
+*
+*You should have received a copy of the GNU Affero General Public License
+*and the CeCILL-C and the GNU Lesser General Public License along with
+*Pentila Nero. If not, see :
+*<http://www.gnu.org/licenses/> and
+*<http://www.cecill.info/licences.fr.html>.
+*/ %>
+<%@page import="com.liferay.portal.kernel.repository.model.FileEntry"%>
+<%@page import="com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.utils.ENTMainUtilsLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.userProperties.service.UserPropertiesLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.service.RssChanelLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.service.RssItemLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.model.RssItem"%>
+<%@page import="com.pentila.entSavoie.agenda.service.RessourceLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.agenda.model.Ressource"%>
+<%@page import="com.pentila.entSavoie.agenda.service.EventAgendaLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.agenda.model.EventAgenda"%>
+<%@page import="com.pentila.entSavoie.portlets.moteurDeRecherche.ElementComparator"%>
+<%@page import="java.util.Collections"%>
+<%@page import="java.util.HashMap"%>
+<%@page import="java.util.Map"%>
+<%@page import="com.pentila.entSavoie.directory.OrganizationFinderServiceUtil"%>
+<%@page import="java.util.Date"%>
+<%@page import="com.pentila.entSavoie.search.util.IndexerUtil"%>
+<%@page import="com.liferay.portal.kernel.util.StringUtil"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.model.Folder"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.service.FolderLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.service.MessageLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.model.Message"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.service.InternalFolderMessageLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.model.InternalFolderMessage"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.model.InternalMessage"%>
+<%@page import="com.pentila.entSavoie.internalMessaging.service.InternalMessageLocalServiceUtil"%>
+<%@page import="java.util.List"%>
+<%@page import="com.liferay.portal.service.PortletLocalServiceUtil"%>
+<%@page import="com.liferay.portlet.blogs.service.BlogsEntryLocalServiceUtil"%>
+<%@page import="com.liferay.portlet.blogs.model.BlogsEntry"%>
+<%@page import="com.pentila.entSavoie.cahierDeTexte.service.MatiereLocalServiceUtil"%>
+<%@page import="java.text.DateFormat"%>
+<%@page import="com.liferay.portlet.messageboards.service.MBCategoryLocalServiceUtil"%>
+<%@page import="com.liferay.portlet.messageboards.model.MBThread"%>
+<%@page import="com.liferay.portal.kernel.util.TextFormatter"%>
+<%@page import="com.pentila.entSavoie.ENTDisplayUtil"%>
+<%@page import="com.liferay.portal.service.OrganizationLocalServiceUtil"%>
+<%@page import="java.text.SimpleDateFormat"%>
+<%@page import="com.pentila.entSavoie.cahierDeTexte.service.EventCDTLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.cahierDeTexte.model.EventCDT"%>
+<%@page import="com.pentila.entSavoie.utils.PermissionsUtils"%>
+<%@page import="com.liferay.portal.model.Group"%>
+<%@page import="com.liferay.portal.service.GroupLocalServiceUtil"%>
+<%@page import="com.pentila.entSavoie.casier.Constants"%>
+<%@page import="com.liferay.portal.model.Organization"%>
+<%@page import="com.liferay.portlet.messageboards.service.MBThreadLocalServiceUtil"%>
+<%@page import="com.liferay.portlet.messageboards.service.MBMessageLocalServiceUtil"%>
+<%@page import="com.liferay.portlet.messageboards.model.MBMessage"%>
+<%@page import="com.liferay.portal.kernel.xml.Document"%>
+<%@page import="com.liferay.portal.kernel.util.HttpUtil"%>
+<%@page import="com.liferay.portal.kernel.util.GetterUtil"%>
+<%@page import="com.liferay.portal.util.PortletKeys"%>
+<%@page import="com.liferay.portal.util.PortalUtil"%>
+<%@page import="com.liferay.portal.kernel.util.HtmlUtil"%>
+<%@page import="java.util.ArrayList"%>
+<%@page import="com.liferay.portal.kernel.xml.Element"%>
+<%@page import="com.liferay.portal.kernel.xml.SAXReaderUtil"%>
+<%@page import="com.liferay.portal.kernel.language.LanguageUtil"%>
+<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
+<%@page import="com.liferay.portal.kernel.search.OpenSearch"%>
+<%@page import="com.liferay.portal.kernel.util.Validator"%>
+<%@page import="com.liferay.portal.model.Portlet"%>
+<%@page import="java.util.Iterator"%>
+<%@page import="com.liferay.portal.kernel.util.ListUtil"%>
+<%@page import="com.liferay.portal.util.comparator.PortletTitleComparator"%>
+<%@page import="com.pentila.entSavoie.portlets.moteurDeRecherche.SearchConstants"%>
+<%@page import="com.pentila.entSavoie.communityInfos.model.CommunityInfos"%>
+<%@page import="com.pentila.entSavoie.communityInfos.service.CommunityInfosLocalServiceUtil"%>
+
+<%@page import="com.liferay.portal.kernel.json.JSONArray"%>
+<%@page import="com.liferay.portal.kernel.json.JSONFactoryUtil"%>
+<%@page import="com.liferay.portal.kernel.json.JSONObject"%>
+
+<%@ include file="./initAjax.jsp" %>
+
+<%
+
+renderResponse.setContentType(ContentTypes.TEXT_XML_UTF8);
+response.setContentType(ContentTypes.TEXT_XML_UTF8);
+response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache");
+
+String defaultKeywords = LanguageUtil.get(pageContext, "search") + "...";
+
+final String portletId = ParamUtil.getString(renderRequest, "portletId", "");
+String keywords = ParamUtil.getString(renderRequest, "keywords", defaultKeywords);
+String format = ParamUtil.getString(renderRequest, "format", "atom");
+// remove accent to improve quality of result and avoid charset problem
+keywords = IndexerUtil.normalizeStringEscaped(keywords);
+
+List<Map<String, Object>> listTotal = new ArrayList<Map<String, Object>>();
+
+int limit = ParamUtil.getInteger(renderRequest, "limit", 10);
+
+String pathMain = themeDisplay.getPathMain();
+
+DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
+SimpleDateFormat dfAgenda = new SimpleDateFormat("'le' dd/MM/yyyy 'à' HH:mm");
+
+String downloadLink = "";
+
+//------------ RECHERCHE
+
+List<Portlet> lportlets = null;
+if(!portletId.equals("")){
+
+ lportlets = new ArrayList<Portlet>();
+
+ if(portletId.equals("messagerie")){
+ lportlets.add(PortletLocalServiceUtil.getPortletById("internalMessaging_WAR_internalMessagingportlet"));
+ lportlets.add(PortletLocalServiceUtil.getPortletById("internalmessagingawarness_WAR_internalMessagingportlet"));
+ } else {
+ lportlets.add(PortletLocalServiceUtil.getPortletById(portletId));
+ }
+
+ limit = limit * 5;
+
+} else {
+ lportlets = PortletLocalServiceUtil.getPortlets(company.getCompanyId(), false, false);
+
+ Iterator<Portlet> itr = lportlets.iterator();
+
+ //Suppression des portlets qui n'ont pas d'indexer
+ while (itr.hasNext()) {
+ Portlet portlet = (Portlet)itr.next();
+
+ if (Validator.isNull(portlet.getOpenSearchClass())) {
+ itr.remove();
+ }
+ else {
+ OpenSearch openSearch = portlet.getOpenSearchInstance();
+ if (!openSearch.isEnabled() || (portlet.getPortletId().equals(PortletKeys.BOOKMARKS)) || (portlet.getPortletId().equals(PortletKeys.CALENDAR))
+ || (portlet.getPortletId().equals(PortletKeys.WIKI)) || (portlet.getPortletId().equals(PortletKeys.JOURNAL)) || (portlet.getPortletId().equals(PortletKeys.DIRECTORY))) {
+ //Suppression des portlets qui n'ont pas d'openSearch et qui nous interessent pas
+ itr.remove();
+ }
+ }
+ }
+
+ try {
+ lportlets = ListUtil.sort(lportlets, new PortletTitleComparator(application, locale));
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+
+}
+
+boolean ajaxable = false;
+try {
+ ajaxable = UserPropertiesLocalServiceUtil.getUserPropertiesByUserId(user.getUserId()).getAjaxablePortlets();
+} catch(Exception e){}
+
+%>
+
+
+<listes>
+<%
+for (int i = 0; i < lportlets.size(); i++) {
+
+ Date p = new Date();
+
+ Portlet portlet = (Portlet)lportlets.get(i);
+ String portletTitle = PortalUtil.getPortletTitle(portlet, application, locale);
+
+ String xml = "";
+ OpenSearch openSearch = portlet.getOpenSearchInstance();
+
+ try {
+ if (portletTitle.equals("Annuaire")){
+ //Search in user's schools only
+ xml = openSearch.search(request, OrganizationFinderServiceUtil.getEtabRatachement(user).getGroup().getGroupId(), user.getUserId(), keywords, 1, limit, format);
+
+ } else {
+ xml = openSearch.search(request, 0, user.getUserId(), keywords, 1, limit, format);
+ }
+ }
+ catch(Exception e) {
+ System.out.println("Error while searching '"+keywords+"' in portlet "+portletTitle);
+ e.printStackTrace();
+ continue;
+ }
+
+ Document doc = SAXReaderUtil.read(xml);
+
+ Element root = doc.getRootElement();
+
+ List<Element> entries = root.elements("entry");
+
+ for(int j = 0; j < entries.size(); j++){
+ Map<String, Object> map = new HashMap<String, Object>();
+ Element el = (Element)entries.get(j);
+
+ map.put("element", el);
+ map.put("portlet", portlet);
+
+ listTotal.add(map);
+ }
+
+}
+
+if(listTotal.size()>0){
+
+ Collections.sort(listTotal, new ElementComparator());
+
+ Iterator<Map<String, Object>> itera = listTotal.iterator();
+
+ Map<String, Object> obj;
+
+ Element elemMax = (Element) listTotal.get(0).get("element");
+
+ float maxScore = Float.valueOf(elemMax.elementText("score"));
+
+ while (itera.hasNext()) {
+
+ obj = (Map<String, Object>) itera.next();
+
+ Portlet portlet = (Portlet) obj.get("portlet");
+
+ String portletTitle = PortalUtil.getPortletTitle(portlet, application, locale);
+
+ Element el = (Element) obj.get("element");
+
+ String entryId = el.elementText("id");
+ String entryTitle = el.elementText("title");
+
+ float scoreFloat = ((Float.valueOf(el.elementText("score"))/maxScore) * 100);
+
+ String score = "";
+ try{
+ score = String.valueOf(scoreFloat).substring(0, String.valueOf(scoreFloat).lastIndexOf("."));
+ } catch(Exception e){
+ score = String.valueOf(scoreFloat);
+ }
+
+ String entryHref = el.element("link").attributeValue("href");
+ String summary = HtmlUtil.extractText(el.elementText("summary"));
+ String senderName = "";
+ String groupName = "";
+ String date = "";
+ String dateFin = "";
+ String type = "";
+ String size = "";
+ String email = "";
+ String categoryName = "";
+ String threadName = "";
+ String matiere = "";
+ String folderName = "";
+ String status = "";
+ int nb_file = 0;
+ String ressourceName = "";
+ String fluxName = "";
+ String currentClass = "";
+
+ boolean isOk = true;
+
+ //Lien de telechargement pour les fileEntry
+ downloadLink = "";
+
+ /**
+ * Documents du cartable, casier, des groupes
+ */
+ if (portlet.getPortletId().equals(PortletKeys.DOCUMENT_LIBRARY)) {
+ try{
+ long fileEntryId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "_20_fileEntryId", false));
+ FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(fileEntryId);
+ com.liferay.portal.kernel.repository.model.Folder dlfo = DLAppLocalServiceUtil.getFolder(fileEntry.getFolderId());
+ if (!PermissionsUtils.checkFilePermission(themeDisplay.getPermissionChecker(), fileEntry, "VIEW")){
+ isOk = false;
+ } else {
+ downloadLink = entryHref;
+ portletTitle = messages.getString("Documents");
+ type = fileEntry.getExtension();
+ size = TextFormatter.formatKB(fileEntry.getSize(), locale) + "k";
+ entryTitle = fileEntry.getTitle();
+ date = df.format(fileEntry.getCreateDate());
+ long dlfoId = fileEntry.getFolderId();
+ if(dlfo.getParentFolderId() != 0){
+ folderName = dlfo.getName();
+ } else {
+ folderName = messages.getString("Racine");
+ }
+ while(dlfo.getParentFolderId() != 0){
+ dlfo = DLAppLocalServiceUtil.getFolder(dlfo.getParentFolderId());
+ if(dlfo.getName().contains(Constants.SENDING_BOX_FOLDER_NAME) || dlfo.getName().contains(Constants.IM_BOX_FOLDER_NAME)
+ || dlfo.getName().contains(Constants.ACTU_IMG_FOLDER_NAME)){
+ isOk = false;
+ }
+ }
+ //Si ce n'est pas un dossier temporaire
+ if(!dlfo.getName().contains("_TEMPORARY_") && !dlfo.getName().contains(Constants.SENDING_BOX_FOLDER_NAME)
+ && !dlfo.getName().contains(Constants.IM_BOX_FOLDER_NAME) && !dlfo.getName().contains(Constants.ACTU_IMG_FOLDER_NAME)){
+ if(dlfo.getName().contains("Mon cartable")){
+ groupName = messages.getString("Cartable");
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlSchoolBag(user.getCompanyId()) + "?entryId=" + fileEntry.getFileEntryId();
+ } else if(dlfo.getName().contains(Constants.DROP_BOX_FOLDER_NAME)) {
+ groupName = messages.getString("Casier");
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlRack(user.getCompanyId()) + "?entryId=" + fileEntry.getFileEntryId();
+ } else {
+ groupName = ENTDisplayUtil.formatSCONETName(user,dlfo.getName());
+ Group group = GroupLocalServiceUtil.getGroup(dlfo.getGroupId());
+ //If the application is disabled for this group do not add the file
+ try {
+ CommunityInfos ci = CommunityInfosLocalServiceUtil.getCommunityInfosByGroupId(group.getGroupId());
+ if (!ci.isIsDocumentsActive()){
+ continue;
+ }
+ } catch(Exception e) {
+ System.out.println("No communityInfo with groupId="+group.getGroupId());
+ }
+ entryHref = "#/group" + group.getFriendlyURL() + "?p_p_id=cartable_WAR_cartableportlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&entryId=" + fileEntry.getFileEntryId();
+ }
+ } else {
+ isOk = false;
+ }
+ }
+ currentClass = FileEntry.class.getName();
+ } catch(Exception e){
+ isOk = false;
+ }
+ }
+
+ /**
+ * Dossiers du cartable, casier, des groupes
+ */
+ if (portlet.getPortletId().equals("cartable_WAR_cartableportlet")) {
+ try{
+ long folderId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "_foldersearchengine_folderId", false));
+ if(folderId != 0){
+ com.liferay.portal.kernel.repository.model.Folder dlfo = DLAppLocalServiceUtil.getFolder(folderId);
+ //Si ce n'est pas un dossier temporaire
+ if(!dlfo.getName().contains("_TEMPORARY_") && !dlfo.getName().contains(Constants.SENDING_BOX_FOLDER_NAME)
+ && !dlfo.getName().contains(Constants.IM_BOX_FOLDER_NAME) && !dlfo.getName().contains(Constants.ACTU_IMG_FOLDER_NAME)){
+ if (!PermissionsUtils.checkFolderPermission(themeDisplay.getPermissionChecker(), dlfo, "VIEW")){
+ isOk = false;
+ } else {
+ portletTitle = messages.getString("Dossiers");
+ entryTitle = dlfo.getName();
+ nb_file = DLAppLocalServiceUtil.getFileEntriesCount(dlfo.getGroupId(), folderId);
+ date = df.format(dlfo.getCreateDate());
+ while(dlfo.getParentFolderId() != 0){
+ dlfo = DLAppLocalServiceUtil.getFolder(dlfo.getParentFolderId());
+ if(dlfo.getName().contains(Constants.SENDING_BOX_FOLDER_NAME) || dlfo.getName().contains(Constants.IM_BOX_FOLDER_NAME)
+ || dlfo.getName().contains(Constants.ACTU_IMG_FOLDER_NAME)){
+ isOk = false;
+ }
+ }
+ if(dlfo.getName().contains("Mon cartable")){
+ groupName = messages.getString("Cartable");
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlSchoolBag(user.getCompanyId()) + "?folderId=" + folderId;
+ } else if(dlfo.getName().contains(Constants.DROP_BOX_FOLDER_NAME)) {
+ groupName = messages.getString("Casier");
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlRack(user.getCompanyId()) + "?folderId=" + folderId;
+ } else {
+ groupName = ENTDisplayUtil.formatSCONETName(user,dlfo.getName());
+ if(!groupName.contains("_IM_BOX_")){
+ Group group = GroupLocalServiceUtil.getGroup(dlfo.getGroupId());
+ //If the application is disabled for this group do not add the folder to results
+ try {
+ CommunityInfos ci = CommunityInfosLocalServiceUtil.getCommunityInfosByGroupId(group.getGroupId());
+ if (!ci.isIsDocumentsActive()){
+ continue;
+ }
+ } catch(Exception e) {
+ System.out.println("No communityInfo with groupId="+group.getGroupId());
+ }
+ entryHref = "#/group" + group.getFriendlyURL() + "?p_p_id=cartable_WAR_cartableportlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&folderId=" + folderId;
+ } else {
+ isOk = false;
+ }
+ }
+ }
+ } else {
+ isOk = false;
+ }
+ } else {
+ isOk = false;
+ }
+ currentClass = com.liferay.portal.kernel.repository.model.Folder.class.getName();
+ } catch(Exception e){
+ isOk = false;
+ }
+ }
+
+ /**
+ * Forum
+ */
+ if (portlet.getPortletId().equals(PortletKeys.MESSAGE_BOARDS)) {
+ try{
+ long messageId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "messageId", false));
+ if (messageId == 0){
+ messageId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, SearchConstants.HREF_FORUM_ENTRY_PARAM_NAME, false));
+ }
+ if (!PermissionsUtils.hasUserPermissionForRessourceInGroup(permissionChecker,
+ MBMessageLocalServiceUtil.getMBMessage(messageId), "VIEW")) {
+ isOk = false;
+ } else {
+ MBMessage message = MBMessageLocalServiceUtil.getMBMessage(messageId);
+ MBThread thread = MBThreadLocalServiceUtil.getThread(message.getThreadId());
+ threadName = MBMessageLocalServiceUtil.getMBMessage(thread.getRootMessageId()).getSubject();
+ entryTitle = threadName;
+ categoryName = MBCategoryLocalServiceUtil.getMBCategory(thread.getCategoryId()).getName();
+ summary = StringUtil.shorten(HtmlUtil.extractText(message.getBody()), 300);
+ date = df.format(message.getCreateDate());
+ Group group = GroupLocalServiceUtil.getGroup(message.getGroupId());
+ //If the application is disabled for this group do not add the message to results
+ try {
+ CommunityInfos ci = CommunityInfosLocalServiceUtil.getCommunityInfosByGroupId(group.getGroupId());
+ if (!ci.isIsForumActive()){
+ continue;
+ }
+ } catch(Exception e) {
+ System.out.println("No communityInfo with groupId="+group.getGroupId());
+ }
+ if (group.isOrganization()){
+ Organization o = OrganizationLocalServiceUtil.getOrganization(Long.valueOf(group.getOrganizationId()));
+ groupName = ENTDisplayUtil.formatSCONETName(user, o.getName());
+ } else {
+ groupName = ENTDisplayUtil.formatSCONETName(user,GroupLocalServiceUtil.getGroup(message.getGroupId()).getName());
+ }
+ }
+ currentClass = MBMessage.class.getName();
+ } catch (Exception e){
+ isOk = false;
+ }
+ }
+
+
+ /**
+ * Cahier de Textes
+ */
+ if (portlet.getPortletId().equals("cahierDeTexte_WAR_cahierDeTexteportlet")) {
+ try{
+ long eventId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "_eventcdtsearchengine_eventId", false));
+ EventCDT event = EventCDTLocalServiceUtil.getEventCDT(eventId);
+ entryTitle = event.getSubject();
+ summary = StringUtil.shorten(HtmlUtil.extractText(event.getDescription()), 300);
+ date = df.format(event.getStartDay()) + " " + messages.getString("Agrav") + " " + event.getStartEvtTime();
+ dateFin = df.format(event.getEndDay()) + " " + messages.getString("Agrav") + " " + event.getEndEvtTime();
+ Group group = GroupLocalServiceUtil.getGroup(event.getGroupId());
+ if (group.isOrganization()){
+ Organization o = OrganizationLocalServiceUtil.getOrganization(Long.valueOf(group.getOrganizationId()));
+ groupName = ENTDisplayUtil.formatSCONETName(user, o.getName());
+ }
+ if(event.getKindEvt() == 1){
+ type = messages.getString("Cours");
+ } else {
+ type = messages.getString("Devoir");
+ }
+ matiere = MatiereLocalServiceUtil.getMatiere(event.getSubjectCDT()).getLabelCourt();
+ if(entryTitle.equals("")){
+ entryTitle = messages.getString("Evenement");
+ }
+ currentClass = EventCDT.class.getName();
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlTextbook(user.getCompanyId()) + "?eventId=" + eventId;
+
+ } catch (Exception e){
+ isOk = false;
+ }
+ }
+
+
+ /**
+ * Acualites
+ */
+ if (portlet.getPortletId().equals("actualites_WAR_actualitesportlet") || portletId.equals("33")) {
+ try{
+ long bentryId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "entryId", false));
+ if (bentryId == 0){
+ bentryId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, SearchConstants.HREF_ACTU_ENTRY_PARAM_NAME, false));
+ }
+ // entryHref might be 'xxx/actualites/-/blogs/21034326/maximized' => rewrite it to /actualites?entryId=21034326
+ if (bentryId == 0) {
+ String[] urlSplit = entryHref.split("/");
+ if (urlSplit != null && urlSplit.length > 0) {
+ for (int i = 0 ; i < urlSplit.length ; i++) {
+ if (urlSplit[i].equals("blogs")) {
+ bentryId = GetterUtil.getLong(urlSplit[i+1]);
+ break;
+ }
+ }
+ // Rewrite entryHref
+ int serviceUrlIdx = entryHref.indexOf("actualites");
+ String newUrl = entryHref.substring(0, serviceUrlIdx+10) + "?entryId="+bentryId;
+ entryHref = newUrl;
+ }
+ }
+ BlogsEntry be = BlogsEntryLocalServiceUtil.getBlogsEntry(bentryId);
+ entryTitle = be.getTitle();
+ summary = StringUtil.shorten(HtmlUtil.extractText(be.getContent()), 300);
+ Group group = GroupLocalServiceUtil.getGroup(be.getGroupId());
+ //If the application is disabled for this group do not add the news to results
+ try {
+ CommunityInfos ci = CommunityInfosLocalServiceUtil.getCommunityInfosByGroupId(group.getGroupId());
+ if (!ci.isIsNewsActive()){
+ continue;
+ }
+ } catch(Exception e) {
+ System.out.println("No communityInfo with groupId="+group.getGroupId());
+ }
+ if (group.isOrganization()){
+ Organization o = OrganizationLocalServiceUtil.getOrganization(group.getOrganizationId());
+ groupName = ENTDisplayUtil.formatSCONETName(user, o.getName());
+ } else {
+ groupName = ENTDisplayUtil.formatSCONETName(user, GroupLocalServiceUtil.getGroup(be.getGroupId()).getName());
+ }
+ date = df.format(be.getCreateDate());
+ portletTitle = messages.getString("Actualites");
+ currentClass = BlogsEntry.class.getName();
+ } catch (Exception e){
+ isOk = false;
+ }
+ }
+
+
+ /**
+ * Messagerie
+ */
+ if(portlet.getPortletId().equals("internalMessaging_WAR_internalMessagingportlet") || portlet.getPortletId().equals("internalmessagingawarness_WAR_internalMessagingportlet")){
+ try{
+ portletTitle = messages.getString("Messagerie");
+ long messageId = 0;
+ if(portlet.getPortletId().equals("internalMessaging_WAR_internalMessagingportlet")){
+ messageId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "_internalmessagesearchengine_messageId", false));
+ InternalMessage im = InternalMessageLocalServiceUtil.getInternalMessage(messageId);
+ entryTitle = im.getMessageSubject();
+ summary = StringUtil.shorten(HtmlUtil.extractText(im.getMessageContent()), 300);
+ InternalFolderMessage imf = InternalFolderMessageLocalServiceUtil.getInternalFolderMessage(im.getFolderMessageId());
+ folderName = imf.getFolderName();
+ date = df.format(im.getSendDate());
+ senderName = im.getSenderName();
+ entryHref += "&im=true";
+ currentClass = InternalMessage.class.getName();
+ } else {
+ messageId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "_messagesearchengine_messageId", false));
+ Message message = MessageLocalServiceUtil.getMessage(messageId);
+ entryTitle = message.getSubject();
+ summary = StringUtil.shorten(HtmlUtil.extractText(message.getBody()), 300);
+ Folder folder = FolderLocalServiceUtil.getFolder(message.getFolderId());
+ folderName = folder.getDisplayName();
+ date = df.format(message.getCreateDate());
+ senderName = message.getUserName();
+ size = message.getSize()>0?(TextFormatter.formatKB(message.getSize(), locale) + "k"):"";
+ entryHref += "&im=false";
+ currentClass = Message.class.getName();
+ }
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlMessaging(user.getCompanyId()) + "?messageId=" + messageId+"&im=true";
+ if(entryTitle.equals("")){
+ entryTitle = messages.getString("Message");
+ }
+ } catch (Exception e){
+ isOk = false;
+ }
+ }
+
+ /**
+ * Agenda
+ */
+ if(portlet.getPortletId().equals("agenda_WAR_agendaportlet")){
+ try{
+ portletTitle = messages.getString("Agenda");
+ long eventId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "_eventagendasearchengine_eventAgendaId", false));
+ EventAgenda event = EventAgendaLocalServiceUtil.getEventAgenda(eventId);
+ entryTitle = event.getTitle();
+ summary = StringUtil.shorten(HtmlUtil.extractText(event.getNotes()), 300);
+ date = dfAgenda.format(event.getStartEvt());
+ dateFin = dfAgenda.format(event.getEndEvt());
+ Ressource res = RessourceLocalServiceUtil.getRessource(event.getCalId());
+ ressourceName = res.getName();
+ currentClass = EventAgenda.class.getName();
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlAgenda(user.getCompanyId()) + "?eventId=" + eventId;
+ } catch (Exception e){
+ e.printStackTrace();
+ isOk = false;
+ }
+ }
+
+ /**
+ * Rss
+ */
+ if(portlet.getPortletId().equals("fluxRss_WAR_internalMessagingportlet")){
+ try{
+ portletTitle = messages.getString("Rss");
+ long rssItemId = GetterUtil.getLong(HttpUtil.getParameter(entryHref, "_rssitemsearchengine_rssItemId", false));
+ RssItem item = RssItemLocalServiceUtil.getRssItem(rssItemId);
+ entryTitle = item.getTitle();
+ date = df.format(item.getPubDate());
+ fluxName = RssChanelLocalServiceUtil.getRssChanel(item.getChanelId()).getTitle();
+ currentClass = RssItem.class.getName();
+ entryHref = "#" + ENTMainUtilsLocalServiceUtil.getPortletUrlMessaging(user.getCompanyId()) + "?rssItemId=" + rssItemId;
+ } catch (Exception e){
+ isOk = false;
+ e.printStackTrace();
+ }
+ }
+
+
+ if(entryHref.equals("")){
+ //L'entee n'existe plus mais l'index existe toujours
+ isOk = false;
+ }
+
+ if(isOk){
+ String portalUrl = PortalUtil.getPortalURL(themeDisplay);
+ if (entryHref.contains(portalUrl)) {
+ entryHref = entryHref.replace(portalUrl, "#");
+ }
+ %>
+ <results>
+ <entryId><![CDATA[<%= entryId %>]]></entryId>
+ <entryTitle><![CDATA[<%= entryTitle + " - (" + score + "%)" %>]]></entryTitle>
+ <entrySummary><![CDATA[<%= summary %>]]></entrySummary>
+ <contextLink><![CDATA[<%= entryHref %>]]></contextLink>
+ <downloadLink><![CDATA[<%= downloadLink %>]]></downloadLink>
+ <service><![CDATA[<%= portletTitle %>]]></service>
+ <senderName><![CDATA[<%= senderName %>]]></senderName>
+ <groupName><![CDATA[<%= groupName %>]]></groupName>
+ <date><![CDATA[<%= date %>]]></date>
+ <dateFin><![CDATA[<%= dateFin %>]]></dateFin>
+ <type><![CDATA[<%= type %>]]></type>
+ <size><![CDATA[<%= size %>]]></size>
+ <email><![CDATA[<%= email %>]]></email>
+ <categoryName><![CDATA[<%= categoryName %>]]></categoryName>
+ <threadName><![CDATA[<%= threadName %>]]></threadName>
+ <matiere><![CDATA[<%= matiere %>]]></matiere>
+ <folderName><![CDATA[<%= folderName %>]]></folderName>
+ <status><![CDATA[<%= status %>]]></status>
+ <nbfiles><%= nb_file %></nbfiles>
+ <score><![CDATA[<%= score %>]]></score>
+ <ressource><![CDATA[<%= ressourceName %>]]></ressource>
+ <fluxName><![CDATA[<%= fluxName %>]]></fluxName>
+ <portlet><![CDATA[<%= ENTMainUtilsLocalServiceUtil.getPortletId(currentClass) %>]]></portlet>
+ </results>
+ <%
+ }
+ }
+}
+
+%>
+</listes>