2021-02-11 16:05:04 +00:00
< ? php
/* Copyright ( C ) 2021 Florian Henry < florian . henry @ scopen . fr >
2025-03-15 10:26:19 +00:00
* Copyright ( C ) 2024 - 2025 MDW < mdeweerd @ users . noreply . github . com >
2025-10-17 00:31:07 +00:00
* Copyright ( C ) 2024 - 2025 Frédéric France < frederic . france @ free . fr >
2021-02-11 16:05:04 +00:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program 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
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < https :// www . gnu . org / licenses />.
*/
/**
2021-09-11 07:52:21 +00:00
* \file htdocs / admin / eventorganization . php
2021-02-11 16:05:04 +00:00
* \ingroup eventorganization
* \brief EventOrganization setup page .
*/
// Load Dolibarr environment
2021-02-11 16:16:38 +00:00
require '../main.inc.php' ;
2024-11-04 22:53:20 +00:00
/**
* @ var Conf $conf
* @ var DoliDB $db
* @ var HookManager $hookmanager
* @ var Translate $langs
* @ var User $user
*/
2026-06-23 12:15:35 +00:00
// Libraries
require_once DOL_DOCUMENT_ROOT . " /core/lib/admin.lib.php " ;
require_once DOL_DOCUMENT_ROOT . '/core/lib/eventorganization.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php' ;
2021-02-11 16:05:04 +00:00
// Translations
2022-01-21 12:44:40 +00:00
$langs -> loadLangs ( array ( " admin " , " eventorganization " , " categories " ));
2021-02-11 16:05:04 +00:00
// Parameters
$action = GETPOST ( 'action' , 'aZ09' );
2025-11-24 15:29:21 +00:00
$cancel = GETPOST ( 'cancel' , 'alpha' );
2021-02-11 16:05:04 +00:00
$backtopage = GETPOST ( 'backtopage' , 'alpha' );
$value = GETPOST ( 'value' , 'alpha' );
$label = GETPOST ( 'label' , 'alpha' );
2022-01-26 12:49:46 +00:00
$modulepart = GETPOST ( 'modulepart' , 'aZ09' ); // Used by actions_setmoduleoptions.inc.php
2021-02-11 16:05:04 +00:00
$scandir = GETPOST ( 'scan_dir' , 'alpha' );
$type = 'myobject' ;
2025-04-18 13:50:06 +00:00
if ( empty ( $action )) {
$action = 'edit' ;
}
2021-02-11 16:05:04 +00:00
$arrayofparameters = array (
2024-05-02 18:11:41 +00:00
'EVENTORGANIZATION_CATEG_THIRDPARTY_CONF' => array ( 'type' => 'category:' . Categorie :: TYPE_CUSTOMER , 'enabled' => 1 , 'css' => '' ),
'EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH' => array ( 'type' => 'category:' . Categorie :: TYPE_CUSTOMER , 'enabled' => 1 , 'css' => '' ),
'EVENTORGANIZATION_FILTERATTENDEES_CAT' => array ( 'type' => 'category:' . Categorie :: TYPE_CUSTOMER , 'enabled' => 1 , 'css' => '' ),
'EVENTORGANIZATION_FILTERATTENDEES_TYPE' => array ( 'type' => 'thirdparty_type:' , 'enabled' => 1 , 'css' => '' ),
2026-04-24 16:47:02 +00:00
'EVENTORGANIZATION_TASK_LABEL' => array ( 'type' => 'textarea' , 'enabled' => 1 , 'css' => 'height100' ),
2024-05-02 18:11:41 +00:00
'EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF' => array ( 'type' => 'emailtemplate:conferenceorbooth' , 'enabled' => 1 , 'css' => '' ),
'EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH' => array ( 'type' => 'emailtemplate:conferenceorbooth' , 'enabled' => 1 , 'css' => '' ),
'EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH' => array ( 'type' => 'emailtemplate:conferenceorbooth' , 'enabled' => 1 , 'css' => '' ),
'EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT' => array ( 'type' => 'emailtemplate:conferenceorbooth' , 'enabled' => 1 , 'css' => '' ),
//'EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER'=>array('type'=>'emailtemplate:conferenceorbooth', 'enabled'=>1, 'css' => ''),
//'EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES'=>array('type'=>'emailtemplate:conferenceorbooth', 'enabled'=>1, 'css' => ''),
2025-04-18 15:22:09 +00:00
'SERVICE_BOOTH_LOCATION' => array ( 'type' => 'product' , 'enabled' => 1 , 'css' => 'maxwidth500' ),
'SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION' => array ( 'type' => 'product' , 'enabled' => 1 , 'css' => 'maxwidth500' ),
2021-02-11 16:05:04 +00:00
);
$error = 0 ;
$setupnotempty = 0 ;
2021-04-29 08:01:10 +00:00
$dirmodels = array_merge ( array ( '/' ), ( array ) $conf -> modules_parts [ 'models' ]);
2021-08-09 15:41:23 +00:00
// Access control
if ( empty ( $user -> admin )) {
accessforbidden ();
}
2021-02-11 16:05:04 +00:00
/*
* Actions
*/
2021-08-09 15:41:23 +00:00
if ( $cancel ) {
2024-03-12 15:15:36 +00:00
$action = '' ;
2021-08-09 15:41:23 +00:00
}
2022-12-21 19:11:18 +00:00
include DOL_DOCUMENT_ROOT . '/core/actions_setmoduleoptions.inc.php' ;
2021-02-11 16:05:04 +00:00
if ( $action == 'updateMask' ) {
2023-01-04 14:10:09 +00:00
$maskconstorder = GETPOST ( 'maskconstorder' , 'aZ09' );
2021-02-11 16:05:04 +00:00
$maskorder = GETPOST ( 'maskorder' , 'alpha' );
2023-01-04 14:10:09 +00:00
if ( $maskconstorder && preg_match ( '/_MASK$/' , $maskconstorder )) {
2021-02-11 16:05:04 +00:00
$res = dolibarr_set_const ( $db , $maskconstorder , $maskorder , 'chaine' , 0 , '' , $conf -> entity );
if ( ! ( $res > 0 )) {
$error ++ ;
}
}
if ( ! $error ) {
setEventMessages ( $langs -> trans ( " SetupSaved " ), null , 'mesgs' );
} else {
setEventMessages ( $langs -> trans ( " Error " ), null , 'errors' );
}
} elseif ( $action == 'setmod' ) {
// TODO Check if numbering module chosen can be activated by calling method canBeActivated
2024-03-16 16:34:58 +00:00
$tmpobjectkey = GETPOST ( 'object' , 'aZ09' );
2021-02-11 16:05:04 +00:00
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'EVENTORGANIZATION_' . strtoupper ( $tmpobjectkey ) . " _ADDON " ;
dolibarr_set_const ( $db , $constforval , $value , 'chaine' , 0 , '' , $conf -> entity );
}
} elseif ( $action == 'set' ) {
// Activate a model
$ret = addDocumentModel ( $value , $type , $label , $scandir );
} elseif ( $action == 'del' ) {
$ret = delDocumentModel ( $value , $type );
if ( $ret > 0 ) {
2024-03-16 16:34:58 +00:00
$tmpobjectkey = GETPOST ( 'object' , 'aZ09' );
2021-02-11 16:05:04 +00:00
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'EVENTORGANIZATION_' . strtoupper ( $tmpobjectkey ) . '_ADDON_PDF' ;
2023-12-23 18:47:10 +00:00
if ( getDolGlobalString ( $constforval ) == " $value " ) {
2021-02-11 16:05:04 +00:00
dolibarr_del_const ( $db , $constforval , $conf -> entity );
}
}
}
2025-04-18 13:50:06 +00:00
}
2021-02-11 16:05:04 +00:00
/*
* View
*/
$form = new Form ( $db );
$page_name = " EventOrganizationSetup " ;
2021-04-29 08:01:10 +00:00
2024-06-08 12:53:14 +00:00
llxHeader ( '' , $langs -> trans ( $page_name ), '' , '' , 0 , 0 , '' , '' , '' , 'mod-admin page-eventorganization' );
2021-02-11 16:05:04 +00:00
// Subheader
2025-08-10 01:22:19 +00:00
$linkback = '<a href="' . ( $backtopage ? $backtopage : DOL_URL_ROOT . '/admin/modules.php?restore_lastsearch_values=1' ) . '">' . img_picto ( $langs -> trans ( " BackToModuleList " ), 'back' , 'class="pictofixedwidth"' ) . '<span class="hideonsmartphone">' . $langs -> trans ( " BackToModuleList " ) . '</span></a>' ;
2021-02-11 16:05:04 +00:00
2021-04-29 08:01:10 +00:00
print load_fiche_titre ( $langs -> trans ( $page_name ), $linkback , 'title_setup' );
2021-02-11 16:05:04 +00:00
// Configuration header
$head = eventorganizationAdminPrepareHead ();
2021-02-14 16:31:30 +00:00
print dol_get_fiche_head ( $head , 'settings' , $langs -> trans ( $page_name ), - 1 , 'eventorganization' );
2021-02-11 16:05:04 +00:00
// Setup page goes here
2025-04-18 13:50:06 +00:00
//print '<span class="opacitymedium">'.$langs->trans("EventOrganizationSetupPage").'</span><br>';
print '<br>' ;
2021-02-11 16:05:04 +00:00
2021-04-09 14:23:42 +00:00
2021-02-11 16:05:04 +00:00
if ( $action == 'edit' ) {
2026-06-23 12:15:35 +00:00
print '<form method="POST" action="' . dolBuildUrl ( $_SERVER [ " PHP_SELF " ]) . '" spellcheck="false">' ;
2021-02-11 16:05:04 +00:00
print '<input type="hidden" name="token" value="' . newToken () . '">' ;
print '<input type="hidden" name="action" value="update">' ;
print '<table class="noborder centpercent">' ;
2025-01-24 12:12:48 +00:00
print '<tr class="liste_titre"><td class="titlefieldmiddle">' . $langs -> trans ( " Parameter " ) . '</td><td></td></tr>' ;
2021-02-11 16:05:04 +00:00
2021-02-14 14:00:20 +00:00
foreach ( $arrayofparameters as $constname => $val ) {
2024-03-12 15:15:36 +00:00
if ( $val [ 'enabled' ] == 1 ) {
2021-04-15 08:45:44 +00:00
$setupnotempty ++ ;
2022-10-18 21:12:15 +00:00
print '<tr class="oddeven"><td><!-- ' . $constname . ' -->' ;
2021-04-15 08:45:44 +00:00
$tooltiphelp = (( $langs -> trans ( $constname . 'Tooltip' ) != $constname . 'Tooltip' ) ? $langs -> trans ( $constname . 'Tooltip' ) : '' );
2022-03-26 11:04:31 +00:00
$tooltiphelp .= (( $langs -> trans ( $constname . 'Tooltip2' ) && $langs -> trans ( $constname . 'Tooltip2' ) != $constname . 'Tooltip2' ) ? '<br><br>' . " \n " . $langs -> trans ( $constname . 'Tooltip2' ) : '' );
2021-04-15 08:45:44 +00:00
print '<span id="helplink' . $constname . '" class="spanforparamtooltip">' . $form -> textwithpicto ( $langs -> trans ( $constname ), $tooltiphelp , 1 , 'info' , '' , 0 , 3 , 'tootips' . $constname ) . '</span>' ;
print '</td><td>' ;
2021-02-14 14:00:20 +00:00
if ( $val [ 'type' ] == 'textarea' ) {
print '<textarea class="flat" name="' . $constname . '" id="' . $constname . '" cols="50" rows="5" wrap="soft">' . " \n " ;
2022-08-11 20:31:01 +00:00
print getDolGlobalString ( $constname );
2021-02-14 14:00:20 +00:00
print " </textarea> \n " ;
} elseif ( preg_match ( '/emailtemplate:/' , $val [ 'type' ])) {
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php' ;
$formmail = new FormMail ( $db );
$tmp = explode ( ':' , $val [ 'type' ]);
2021-02-14 15:41:57 +00:00
$nboftemplates = $formmail -> fetchAllEMailTemplate ( $tmp [ 1 ], $user , null , 1 ); // We set lang=null to get in priority record with no lang
2021-02-14 14:00:20 +00:00
//$arraydefaultmessage = $formmail->getEMailTemplate($db, $tmp[1], $user, null, 0, 1, '');
$arrayofmessagename = array ();
if ( is_array ( $formmail -> lines_model )) {
foreach ( $formmail -> lines_model as $modelmail ) {
//var_dump($modelmail);
$moreonlabel = '' ;
if ( ! empty ( $arrayofmessagename [ $modelmail -> label ])) {
$moreonlabel = ' <span class="opacitymedium">(' . $langs -> trans ( " SeveralLangugeVariatFound " ) . ')</span>' ;
}
// The 'label' is the key that is unique if we exclude the language
2021-02-14 15:41:57 +00:00
$arrayofmessagename [ $modelmail -> id ] = $langs -> trans ( preg_replace ( '/\(|\)/' , '' , $modelmail -> label )) . $moreonlabel ;
2021-02-14 14:00:20 +00:00
}
}
2022-08-11 20:31:01 +00:00
print $form -> selectarray ( $constname , $arrayofmessagename , getDolGlobalString ( $constname ), 'None' , 0 , 0 , '' , 0 , 0 , 0 , '' , '' , 1 );
2021-02-14 14:00:20 +00:00
} elseif ( preg_match ( '/category:/' , $val [ 'type' ])) {
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php' ;
$formother = new FormOther ( $db );
$tmp = explode ( ':' , $val [ 'type' ]);
print img_picto ( '' , 'category' , 'class="pictofixedwidth"' );
2025-03-16 19:21:22 +00:00
print $formother -> select_categories ( $tmp [ 1 ], getDolGlobalInt ( $constname ), $constname , 0 , $langs -> trans ( 'CustomersProspectsCategoriesShort' ));
2021-03-26 18:47:48 +00:00
} elseif ( preg_match ( '/thirdparty_type/' , $val [ 'type' ])) {
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php' ;
$formcompany = new FormCompany ( $db );
2025-03-15 10:26:19 +00:00
print $formcompany -> selectProspectCustomerType ( getDolGlobalString ( $constname ), $constname , 'customerorprospect' , 'form' , '' , '1' );
2021-04-15 10:14:34 +00:00
} elseif ( $val [ 'type' ] == 'product' ) {
2022-08-23 18:02:37 +00:00
if ( isModEnabled ( " product " ) || isModEnabled ( " service " )) {
2025-03-16 19:21:22 +00:00
$selected = getDolGlobalInt ( $constname );
2024-05-07 14:18:27 +00:00
print img_picto ( '' , 'product' , 'class="pictofixedwidth"' );
print $form -> select_produits ( $selected , $constname , '' , 0 , 0 , 1 , 2 , '' , 0 , array (), 0 , '1' , 0 , 'maxwidth500 widthcentpercentminusx' , 0 , '' , null , 1 );
2021-04-15 08:45:44 +00:00
}
2021-04-23 08:36:12 +00:00
} else {
2022-08-11 20:31:01 +00:00
print '<input name="' . $constname . '" class="flat ' . ( empty ( $val [ 'css' ]) ? 'minwidth200' : $val [ 'css' ]) . '" value="' . getDolGlobalString ( $constname ) . '">' ;
2021-02-14 14:00:20 +00:00
}
print '</td></tr>' ;
}
2021-02-11 16:05:04 +00:00
}
print '</table>' ;
2025-04-18 13:50:06 +00:00
print $form -> buttonsSaveCancel ( 'Save' , '' );
2021-02-11 16:05:04 +00:00
print '</form>' ;
print '<br>' ;
} else {
2025-04-18 14:11:51 +00:00
print '<table class="noborder centpercent">' ;
print '<tr class="liste_titre"><td class="titlefieldmiddle">' . $langs -> trans ( " Parameter " ) . '</td><td></td></tr>' ;
foreach ( $arrayofparameters as $constname => $val ) {
2025-04-18 15:22:09 +00:00
/* if ( $val [ 'enabled' ] != 1 ) {
2025-04-18 14:11:51 +00:00
continue ;
2025-04-18 15:22:09 +00:00
} */
2025-04-18 14:11:51 +00:00
$setupnotempty ++ ;
print '<tr class="oddeven">' ;
print '<td><!-- ' . $constname . ' -->' ;
$tooltiphelp = (( $langs -> trans ( $constname . 'Tooltip' ) != $constname . 'Tooltip' ) ? $langs -> trans ( $constname . 'Tooltip' ) : '' );
$tooltiphelp .= (( $langs -> trans ( $constname . 'Tooltip2' ) && $langs -> trans ( $constname . 'Tooltip2' ) != $constname . 'Tooltip2' ) ? '<br><br>' . " \n " . $langs -> trans ( $constname . 'Tooltip2' ) : '' );
print $form -> textwithpicto ( $langs -> trans ( $constname ), $tooltiphelp );
print '</td><td>' ;
if ( $val [ 'type' ] == 'textarea' ) {
print dol_nl2br ( getDolGlobalString ( $constname ));
} elseif ( preg_match ( '/emailtemplate:/' , $val [ 'type' ])) {
if ( getDolGlobalString ( $constname )) {
include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php' ;
$formmail = new FormMail ( $db );
$tmp = explode ( ':' , $val [ 'type' ]);
$labelemailtemplate = getDolGlobalString ( $constname );
if ( $labelemailtemplate && $labelemailtemplate != '-1' ) {
$template = $formmail -> getEMailTemplate ( $db , $tmp [ 1 ], $user , $langs , getDolGlobalInt ( $constname ));
if ( is_numeric ( $template ) && $template < 0 ) {
setEventMessages ( $formmail -> error , $formmail -> errors , 'errors' );
} else {
if ( $template -> label != 'default' ) {
print $langs -> trans ( $template -> label );
2022-10-18 21:12:15 +00:00
}
2021-04-15 10:57:19 +00:00
}
2021-02-14 14:00:20 +00:00
}
}
2025-04-18 14:11:51 +00:00
} elseif ( preg_match ( '/category:/' , $val [ 'type' ])) {
if ( getDolGlobalInt ( $constname )) {
$c = new Categorie ( $db );
$result = $c -> fetch ( getDolGlobalInt ( $constname ));
if ( $result < 0 ) {
setEventMessages ( null , $c -> errors , 'errors' );
}
2025-10-29 15:50:09 +00:00
$ways = $c -> print_all_ways ( 'auto' , 'none' , 0 , 1 ); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formatted text
2025-04-18 14:11:51 +00:00
$toprint = array ();
foreach ( $ways as $way ) {
$toprint [] = '<li class="select2-search-choice-dolibarr noborderoncategories"' . ( $c -> color ? ' style="background: #' . $c -> color . ';"' : ' style="background: #bbb"' ) . '>' . $way . '</li>' ;
}
print '<div class="select2-container-multi-dolibarr" style="width: 90%;"><ul class="select2-choices-dolibarr">' . implode ( ' ' , $toprint ) . '</ul></div>' ;
}
} elseif ( preg_match ( '/thirdparty_type/' , $val [ 'type' ])) {
if ( getDolGlobalString ( $constname ) == 2 ) {
print $langs -> trans ( " Prospect " );
} elseif ( getDolGlobalString ( $constname ) == 3 ) {
print $langs -> trans ( " ProspectCustomer " );
} elseif ( getDolGlobalString ( $constname ) == 1 ) {
print $langs -> trans ( " Customer " );
} elseif ( getDolGlobalString ( $constname ) == 0 ) {
print $langs -> trans ( " NorProspectNorCustomer " );
}
} elseif ( $val [ 'type' ] == 'product' ) {
$product = new Product ( $db );
$idproduct = getDolGlobalInt ( $constname );
if ( $idproduct > 0 ) {
$resprod = $product -> fetch ( $idproduct );
if ( $resprod > 0 ) {
print $product -> getNomUrl ( 1 );
} elseif ( $resprod < 0 ) {
setEventMessages ( $product -> error , $product -> errors , " errors " );
}
}
} else {
print getDolGlobalString ( $constname );
2021-02-11 16:05:04 +00:00
}
2025-04-18 14:11:51 +00:00
print '</td>' ;
2021-02-11 16:05:04 +00:00
2025-04-18 14:11:51 +00:00
print '</tr>' ;
2021-02-11 16:05:04 +00:00
}
2025-04-18 14:11:51 +00:00
print '</table>' ;
print '<div class="tabsAction">' ;
print '<a class="butAction" href="' . $_SERVER [ " PHP_SELF " ] . '?action=edit&token=' . newToken () . '">' . $langs -> trans ( " Modify " ) . '</a>' ;
print '</div>' ;
2021-02-11 16:05:04 +00:00
}
// Page end
print dol_get_fiche_end ();
llxFooter ();
$db -> close ();