2021-04-28 10:11:49 +02:00
< ? php
2024-03-16 11:04:54 +01:00
/* Copyright ( C ) 2004 - 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
2025-02-08 01:49:29 +01:00
* Copyright ( C ) 2024 - 2025 MDW < mdeweerd @ users . noreply . github . com >
2024-03-16 13:09:25 +01:00
* Copyright ( C ) 2024 Frédéric France < frederic . france @ free . fr >
2021-04-28 10:11:49 +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 />.
*/
/**
2021-10-02 13:31:54 +02:00
* \file htdocs / admin / knowledgemanagement . php
2021-04-28 10:11:49 +02:00
* \ingroup knowledgemanagement
* \brief KnowledgeManagement setup page .
*/
// Load Dolibarr environment
2021-06-06 21:35:39 +02:00
require '../main.inc.php' ;
2021-04-28 10:11:49 +02:00
// Libraries
require_once DOL_DOCUMENT_ROOT . " /core/lib/admin.lib.php " ;
2021-04-28 14:57:49 +02:00
require_once DOL_DOCUMENT_ROOT . " /knowledgemanagement/lib/knowledgemanagement.lib.php " ;
2024-03-16 13:09:25 +01:00
require_once DOL_DOCUMENT_ROOT . " /knowledgemanagement/class/knowledgerecord.class.php " ;
2021-04-28 10:11:49 +02:00
2024-11-04 23:53:20 +01:00
/**
* @ var Conf $conf
* @ var DoliDB $db
* @ var HookManager $hookmanager
* @ var Translate $langs
* @ var User $user
*/
2021-04-28 10:11:49 +02:00
// Translations
2021-04-28 14:57:49 +02:00
$langs -> loadLangs ( array ( " admin " , " knowledgemanagement " ));
2021-04-28 10:11:49 +02:00
// Parameters
$action = GETPOST ( 'action' , 'aZ09' );
$backtopage = GETPOST ( 'backtopage' , 'alpha' );
$value = GETPOST ( 'value' , 'alpha' );
2022-01-26 13:49:46 +01:00
$modulepart = GETPOST ( 'modulepart' , 'aZ09' ); // Used by actions_setmoduleoptions.inc.php
2021-04-28 10:11:49 +02:00
$label = GETPOST ( 'label' , 'alpha' );
$scandir = GETPOST ( 'scan_dir' , 'alpha' );
2021-04-30 15:22:17 +02:00
$type = 'knowledgemanagement' ;
2021-04-28 10:11:49 +02:00
$arrayofparameters = array (
2024-03-15 20:26:22 +01:00
//'KNOWLEDGEMANAGEMENT_MYPARAM1' => array('type' => 'string', 'css' => 'minwidth500' ,'enabled' => 0),
2021-04-28 10:11:49 +02:00
//'KNOWLEDGEMANAGEMENT_MYPARAM2'=>array('type'=>'textarea','enabled'=>1),
//'KNOWLEDGEMANAGEMENT_MYPARAM3'=>array('type'=>'category:'.Categorie::TYPE_CUSTOMER, 'enabled'=>1),
//'KNOWLEDGEMANAGEMENT_MYPARAM4'=>array('type'=>'emailtemplate:thirdparty', 'enabled'=>1),
//'KNOWLEDGEMANAGEMENT_MYPARAM5'=>array('type'=>'yesno', 'enabled'=>1),
//'KNOWLEDGEMANAGEMENT_MYPARAM5'=>array('type'=>'thirdparty_type', 'enabled'=>1),
);
$error = 0 ;
$setupnotempty = 0 ;
2021-04-30 15:22:17 +02:00
// Access control
if ( ! $user -> admin ) {
accessforbidden ();
}
2024-03-16 22:04:39 +01:00
if ( ! getDolGlobalString ( 'KNOWLEDGEMANAGEMENT_KNOWLEDGERECORD_ADDON' )) {
$conf -> global -> KNOWLEDGEMANAGEMENT_KNOWLEDGERECORD_ADDON = 'mod_knowledgerecord_standard' ;
}
2024-03-15 20:26:22 +01:00
$moduledir = 'knowledgemanagement' ;
$myTmpObjects = array ();
// TODO Scan list of objects to fill this array
2024-03-16 13:09:25 +01:00
$myTmpObjects [ 'knowledgemanagement' ] = array ( 'label' => 'KnowledgeManagement' , 'includerefgeneration' => 1 , 'includedocgeneration' => 0 , 'class' => 'KnowledgeRecord' );
2024-03-15 20:26:22 +01:00
2024-03-16 22:00:55 +01:00
$tmpobjectkey = GETPOST ( 'object' , 'aZ09' );
if ( $tmpobjectkey && ! array_key_exists ( $tmpobjectkey , $myTmpObjects )) {
accessforbidden ( 'Bad value for object. Hack attempt ?' );
}
2021-04-28 10:11:49 +02:00
/*
* Actions
*/
2021-10-02 13:31:54 +02:00
include DOL_DOCUMENT_ROOT . '/core/actions_setmoduleoptions.inc.php' ;
2021-04-28 10:11:49 +02:00
if ( $action == 'updateMask' ) {
2024-03-16 13:23:30 +01:00
$maskconst = GETPOST ( 'maskconst' , 'aZ09' );
2024-03-16 13:20:36 +01:00
$maskdata = GETPOST ( 'maskKnowledgeRecord' , 'alpha' );
2021-04-28 10:11:49 +02:00
2023-01-04 15:10:09 +01:00
if ( $maskconst && preg_match ( '/_MASK$/' , $maskconst )) {
2024-03-16 13:20:36 +01:00
$res = dolibarr_set_const ( $db , $maskconst , $maskdata , 'chaine' , 0 , '' , $conf -> entity );
2021-04-28 10:11:49 +02:00
if ( ! ( $res > 0 )) {
$error ++ ;
}
}
if ( ! $error ) {
setEventMessages ( $langs -> trans ( " SetupSaved " ), null , 'mesgs' );
} else {
setEventMessages ( $langs -> trans ( " Error " ), null , 'errors' );
}
2024-03-16 22:26:24 +01:00
} elseif ( $action == 'specimen' && $tmpobjectkey ) {
2021-04-28 10:11:49 +02:00
$modele = GETPOST ( 'module' , 'alpha' );
2024-03-16 22:00:55 +01:00
$className = $myTmpObjects [ $tmpobjectkey ][ 'class' ];
$tmpobject = new $className ( $db );
$tmpobject -> initAsSpecimen ();
// Search template files
$file = '' ;
$className = '' ;
$dirmodels = array_merge ( array ( '/' ), ( array ) $conf -> modules_parts [ 'models' ]);
foreach ( $dirmodels as $reldir ) {
$file = dol_buildpath ( $reldir . " core/modules/knowledgemanagement/doc/pdf_ " . $modele . " _ " . strtolower ( $tmpobjectkey ) . " .modules.php " , 0 );
if ( file_exists ( $file )) {
$className = " pdf_ " . $modele ;
break ;
2021-04-28 10:11:49 +02:00
}
2024-03-16 22:00:55 +01:00
}
2021-04-28 10:11:49 +02:00
2024-03-16 22:00:55 +01:00
if ( $className !== '' ) {
require_once $file ;
2021-04-28 10:11:49 +02:00
2024-03-16 22:00:55 +01:00
$module = new $className ( $db );
2024-08-14 19:21:10 +02:00
'@phan-var-force ModelePDFKnowledgeRecord $module' ;
2021-04-28 10:11:49 +02:00
2024-03-16 22:00:55 +01:00
if ( $module -> write_file ( $tmpobject , $langs ) > 0 ) {
header ( " Location: " . DOL_URL_ROOT . " /document.php?modulepart= " . strtolower ( $tmpobjectkey ) . " &file=SPECIMEN.pdf " );
return ;
2021-04-28 10:11:49 +02:00
} else {
2024-03-16 22:00:55 +01:00
setEventMessages ( $module -> error , null , 'errors' );
dol_syslog ( $module -> error , LOG_ERR );
2021-04-28 10:11:49 +02:00
}
2024-03-16 22:00:55 +01:00
} else {
setEventMessages ( $langs -> trans ( " ErrorModuleNotFound " ), null , 'errors' );
dol_syslog ( $langs -> trans ( " ErrorModuleNotFound " ), LOG_ERR );
2021-04-28 10:11:49 +02:00
}
} elseif ( $action == 'setmod' ) {
// TODO Check if numbering module chosen can be activated by calling method canBeActivated
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'KNOWLEDGEMANAGEMENT_' . 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' );
2021-04-28 10:11:49 +02:00
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'KNOWLEDGEMANAGEMENT_' . strtoupper ( $tmpobjectkey ) . '_ADDON_PDF' ;
2023-12-23 19:47:10 +01:00
if ( getDolGlobalString ( $constforval ) == " $value " ) {
2021-04-28 10:11:49 +02:00
dolibarr_del_const ( $db , $constforval , $conf -> entity );
}
}
}
} elseif ( $action == 'setdoc' ) {
// Set or unset default model
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'KNOWLEDGEMANAGEMENT_' . 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' ) {
if ( ! empty ( $tmpobjectkey )) {
$constforval = 'KNOWLEDGEMANAGEMENT_' . strtoupper ( $tmpobjectkey ) . '_ADDON_PDF' ;
dolibarr_del_const ( $db , $constforval , $conf -> entity );
}
}
/*
* View
*/
$form = new Form ( $db );
$dirmodels = array_merge ( array ( '/' ), ( array ) $conf -> modules_parts [ 'models' ]);
$page_name = " KnowledgeManagementSetup " ;
2024-06-08 14:53:14 +02:00
llxHeader ( '' , $langs -> trans ( $page_name ), '' , '' , 0 , 0 , '' , '' , '' , 'mod-admin page-knowledgemanagement' );
2021-04-28 10:11:49 +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 = knowledgemanagementAdminPrepareHead ();
2021-05-02 12:15:31 +02:00
print dol_get_fiche_head ( $head , 'setup' , $langs -> trans ( 'ModuleKnowledgeManagementName' ), - 1 , " knowledgemanagement " );
2021-04-28 10:11:49 +02:00
// Setup page goes here
echo '<span class="opacitymedium">' . $langs -> trans ( " KnowledgeManagementSetupPage " ) . '</span><br><br>' ;
if ( $action == 'edit' ) {
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>' ;
2021-04-28 10:11:49 +02:00
2024-08-17 19:32:52 +02:00
// @phan-suppress-next-line PhanEmptyForeach
2021-04-28 10:11:49 +02:00
foreach ( $arrayofparameters as $constname => $val ) {
2024-03-09 02:43:57 +01:00
if ( $val [ 'enabled' ] == 1 ) {
2021-04-28 10:11:49 +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' ) {
2022-08-24 10:07:02 +02:00
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 );
2021-04-28 10:11:49 +02:00
print " </textarea> \n " ;
2022-08-24 10:07:02 +02:00
} elseif ( $val [ 'type' ] == 'html' ) {
2021-04-28 10:11:49 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
2022-12-30 18:43:43 +01:00
$doleditor = new DolEditor ( $constname , getDolGlobalString ( $constname ), '' , 160 , 'dolibarr_notes' , '' , false , false , isModEnabled ( 'fckeditor' ), ROWS_5 , '90%' );
2021-04-28 10:11:49 +02:00
$doleditor -> Create ();
} elseif ( $val [ 'type' ] == 'yesno' ) {
2022-12-30 18:43:43 +01:00
print $form -> selectyesno ( $constname , getDolGlobalString ( $constname ), 1 );
2021-04-28 10:11:49 +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 );
2021-04-28 10:11:49 +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' ));
2021-04-28 10:11:49 +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 );
2021-04-28 10:11:49 +02:00
} else {
2023-08-05 15:44:28 +02:00
print '<input name="' . $constname . '" class="flat ' . ( empty ( $val [ 'css' ]) ? 'minwidth200' : $val [ 'css' ]) . '" value="' . getDolGlobalString ( $constname ) . '">' ;
2021-04-28 10:11:49 +02:00
}
print '</td></tr>' ;
}
}
print '</table>' ;
2021-08-24 16:10:20 +02:00
print $form -> buttonsSaveCancel ( " Save " , '' );
2021-04-28 10:11:49 +02:00
print '</form>' ;
print '<br>' ;
} 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>' ;
2021-04-28 10:11:49 +02:00
2024-08-17 19:32:52 +02:00
// @phan-suppress-next-line PhanEmptyForeach
2021-04-28 10:11:49 +02:00
foreach ( $arrayofparameters as $constname => $val ) {
2024-03-09 02:43:57 +01:00
if ( $val [ 'enabled' ] == 1 ) {
2021-04-28 10:11:49 +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 );
2021-04-28 10:11:49 +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 ) {
2021-04-28 10:11:49 +02:00
setEventMessages ( null , $formmail -> errors , 'errors' );
}
print $langs -> trans ( $template -> label );
} elseif ( preg_match ( '/category:/' , $val [ 'type' ])) {
$c = new Categorie ( $db );
2023-08-05 15:44:28 +02:00
$result = $c -> fetch ( getDolGlobalInt ( $constname ));
2021-04-28 10:11:49 +02:00
if ( $result < 0 ) {
setEventMessages ( null , $c -> errors , 'errors' );
}
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
2021-04-28 10:11:49 +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 ( getDolGlobalString ( $constname ) == 2 ) {
2021-04-28 10:11:49 +02:00
print $langs -> trans ( " Prospect " );
2024-03-09 02:43:57 +01:00
} elseif ( getDolGlobalString ( $constname ) == 3 ) {
2021-04-28 10:11:49 +02:00
print $langs -> trans ( " ProspectCustomer " );
2024-03-09 02:43:57 +01:00
} elseif ( getDolGlobalInt ( $constname ) == 1 ) {
2021-04-28 10:11:49 +02:00
print $langs -> trans ( " Customer " );
2024-03-09 02:43:57 +01:00
} elseif ( getDolGlobalInt ( $constname ) == 0 ) {
2021-04-28 10:11:49 +02:00
print $langs -> trans ( " NorProspectNorCustomer " );
}
} else {
2022-12-30 18:43:43 +01:00
print getDolGlobalString ( $constname );
2021-04-28 10:11:49 +02:00
}
print '</td></tr>' ;
}
}
print '</table>' ;
print '<div class="tabsAction">' ;
2021-09-27 12:24:01 +02:00
print '<a class="butAction" href="' . $_SERVER [ " PHP_SELF " ] . '?action=edit&token=' . newToken () . '">' . $langs -> trans ( " Modify " ) . '</a>' ;
2021-04-28 10:11:49 +02:00
print '</div>' ;
} else {
//print '<br>'.$langs->trans("NothingToSetup");
}
}
foreach ( $myTmpObjects as $myTmpObjectKey => $myTmpObjectArray ) {
2024-03-16 11:16:32 +01:00
if ( ! empty ( $myTmpObjectArray [ 'includerefgeneration' ])) {
2021-04-28 10:11:49 +02:00
/*
* Orders Numbering model
*/
$setupnotempty ++ ;
print load_fiche_titre ( $langs -> trans ( " NumberingModules " , $myTmpObjectKey ), '' , '' );
print '<table class="noborder centpercent">' ;
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( " Name " ) . '</td>' ;
print '<td>' . $langs -> trans ( " Description " ) . '</td>' ;
print '<td class="nowrap">' . $langs -> trans ( " Example " ) . '</td>' ;
print '<td class="center" width="60">' . $langs -> trans ( " Status " ) . '</td>' ;
print '<td class="center" width="16">' . $langs -> trans ( " ShortInfo " ) . '</td>' ;
print '</tr>' . " \n " ;
clearstatcache ();
foreach ( $dirmodels as $reldir ) {
$dir = dol_buildpath ( $reldir . " core/modules/ " . $moduledir );
if ( is_dir ( $dir )) {
$handle = opendir ( $dir );
if ( is_resource ( $handle )) {
while (( $file = readdir ( $handle )) !== false ) {
2024-03-16 13:09:25 +01:00
if ( strpos ( $file , 'mod_' . strtolower ( $myTmpObjectArray [ 'class' ]) . '_' ) === 0 && substr ( $file , dol_strlen ( $file ) - 3 , 3 ) == 'php' ) {
2021-04-28 10:11:49 +02:00
$file = substr ( $file , 0 , dol_strlen ( $file ) - 4 );
require_once $dir . '/' . $file . '.php' ;
$module = new $file ( $db );
2024-08-17 19:32:52 +02:00
'@phan-var-force ModeleNumRefKnowledgeRecord $module' ;
2021-04-28 10:11:49 +02:00
// Show modules according to features level
2023-11-27 12:24:18 +01:00
if ( $module -> version == 'development' && getDolGlobalInt ( 'MAIN_FEATURES_LEVEL' ) < 2 ) {
2021-04-28 10:11:49 +02:00
continue ;
}
2023-11-27 12:24:18 +01:00
if ( $module -> version == 'experimental' && getDolGlobalInt ( 'MAIN_FEATURES_LEVEL' ) < 1 ) {
2021-04-28 10:11:49 +02:00
continue ;
}
if ( $module -> isEnabled ()) {
dol_include_once ( '/' . $moduledir . '/class/' . strtolower ( $myTmpObjectKey ) . '.class.php' );
print '<tr class="oddeven"><td>' . $module -> name . " </td><td> \n " ;
2023-08-09 18:00:31 +02:00
print $module -> info ( $langs );
2021-04-28 10:11:49 +02:00
print '</td>' ;
// Show example of numbering model
print '<td class="nowrap">' ;
$tmp = $module -> getExample ();
if ( preg_match ( '/^Error/' , $tmp )) {
$langs -> load ( " errors " );
print '<div class="error">' . $langs -> trans ( $tmp ) . '</div>' ;
} elseif ( $tmp == 'NotConfigured' ) {
2021-09-05 02:25:32 +02:00
print '<span class="opacitymedium">' . $langs -> trans ( $tmp ) . '</span>' ;
2021-04-28 10:11:49 +02:00
} else {
print $tmp ;
}
print '</td>' . " \n " ;
print '<td class="center">' ;
2024-03-16 13:36:55 +01:00
$constforvar = 'KNOWLEDGEMANAGEMENT_' . strtoupper ( $myTmpObjectArray [ 'class' ]) . '_ADDON' ;
2022-05-08 15:18:34 +02:00
if ( getDolGlobalString ( $constforvar ) == $file ) {
2021-04-28 10:11:49 +02:00
print img_picto ( $langs -> trans ( " Activated " ), 'switch_on' );
} else {
2024-03-16 13:36:55 +01:00
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?action=setmod&token=' . newToken () . '&object=' . strtolower ( $myTmpObjectArray [ 'class' ]) . '&value=' . urlencode ( $file ) . '">' ;
2021-04-28 10:11:49 +02:00
print img_picto ( $langs -> trans ( " Disabled " ), 'switch_off' );
print '</a>' ;
}
print '</td>' ;
2024-03-16 12:28:15 +01:00
$className = $myTmpObjectArray [ 'class' ];
$mytmpinstance = new $className ( $db );
2021-04-28 10:11:49 +02:00
$mytmpinstance -> initAsSpecimen ();
// Info
$htmltooltip = '' ;
$htmltooltip .= '' . $langs -> trans ( " Version " ) . ': <b>' . $module -> getVersion () . '</b><br>' ;
$nextval = $module -> getNextValue ( $mytmpinstance );
if ( " $nextval " != $langs -> trans ( " NotAvailable " )) { // Keep " on nextval
$htmltooltip .= '' . $langs -> trans ( " NextValue " ) . ': ' ;
if ( $nextval ) {
if ( preg_match ( '/^Error/' , $nextval ) || $nextval == 'NotConfigured' ) {
$nextval = $langs -> trans ( $nextval );
}
$htmltooltip .= $nextval . '<br>' ;
} else {
$htmltooltip .= $langs -> trans ( $module -> error ) . '<br>' ;
}
}
print '<td class="center">' ;
2025-02-08 01:49:29 +01:00
print $form -> textwithpicto ( '' , $htmltooltip , 1 , 'info' );
2021-04-28 10:11:49 +02:00
print '</td>' ;
print " </tr> \n " ;
}
}
}
closedir ( $handle );
}
}
}
print " </table><br> \n " ;
}
2024-03-16 11:16:32 +01:00
if ( ! empty ( $myTmpObjectArray [ 'includedocgeneration' ])) {
2021-04-28 10:11:49 +02:00
/*
* Document templates generators
*/
$setupnotempty ++ ;
$type = strtolower ( $myTmpObjectKey );
print load_fiche_titre ( $langs -> trans ( " DocumentModules " , $myTmpObjectKey ), '' , '' );
// Load array def with activated templates
$def = array ();
$sql = " SELECT nom " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " document_model " ;
$sql .= " WHERE type = ' " . $db -> escape ( $type ) . " ' " ;
$sql .= " AND entity = " . $conf -> entity ;
$resql = $db -> query ( $sql );
if ( $resql ) {
$i = 0 ;
$num_rows = $db -> num_rows ( $resql );
while ( $i < $num_rows ) {
$array = $db -> fetch_array ( $resql );
2024-04-27 22:01:34 +02:00
if ( is_array ( $array )) {
array_push ( $def , $array [ 0 ]);
}
2021-04-28 10:11:49 +02:00
$i ++ ;
}
} else {
dol_print_error ( $db );
}
print " <table class= \" noborder \" width= \" 100% \" > \n " ;
print " <tr class= \" liste_titre \" > \n " ;
print '<td>' . $langs -> trans ( " Name " ) . '</td>' ;
print '<td>' . $langs -> trans ( " Description " ) . '</td>' ;
print '<td class="center" width="60">' . $langs -> trans ( " Status " ) . " </td> \n " ;
print '<td class="center" width="60">' . $langs -> trans ( " Default " ) . " </td> \n " ;
print '<td class="center" width="38">' . $langs -> trans ( " ShortInfo " ) . '</td>' ;
print '<td class="center" width="38">' . $langs -> trans ( " Preview " ) . '</td>' ;
print " </tr> \n " ;
clearstatcache ();
foreach ( $dirmodels as $reldir ) {
foreach ( array ( '' , '/doc' ) as $valdir ) {
$realpath = $reldir . " core/modules/ " . $moduledir . $valdir ;
$dir = dol_buildpath ( $realpath );
if ( is_dir ( $dir )) {
$handle = opendir ( $dir );
if ( is_resource ( $handle )) {
2024-03-09 02:43:57 +01:00
$filelist = array ();
2021-04-28 10:11:49 +02:00
while (( $file = readdir ( $handle )) !== false ) {
$filelist [] = $file ;
}
closedir ( $handle );
arsort ( $filelist );
foreach ( $filelist as $file ) {
if ( preg_match ( '/\.modules\.php$/i' , $file ) && preg_match ( '/^(pdf_|doc_)/' , $file )) {
if ( file_exists ( $dir . '/' . $file )) {
$name = substr ( $file , 4 , dol_strlen ( $file ) - 16 );
2024-03-16 11:09:24 +01:00
$className = substr ( $file , 0 , dol_strlen ( $file ) - 12 );
2021-04-28 10:11:49 +02:00
require_once $dir . '/' . $file ;
2024-03-16 11:09:24 +01:00
$module = new $className ( $db );
2021-04-28 10:11:49 +02:00
2024-08-17 19:32:52 +02:00
'@phan-var-force ModelePDFKnowledgeRecord $module' ;
2021-04-28 10:11:49 +02:00
$modulequalified = 1 ;
2023-11-27 12:24:18 +01:00
if ( $module -> version == 'development' && getDolGlobalInt ( 'MAIN_FEATURES_LEVEL' ) < 2 ) {
2021-04-28 10:11:49 +02:00
$modulequalified = 0 ;
}
2023-11-27 12:24:18 +01:00
if ( $module -> version == 'experimental' && getDolGlobalInt ( 'MAIN_FEATURES_LEVEL' ) < 1 ) {
2021-04-28 10:11:49 +02:00
$modulequalified = 0 ;
}
if ( $modulequalified ) {
print '<tr class="oddeven"><td width="100">' ;
2023-12-04 11:41:14 +01:00
print ( empty ( $module -> name ) ? $name : $module -> name );
2021-04-28 10:11:49 +02:00
print " </td><td> \n " ;
if ( method_exists ( $module , 'info' )) {
2024-08-17 19:32:52 +02:00
print $module -> info ( $langs ); // @phan-suppress-current-line PhanUndeclaredMethod
2021-04-28 10:11:49 +02:00
} else {
print $module -> description ;
}
print '</td>' ;
// Active
if ( in_array ( $name , $def )) {
print '<td class="center">' . " \n " ;
2021-09-19 14:41:46 +02:00
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?action=del&token=' . newToken () . '&value=' . urlencode ( $name ) . '">' ;
2021-04-28 10:11:49 +02:00
print img_picto ( $langs -> trans ( " Enabled " ), 'switch_on' );
print '</a>' ;
print '</td>' ;
} else {
print '<td class="center">' . " \n " ;
2021-09-19 14:41:46 +02:00
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?action=set&token=' . newToken () . '&value=' . urlencode ( $name ) . '&scan_dir=' . urlencode ( $module -> scandir ) . '&label=' . urlencode ( $module -> name ) . '">' . img_picto ( $langs -> trans ( " Disabled " ), 'switch_off' ) . '</a>' ;
2021-04-28 10:11:49 +02:00
print " </td> " ;
}
// Default
print '<td class="center">' ;
$constforvar = 'KNOWLEDGEMANAGEMENT_' . strtoupper ( $myTmpObjectKey ) . '_ADDON' ;
2022-05-08 15:18:34 +02:00
if ( getDolGlobalString ( $constforvar ) == $name ) {
2021-04-28 10:11:49 +02:00
//print img_picto($langs->trans("Default"), 'on');
// Even if choice is the default value, we allow to disable it. Replace this with previous line if you need to disable unset
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?action=unsetdoc&token=' . newToken () . '&object=' . urlencode ( strtolower ( $myTmpObjectKey )) . '&value=' . $name . '&scan_dir=' . $module -> scandir . '&label=' . urlencode ( $module -> name ) . '&type=' . urlencode ( $type ) . '" alt="' . $langs -> trans ( " Disable " ) . '">' . img_picto ( $langs -> trans ( " Enabled " ), 'on' ) . '</a>' ;
} else {
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?action=setdoc&token=' . newToken () . '&object=' . urlencode ( strtolower ( $myTmpObjectKey )) . '&value=' . $name . '&scan_dir=' . urlencode ( $module -> scandir ) . '&label=' . urlencode ( $module -> name ) . '" alt="' . $langs -> trans ( " Default " ) . '">' . img_picto ( $langs -> trans ( " Disabled " ), 'off' ) . '</a>' ;
}
print '</td>' ;
// Info
$htmltooltip = '' . $langs -> trans ( " Name " ) . ': ' . $module -> name ;
$htmltooltip .= '<br>' . $langs -> trans ( " Type " ) . ': ' . ( $module -> type ? $module -> type : $langs -> trans ( " Unknown " ));
if ( $module -> type == 'pdf' ) {
$htmltooltip .= '<br>' . $langs -> trans ( " Width " ) . '/' . $langs -> trans ( " Height " ) . ': ' . $module -> page_largeur . '/' . $module -> page_hauteur ;
}
$htmltooltip .= '<br>' . $langs -> trans ( " Path " ) . ': ' . preg_replace ( '/^\//' , '' , $realpath ) . '/' . $file ;
$htmltooltip .= '<br><br><u>' . $langs -> trans ( " FeaturesSupported " ) . ':</u>' ;
$htmltooltip .= '<br>' . $langs -> trans ( " Logo " ) . ': ' . yn ( $module -> option_logo , 1 , 1 );
$htmltooltip .= '<br>' . $langs -> trans ( " MultiLanguage " ) . ': ' . yn ( $module -> option_multilang , 1 , 1 );
print '<td class="center">' ;
2025-02-08 01:49:29 +01:00
print $form -> textwithpicto ( '' , $htmltooltip , 1 , 'info' );
2021-04-28 10:11:49 +02:00
print '</td>' ;
// Preview
print '<td class="center">' ;
if ( $module -> type == 'pdf' ) {
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?action=specimen&module=' . $name . '&object=' . $myTmpObjectKey . '">' . img_object ( $langs -> trans ( " Preview " ), 'pdf' ) . '</a>' ;
} else {
2025-01-08 17:45:28 +01:00
print img_object ( $langs -> transnoentitiesnoconv ( " PreviewNotAvailable " ), 'generic' );
2021-04-28 10:11:49 +02:00
}
print '</td>' ;
print " </tr> \n " ;
}
}
}
}
}
}
}
}
print '</table>' ;
}
}
if ( empty ( $setupnotempty )) {
print '<br>' . $langs -> trans ( " NothingToSetup " );
}
// Page end
print dol_get_fiche_end ();
llxFooter ();
$db -> close ();