2022-04-28 11:13:21 +02:00
< ? php
/* Copyright ( C ) 2004 - 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
2024-03-12 16:16:24 +01:00
* Copyright ( C ) 2024 MDW < mdeweerd @ users . noreply . github . com >
2024-11-04 23:53:20 +01:00
* Copyright ( C ) 2024 Frédéric France < frederic . france @ free . fr >
2022-04-28 11:13:21 +02: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 />.
*/
/**
* \file webhook / admin / webhook . php
* \ingroup webhook
* \brief Webhook setup page .
*/
// Load Dolibarr environment
2023-02-20 02:08:04 +01:00
require '../main.inc.php' ;
2022-04-28 11:13:21 +02:00
require_once DOL_DOCUMENT_ROOT . " /core/lib/admin.lib.php " ;
require_once DOL_DOCUMENT_ROOT . '/webhook/lib/webhook.lib.php' ;
2024-11-04 23:53:20 +01:00
/**
* @ var Conf $conf
* @ var DoliDB $db
* @ var HookManager $hookmanager
* @ var Translate $langs
* @ var User $user
*/
2022-04-28 11:13:21 +02:00
// Translations
$langs -> loadLangs ( array ( " admin " , " webhook " ));
2024-06-30 21:02:50 +02:00
// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context
2022-04-28 11:13:21 +02:00
$hookmanager -> initHooks ( array ( 'webhooksetup' , 'globalsetup' ));
// Access control
if ( ! $user -> admin ) {
accessforbidden ();
}
// Parameters
$action = GETPOST ( 'action' , 'aZ09' );
$backtopage = GETPOST ( 'backtopage' , 'alpha' );
$modulepart = GETPOST ( 'modulepart' , 'aZ09' ); // Used by actions_setmoduleoptions.inc.php
$value = GETPOST ( 'value' , 'alpha' );
$label = GETPOST ( 'label' , 'alpha' );
$scandir = GETPOST ( 'scan_dir' , 'alpha' );
$type = 'myobject' ;
$error = 0 ;
$setupnotempty = 0 ;
// Set this to 1 to use the factory to manage constants. Warning, the generated module will be compatible with version v15+ only
2023-02-20 02:08:04 +01:00
$useFormSetup = 1 ;
2022-04-28 11:13:21 +02:00
2023-02-20 02:08:04 +01:00
if ( ! class_exists ( 'FormSetup' )) {
2023-11-02 01:59:51 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formsetup.class.php' ;
2023-02-20 02:08:04 +01:00
}
2022-04-28 11:13:21 +02:00
2023-02-20 02:08:04 +01:00
$formSetup = new FormSetup ( $db );
2022-04-28 11:13:21 +02:00
2023-02-20 02:08:04 +01:00
$setupnotempty = count ( $formSetup -> items );
2022-04-28 11:13:21 +02:00
$dirmodels = array_merge ( array ( '/' ), ( array ) $conf -> modules_parts [ 'models' ]);
/*
* Actions
*/
include DOL_DOCUMENT_ROOT . '/core/actions_setmoduleoptions.inc.php' ;
if ( $action == 'updateMask' ) {
2023-01-04 15:10:09 +01:00
$maskconst = GETPOST ( 'maskconst' , 'aZ09' );
2022-04-28 11:13:21 +02:00
$maskvalue = GETPOST ( 'maskvalue' , 'alpha' );
2023-01-04 15:10:09 +01:00
if ( $maskconst && preg_match ( '/_MASK$/' , $maskconst )) {
2022-04-28 11:13:21 +02:00
$res = dolibarr_set_const ( $db , $maskconst , $maskvalue , '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 17:34:58 +01:00
$tmpobjectkey = GETPOST ( 'object' , 'aZ09' );
2022-04-28 11:13:21 +02:00
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'WEBHOOK_' . 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 17:34:58 +01:00
$tmpobjectkey = GETPOST ( 'object' , 'aZ09' );
2022-04-28 11:13:21 +02:00
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'WEBHOOK_' . strtoupper ( $tmpobjectkey ) . '_ADDON_PDF' ;
2023-12-23 19:47:10 +01:00
if ( getDolGlobalString ( $constforval ) == " $value " ) {
2022-04-28 11:13:21 +02:00
dolibarr_del_const ( $db , $constforval , $conf -> entity );
}
}
}
} elseif ( $action == 'setdoc' ) {
// Set or unset default model
2024-03-16 17:34:58 +01:00
$tmpobjectkey = GETPOST ( 'object' , 'aZ09' );
2022-04-28 11:13:21 +02:00
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'WEBHOOK_' . strtoupper ( $tmpobjectkey ) . '_ADDON_PDF' ;
if ( dolibarr_set_const ( $db , $constforval , $value , 'chaine' , 0 , '' , $conf -> entity )) {
// The constant that was read before the new set
// We therefore requires a variable to have a coherent view
$conf -> global -> $constforval = $value ;
}
// We disable/enable the document template (into llx_document_model table)
$ret = delDocumentModel ( $value , $type );
if ( $ret > 0 ) {
$ret = addDocumentModel ( $value , $type , $label , $scandir );
}
}
} elseif ( $action == 'unsetdoc' ) {
2024-03-16 17:34:58 +01:00
$tmpobjectkey = GETPOST ( 'object' , 'aZ09' );
2022-04-28 11:13:21 +02:00
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'WEBHOOK_' . strtoupper ( $tmpobjectkey ) . '_ADDON_PDF' ;
dolibarr_del_const ( $db , $constforval , $conf -> entity );
}
}
/*
* View
*/
$form = new Form ( $db );
$help_url = '' ;
$page_name = " WebhookSetup " ;
2024-06-08 17:03:08 +02:00
llxHeader ( '' , $langs -> trans ( $page_name ), $help_url , '' , 0 , 0 , '' , '' , '' , 'mod-admin page-webhook' );
2022-04-28 11:13:21 +02:00
// Subheader
$linkback = '<a href="' . ( $backtopage ? $backtopage : DOL_URL_ROOT . '/admin/modules.php?restore_lastsearch_values=1' ) . '">' . $langs -> trans ( " BackToModuleList " ) . '</a>' ;
print load_fiche_titre ( $langs -> trans ( $page_name ), $linkback , 'title_setup' );
// Configuration header
$head = webhookAdminPrepareHead ();
2023-02-20 02:08:04 +01:00
print dol_get_fiche_head ( $head , 'settings' , $langs -> trans ( $page_name ), - 1 , " webhook " );
2022-04-28 11:13:21 +02:00
2024-06-25 01:54:23 +02:00
print '<br>' ;
2022-04-28 11:13:21 +02:00
// Setup page goes here
2024-06-25 01:54:23 +02:00
print '<span class="opacitymedium">' . $langs -> trans ( " WebhookSetupPage " , $langs -> transnoentitiesnoconv ( " Targets " )) . '...</span><br><br>' ;
2022-04-28 11:13:21 +02:00
if ( $action == 'edit' ) {
2024-10-05 18:55:36 +02:00
if ( $useFormSetup && ( float ) DOL_VERSION >= 15 ) { // @phpstan-ignore-line
2022-04-28 11:13:21 +02:00
print $formSetup -> generateOutput ( true );
} else {
print '<form method="POST" action="' . $_SERVER [ " PHP_SELF " ] . '">' ;
print '<input type="hidden" name="token" value="' . newToken () . '">' ;
print '<input type="hidden" name="action" value="update">' ;
print '<table class="noborder centpercent">' ;
2025-01-24 13:12:48 +01:00
print '<tr class="liste_titre"><td class="titlefield">' . $langs -> trans ( " Parameter " ) . '</td><td></td></tr>' ;
2022-04-28 11:13:21 +02:00
2024-09-18 03:27:25 +02:00
// @phan-suppress-next-line PhanEmptyForeach
2022-04-28 11:13:21 +02:00
foreach ( $arrayofparameters as $constname => $val ) {
2024-03-09 02:43:57 +01:00
if ( $val [ 'enabled' ] == 1 ) {
2022-04-28 11:13:21 +02:00
$setupnotempty ++ ;
print '<tr class="oddeven"><td>' ;
$tooltiphelp = (( $langs -> trans ( $constname . 'Tooltip' ) != $constname . 'Tooltip' ) ? $langs -> trans ( $constname . 'Tooltip' ) : '' );
print '<span id="helplink' . $constname . '" class="spanforparamtooltip">' . $form -> textwithpicto ( $langs -> trans ( $constname ), $tooltiphelp , 1 , 'info' , '' , 0 , 3 , 'tootips' . $constname ) . '</span>' ;
print '</td><td>' ;
if ( $val [ 'type' ] == 'textarea' ) {
print '<textarea class="flat" name="' . $constname . '" id="' . $constname . '" cols="50" rows="5" wrap="soft">' . " \n " ;
2022-12-30 18:43:43 +01:00
print getDolGlobalString ( $constname );
2022-04-28 11:13:21 +02:00
print " </textarea> \n " ;
2024-03-09 02:43:57 +01:00
} elseif ( $val [ 'type' ] == 'html' ) {
2022-04-28 11:13:21 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
2023-06-09 13:45:19 +02:00
$doleditor = new DolEditor ( $constname , getDolGlobalString ( $constname ), '' , 160 , 'dolibarr_notes' , '' , false , false , isModEnabled ( 'fckeditor' ), ROWS_5 , '90%' );
2022-04-28 11:13:21 +02:00
$doleditor -> Create ();
} elseif ( $val [ 'type' ] == 'yesno' ) {
2022-12-30 18:43:43 +01:00
print $form -> selectyesno ( $constname , getDolGlobalString ( $constname ), 1 );
2022-04-28 11:13:21 +02:00
} 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' ]);
$nboftemplates = $formmail -> fetchAllEMailTemplate ( $tmp [ 1 ], $user , null , 1 ); // We set lang=null to get in priority record with no lang
//$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
$arrayofmessagename [ $modelmail -> id ] = $langs -> trans ( preg_replace ( '/\(|\)/' , '' , $modelmail -> label )) . $moreonlabel ;
}
}
2023-08-05 15:44:28 +02:00
print $form -> selectarray ( $constname , $arrayofmessagename , getDolGlobalString ( $constname ), 'None' , 0 , 0 , '' , 0 , 0 , 0 , '' , '' , 1 );
2022-04-28 11:13:21 +02: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"' );
2023-08-05 15:44:28 +02:00
print $formother -> select_categories ( $tmp [ 1 ], getDolGlobalString ( $constname ), $constname , 0 , $langs -> trans ( 'CustomersProspectsCategoriesShort' ));
2022-04-28 11:13:21 +02:00
} elseif ( preg_match ( '/thirdparty_type/' , $val [ 'type' ])) {
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php' ;
$formcompany = new FormCompany ( $db );
2023-08-05 15:44:28 +02:00
print $formcompany -> selectProspectCustomerType ( getDolGlobalString ( $constname ), $constname );
2022-04-28 11:13:21 +02:00
} elseif ( $val [ 'type' ] == 'securekey' ) {
2023-08-05 15:44:28 +02:00
print '<input required="required" type="text" class="flat" id="' . $constname . '" name="' . $constname . '" value="' . ( GETPOST ( $constname , 'alpha' ) ? GETPOST ( $constname , 'alpha' ) : getDolGlobalString ( $constname )) . '" size="40">' ;
2022-04-28 11:13:21 +02:00
if ( ! empty ( $conf -> use_javascript_ajax )) {
print ' ' . img_picto ( $langs -> trans ( 'Generate' ), 'refresh' , 'id="generate_token' . $constname . '" class="linkobject"' );
}
2022-07-27 13:42:32 +02:00
// Add button to autosuggest a key
include_once DOL_DOCUMENT_ROOT . '/core/lib/security2.lib.php' ;
print dolJSToSetRandomPassword ( $constname , 'generate_token' . $constname );
2022-04-28 11:13:21 +02:00
} elseif ( $val [ 'type' ] == 'product' ) {
2022-08-23 20:02:37 +02:00
if ( isModEnabled ( " product " ) || isModEnabled ( " service " )) {
2023-12-23 19:47:10 +01:00
$selected = getDolGlobalString ( $constname );
2022-04-28 11:13:21 +02:00
$form -> select_produits ( $selected , $constname , '' , 0 );
}
} else {
2023-08-05 15:44:28 +02:00
print '<input name="' . $constname . '" class="flat ' . ( empty ( $val [ 'css' ]) ? 'minwidth200' : $val [ 'css' ]) . '" value="' . getDolGlobalString ( $constname ) . '">' ;
2022-04-28 11:13:21 +02:00
}
print '</td></tr>' ;
}
}
print '</table>' ;
print '<br><div class="center">' ;
print '<input class="button button-save" type="submit" value="' . $langs -> trans ( " Save " ) . '">' ;
print '</div>' ;
print '</form>' ;
}
print '<br>' ;
} else {
2024-10-05 18:55:36 +02:00
if ( $useFormSetup && ( float ) DOL_VERSION >= 15 ) { // @phpstan-ignore-line
2022-04-28 11:13:21 +02:00
if ( ! empty ( $formSetup -> items )) {
print $formSetup -> generateOutput ();
}
} else {
if ( ! empty ( $arrayofparameters )) {
print '<table class="noborder centpercent">' ;
2025-01-24 13:12:48 +01:00
print '<tr class="liste_titre"><td class="titlefield">' . $langs -> trans ( " Parameter " ) . '</td><td></td></tr>' ;
2022-04-28 11:13:21 +02:00
foreach ( $arrayofparameters as $constname => $val ) {
2024-03-09 02:43:57 +01:00
if ( $val [ 'enabled' ] == 1 ) {
2022-04-28 11:13:21 +02:00
$setupnotempty ++ ;
print '<tr class="oddeven"><td>' ;
$tooltiphelp = (( $langs -> trans ( $constname . 'Tooltip' ) != $constname . 'Tooltip' ) ? $langs -> trans ( $constname . 'Tooltip' ) : '' );
print $form -> textwithpicto ( $langs -> trans ( $constname ), $tooltiphelp );
print '</td><td>' ;
if ( $val [ 'type' ] == 'textarea' ) {
2022-12-30 18:43:43 +01:00
print dol_nl2br ( getDolGlobalString ( $constname ));
2024-03-09 02:43:57 +01:00
} elseif ( $val [ 'type' ] == 'html' ) {
2022-12-30 18:43:43 +01:00
print getDolGlobalString ( $constname );
2022-04-28 11:13:21 +02:00
} elseif ( $val [ 'type' ] == 'yesno' ) {
print ajax_constantonoff ( $constname );
} 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' ]);
2022-12-30 18:43:43 +01:00
$template = $formmail -> getEMailTemplate ( $db , $tmp [ 1 ], $user , $langs , getDolGlobalString ( $constname ));
2024-03-09 02:43:57 +01:00
if ( $template < 0 ) {
2022-04-28 11:13:21 +02:00
setEventMessages ( null , $formmail -> errors , 'errors' );
}
print $langs -> trans ( $template -> label );
} elseif ( preg_match ( '/category:/' , $val [ 'type' ])) {
$c = new Categorie ( $db );
2022-12-30 18:43:43 +01:00
$result = $c -> fetch ( getDolGlobalString ( $constname ));
2022-04-28 11:13:21 +02:00
if ( $result < 0 ) {
setEventMessages ( null , $c -> errors , 'errors' );
2023-12-04 11:41:14 +01:00
} elseif ( $result > 0 ) {
2024-01-11 09:59:52 +01:00
$ways = $c -> print_all_ways ( ' >> ' , 'none' , 0 , 1 ); // $ways[0] = "ccc2 >> ccc2a >> ccc2a1" with html formatted text
2022-04-28 11:13:21 +02: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' ])) {
2024-03-09 02:43:57 +01:00
if ( getDolGlobalInt ( $constname ) == 2 ) {
2022-04-28 11:13:21 +02:00
print $langs -> trans ( " Prospect " );
2024-03-09 02:43:57 +01:00
} elseif ( getDolGlobalInt ( $constname ) == 3 ) {
2022-04-28 11:13:21 +02:00
print $langs -> trans ( " ProspectCustomer " );
2024-03-09 02:43:57 +01:00
} elseif ( getDolGlobalInt ( $constname ) == 1 ) {
2022-04-28 11:13:21 +02:00
print $langs -> trans ( " Customer " );
2024-03-09 02:43:57 +01:00
} elseif ( getDolGlobalInt ( $constname ) == 0 ) {
2022-04-28 11:13:21 +02:00
print $langs -> trans ( " NorProspectNorCustomer " );
}
} elseif ( $val [ 'type' ] == 'product' ) {
$product = new Product ( $db );
2022-12-30 18:43:43 +01:00
$resprod = $product -> fetch ( getDolGlobalInt ( $constname ));
2022-04-28 11:13:21 +02:00
if ( $resprod > 0 ) {
print $product -> ref ;
} elseif ( $resprod < 0 ) {
setEventMessages ( null , $object -> errors , " errors " );
}
} else {
2022-12-30 18:43:43 +01:00
print getDolGlobalString ( $constname );
2022-04-28 11:13:21 +02:00
}
print '</td></tr>' ;
}
}
print '</table>' ;
}
}
if ( $setupnotempty ) {
print '<div class="tabsAction">' ;
print '<a class="butAction" href="' . $_SERVER [ " PHP_SELF " ] . '?action=edit&token=' . newToken () . '">' . $langs -> trans ( " Modify " ) . '</a>' ;
print '</div>' ;
} else {
//print '<br>'.$langs->trans("NothingToSetup");
}
}
2024-04-11 10:55:42 +02:00
/*
2022-04-28 11:13:21 +02:00
if ( empty ( $setupnotempty )) {
print '<br>' . $langs -> trans ( " NothingToSetup " );
}
2024-04-11 10:55:42 +02:00
*/
2022-04-28 11:13:21 +02:00
// Page end
print dol_get_fiche_end ();
llxFooter ();
$db -> close ();