2018-06-29 17:58:42 +02:00
< ? php
2020-09-07 15:04:06 +02:00
/*
* OpenSTAManager : il software gestionale open source per l ' assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +01:00
* Copyright ( C ) DevCode s . r . l .
2020-09-07 15:04:06 +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 />.
*/
2018-06-29 17:58:42 +02:00
2018-12-12 17:54:31 +01:00
/**
2018-12-19 18:24:19 +01:00
* Controlla se il database presenta alcune sezioni personalizzate .
2018-12-12 17:54:31 +01:00
*
* @ return array
*/
function customStructure ()
{
$results = [];
$dirs = [
'modules' ,
'templates' ,
'plugins' ,
];
// Controlli di personalizzazione fisica
foreach ( $dirs as $dir ) {
2020-12-11 18:03:23 +01:00
$files = glob ( base_dir () . '/' . $dir . '/*/custom/*.{php,html}' , GLOB_BRACE );
$recursive_files = glob ( base_dir () . '/' . $dir . '/*/custom/**/*.{php,html}' , GLOB_BRACE );
2021-02-18 18:48:44 +01:00
$files = array_merge ( $files , $recursive_files );
2020-12-11 18:03:23 +01:00
2020-06-11 12:59:33 +02:00
foreach ( $files as $file ) {
2020-09-23 13:36:37 +02:00
$file = str_replace ( base_dir () . '/' , '' , $file );
2020-06-11 12:59:33 +02:00
$result = explode ( '/custom/' , $file )[ 0 ];
if ( ! in_array ( $result , $results )) {
$results [] = $result ;
}
}
2020-11-20 16:38:37 +01:00
}
2020-06-11 12:59:33 +02:00
2020-11-20 16:38:37 +01:00
// Gestione cartella include
2020-12-11 18:03:23 +01:00
$files = glob ( base_dir () . '/include/custom/*.{php,html}' , GLOB_BRACE );
$recursive_files = glob ( base_dir () . '/include/custom/**/*.{php,html}' , GLOB_BRACE );
2021-02-18 18:48:44 +01:00
$files = array_merge ( $files , $recursive_files );
2020-12-11 18:03:23 +01:00
2020-11-20 16:38:37 +01:00
foreach ( $files as $file ) {
$file = str_replace ( base_dir () . '/' , '' , $file );
$result = explode ( '/custom/' , $file )[ 0 ];
2020-06-11 12:59:33 +02:00
2020-11-20 16:38:37 +01:00
if ( ! in_array ( $result , $results )) {
$results [] = $result ;
2020-06-11 12:59:33 +02:00
}
2018-12-12 17:54:31 +01:00
}
return $results ;
}
/**
2018-12-19 18:24:19 +01:00
* Controlla se il database presenta alcune sezioni personalizzate .
2018-12-12 17:54:31 +01:00
*
* @ return array
*/
function customTables ()
{
2020-09-23 13:36:37 +02:00
$tables = include base_dir () . '/update/tables.php' ;
2018-12-12 17:54:31 +01:00
$names = [];
foreach ( $tables as $table ) {
$names [] = prepare ( $table );
}
$database = database ();
2019-02-09 12:34:32 +01:00
$results = $database -> fetchArray ( 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ' . prepare ( $database -> getDatabaseName ()) . ' AND TABLE_NAME NOT IN (' . implode ( ',' , $names ) . " ) AND TABLE_NAME != 'updates' " );
2018-12-12 17:54:31 +01:00
return array_column ( $results , 'TABLE_NAME' );
}
2018-12-23 14:01:59 +01:00
/**
2018-12-19 18:24:19 +01:00
* Controlla se il database presenta alcune sezioni personalizzate .
2018-12-12 17:54:31 +01:00
*
* @ return array
*/
function customDatabase ()
{
$database = database ();
$modules = $database -> fetchArray ( " SELECT name, CONCAT('modules/', directory) AS directory FROM zz_modules WHERE options2 != '' " );
$plugins = $database -> fetchArray ( " SELECT name, CONCAT('plugins/', directory) AS directory FROM zz_plugins WHERE options2 != '' " );
$results = array_merge ( $modules , $plugins );
return $results ;
}
2020-10-12 09:19:03 +02:00
function customComponents ()
2018-12-12 17:54:31 +01:00
{
$database_check = customDatabase ();
$structure_check = customStructure ();
$list = [];
foreach ( $database_check as $element ) {
$pos = array_search ( $element [ 'directory' ], $structure_check );
$list [] = [
'path' => $element [ 'directory' ],
'database' => true ,
'directory' => $pos !== false ,
];
if ( $pos !== false ) {
unset ( $structure_check [ $pos ]);
}
}
foreach ( $structure_check as $element ) {
$list [] = [
'path' => $element ,
'database' => false ,
'directory' => true ,
];
}
return $list ;
}