Fix: Migration must load new boxes
This commit is contained in:
parent
c4b6a1b9cf
commit
966f135316
@ -52,12 +52,13 @@ abstract class DolibarrModules
|
||||
|
||||
var $dbversion = "-";
|
||||
|
||||
|
||||
/**
|
||||
* Fonction d'activation. Insere en base les constantes et boites du module
|
||||
* Method to enable a module. Insert into database all constants, boxes of module
|
||||
*
|
||||
* @param array $array_sql Array of SQL requests to execute when enabling module
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
* @param array $array_sql Array of SQL requests to execute when enabling module
|
||||
* @param string $options String with options when disabling module ('newboxdefonly|noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function _init($array_sql, $options='')
|
||||
{
|
||||
@ -78,8 +79,8 @@ abstract class DolibarrModules
|
||||
// Insert constant defined by modules, into llx_const
|
||||
if (! $err) $err+=$this->insert_const();
|
||||
|
||||
// Insere les boites dans llx_boxes_def
|
||||
if (! $err && $options != 'noboxes') $err+=$this->insert_boxes();
|
||||
// Insert boxes def into llx_boxes_def and boxes setup into llx_boxes
|
||||
if (! $err && ! preg_match('/noboxes/',$options)) $err+=$this->insert_boxes($options);
|
||||
|
||||
// Insert permission definitions of module into llx_rights_def. If user is admin, grant this permission to user.
|
||||
if (! $err) $err+=$this->insert_permissions(1);
|
||||
@ -147,7 +148,7 @@ abstract class DolibarrModules
|
||||
* Fonction de desactivation. Supprime de la base les constantes et boites du module
|
||||
*
|
||||
* @param array $array_sql Array of SQL requests to execute when disable module
|
||||
* @param string $options Options when disabling module ('', 'noboxes')
|
||||
* @param string $options String with options when disabling module ('newboxdefonly|noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function _remove($array_sql, $options='')
|
||||
@ -170,7 +171,7 @@ abstract class DolibarrModules
|
||||
if (! $err) $err+=$this->delete_const();
|
||||
|
||||
// Remove list of module's available boxes (entry in llx_boxes)
|
||||
if (! $err && $options != 'noboxes') $err+=$this->delete_boxes();
|
||||
if (! $err && ! preg_match('/(newboxdefonly|noboxes)/',$options)) $err+=$this->delete_boxes(); // We don't have to delete if option ask to keep boxes safe or ask to add new box def only
|
||||
|
||||
// Remove module's permissions from list of available permissions (entries in llx_rights_def)
|
||||
if (! $err) $err+=$this->delete_permissions();
|
||||
@ -419,7 +420,7 @@ abstract class DolibarrModules
|
||||
if (empty($reldir)) return 1;
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT .'/core/lib/admin.lib.php';
|
||||
|
||||
|
||||
$ok = 1;
|
||||
foreach($conf->file->dol_document_root as $dirroot)
|
||||
{
|
||||
@ -497,9 +498,10 @@ abstract class DolibarrModules
|
||||
/**
|
||||
* Insert boxes into llx_boxes_def
|
||||
*
|
||||
* @return int Nb of errors (0 if OK)
|
||||
* @param string $option String with options when disabling module ('newboxdefonly'=insert only boxes definition)
|
||||
* @return int Nb of errors (0 if OK)
|
||||
*/
|
||||
function insert_boxes()
|
||||
function insert_boxes($option='')
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/infobox.class.php';
|
||||
|
||||
@ -518,11 +520,13 @@ abstract class DolibarrModules
|
||||
if (empty($file)) $file = isset($this->boxes[$key][1])?$this->boxes[$key][1]:''; // For backward compatibility
|
||||
if (empty($note)) $note = isset($this->boxes[$key][2])?$this->boxes[$key][2]:''; // For backward compatibility
|
||||
|
||||
// Search if boxes def already present
|
||||
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."boxes_def";
|
||||
$sql.= " WHERE file = '".$this->db->escape($file)."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
if ($note) $sql.=" AND note ='".$this->db->escape($note)."'";
|
||||
|
||||
dol_syslog(get_class($this)."::insert_boxes sql=".$sql);
|
||||
$result=$this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
@ -533,9 +537,9 @@ abstract class DolibarrModules
|
||||
|
||||
if (! $err)
|
||||
{
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (file,entity,note)";
|
||||
$sql.= " VALUES ('".$this->db->escape($file)."',";
|
||||
$sql.= $conf->entity.",";
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (file, entity, note)";
|
||||
$sql.= " VALUES ('".$this->db->escape($file)."', ";
|
||||
$sql.= $conf->entity.", ";
|
||||
$sql.= $note?"'".$this->db->escape($note)."'":"null";
|
||||
$sql.= ")";
|
||||
|
||||
@ -544,7 +548,7 @@ abstract class DolibarrModules
|
||||
if (! $resql) $err++;
|
||||
|
||||
}
|
||||
if (! $err)
|
||||
if (! $err && ! preg_match('/newboxdefonly/',$options))
|
||||
{
|
||||
$lastid=$this->db->last_insert_id(MAIN_DB_PREFIX."boxes_def","rowid");
|
||||
|
||||
@ -568,7 +572,7 @@ abstract class DolibarrModules
|
||||
$this->db->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
$this->error=$this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::insert_boxes ".$this->error, LOG_ERR);
|
||||
$this->db->rollback();
|
||||
@ -609,7 +613,7 @@ abstract class DolibarrModules
|
||||
//$note = $this->boxes[$key][2];
|
||||
|
||||
if (empty($file)) $file = isset($this->boxes[$key][1])?$this->boxes[$key][1]:''; // For backward compatibility
|
||||
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes";
|
||||
$sql.= " USING ".MAIN_DB_PREFIX."boxes, ".MAIN_DB_PREFIX."boxes_def";
|
||||
$sql.= " WHERE ".MAIN_DB_PREFIX."boxes.box_id = ".MAIN_DB_PREFIX."boxes_def.rowid";
|
||||
@ -898,7 +902,7 @@ abstract class DolibarrModules
|
||||
break;
|
||||
}
|
||||
else dol_syslog(get_class($this)."::insert_permissions record already exists", LOG_INFO);
|
||||
|
||||
|
||||
}
|
||||
$this->db->free($resqlinsert);
|
||||
|
||||
|
||||
@ -194,7 +194,7 @@ class modCommande extends DolibarrModules
|
||||
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
|
||||
* It also creates data directories
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function init($options='')
|
||||
@ -236,7 +236,7 @@ class modCommande extends DolibarrModules
|
||||
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||
* Data directories are not deleted
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function remove($options='')
|
||||
|
||||
@ -221,7 +221,7 @@ class modFacture extends DolibarrModules
|
||||
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
|
||||
* It also creates data directories
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function init($options='')
|
||||
@ -262,7 +262,7 @@ class modFacture extends DolibarrModules
|
||||
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||
* Data directories are not deleted
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function remove($options='')
|
||||
|
||||
@ -89,11 +89,12 @@ class modProduct extends DolibarrModules
|
||||
$r++;
|
||||
|
||||
// Boxes
|
||||
$this->boxes = array();
|
||||
$this->boxes[0][1] = "box_produits.php";
|
||||
$this->boxes[1][1] = "box_produits_alerte_stock.php";
|
||||
$this->boxes[2][1] = "box_graph_product_distribution.php";
|
||||
|
||||
$this->boxes = array(
|
||||
0=>array('file'=>'box_produits.php','enabledbydefaulton'=>'Home'),
|
||||
1=>array('file'=>'box_produits_alerte_stock.php','enabledbydefaulton'=>''),
|
||||
2=>array('file'=>'box_graph_product_distribution.php','enabledbydefaulton'=>'Home')
|
||||
);
|
||||
|
||||
// Permissions
|
||||
$this->rights = array();
|
||||
$this->rights_class = 'produit';
|
||||
@ -244,7 +245,7 @@ class modProduct extends DolibarrModules
|
||||
'sp.remise_percent'=>'0'
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
if (! empty($conf->global->PRODUIT_MULTIPRICES)) {
|
||||
// Exports product multiprice
|
||||
//--------
|
||||
@ -268,12 +269,12 @@ class modProduct extends DolibarrModules
|
||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'product as p';
|
||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'product_price as pr ON p.rowid = pr.fk_product';
|
||||
$this->export_sql_end[$r] .=' WHERE p.fk_product_type = 0 AND p.entity IN ('.getEntity("product", 1).')';
|
||||
|
||||
|
||||
|
||||
|
||||
// Import product multiprice
|
||||
//--------
|
||||
$r=0;
|
||||
|
||||
|
||||
$r++;
|
||||
$this->import_code[$r]=$this->rights_class.'_'.$r;
|
||||
$this->import_label[$r]="ProductsMultiPrice"; // Translation key
|
||||
@ -304,7 +305,7 @@ class modProduct extends DolibarrModules
|
||||
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
|
||||
* It also creates data directories
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function init($options='')
|
||||
@ -322,7 +323,7 @@ class modProduct extends DolibarrModules
|
||||
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||
* Data directories are not deleted
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function remove($options='')
|
||||
|
||||
@ -75,8 +75,10 @@ class modService extends DolibarrModules
|
||||
$this->const = array();
|
||||
|
||||
// Boxes
|
||||
$this->boxes = array();
|
||||
$this->boxes[0][1] = "box_services_contracts.php";
|
||||
$this->boxes = array(
|
||||
0=>array('file'=>'box_services_contracts.php','enabledbydefaulton'=>'Home'),
|
||||
1=>array('file'=>'box_graph_product_distribution.php','enabledbydefaulton'=>'Home')
|
||||
);
|
||||
|
||||
// Permissions
|
||||
$this->rights = array();
|
||||
@ -186,7 +188,7 @@ class modService extends DolibarrModules
|
||||
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
|
||||
* It also creates data directories
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function init($options='')
|
||||
@ -204,7 +206,7 @@ class modService extends DolibarrModules
|
||||
* Remove from database constants, boxes and permissions from Dolibarr database.
|
||||
* Data directories are not deleted
|
||||
*
|
||||
* @param string $options Options when enabling module ('', 'noboxes')
|
||||
* @param string $options Options when enabling module ('', 'newboxdefonly', 'noboxes')
|
||||
* @return int 1 if OK, 0 if KO
|
||||
*/
|
||||
function remove($options='')
|
||||
|
||||
@ -331,8 +331,12 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
|
||||
migrate_categorie_association($db,$langs,$conf);
|
||||
}
|
||||
|
||||
$afterversionarray=explode('.','3.3.9');
|
||||
$beforeversionarray=explode('.','3.4.9');
|
||||
// Script for VX (X<3.4) -> V3.4
|
||||
// No specific scripts
|
||||
|
||||
// Tasks to do always and only into last targeted version
|
||||
$afterversionarray=explode('.','3.4.9'); // target is after this
|
||||
$beforeversionarray=explode('.','3.5.9'); // target is before this
|
||||
if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0)
|
||||
{
|
||||
// Reload modules (this must be always and only into last targeted version)
|
||||
@ -3619,7 +3623,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modAgenda($db);
|
||||
$mod->remove('noboxes');
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_SOCIETE))
|
||||
@ -3629,7 +3633,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modSociete($db);
|
||||
$mod->remove('noboxes');
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_PRODUIT)) // Permission has changed into 2.7
|
||||
@ -3639,7 +3643,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modProduct($db);
|
||||
//$mod->remove('noboxes');
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_SERVICE)) // Permission has changed into 2.7
|
||||
@ -3649,7 +3653,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php';
|
||||
$mod=new modService($db);
|
||||
//$mod->remove('noboxes');
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_COMMANDE)) // Permission has changed into 2.9
|
||||
@ -3659,7 +3663,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php';
|
||||
$mod=new modCommande($db);
|
||||
//$mod->remove('noboxes');
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_FACTURE)) // Permission has changed into 2.9
|
||||
@ -3669,7 +3673,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php';
|
||||
$mod=new modFacture($db);
|
||||
//$mod->remove('noboxes');
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_FOURNISSEUR)) // Permission has changed into 2.9
|
||||
@ -3679,7 +3683,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modFournisseur($db);
|
||||
//$mod->remove('noboxes');
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
|
||||
@ -3690,7 +3694,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modUser($db);
|
||||
//$mod->remove('noboxes'); // We need to remove because id of module has changed
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_DEPLACEMENT)) // Permission has changed into 3.0
|
||||
@ -3700,7 +3704,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modDeplacement($db);
|
||||
//$mod->remove('noboxes'); // We need to remove because a permission id has been removed
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_DON)) // Permission has changed into 3.0
|
||||
@ -3710,7 +3714,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modDon($db);
|
||||
//$mod->remove('noboxes'); // We need to remove because a permission id has been removed
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_ECM)) // Permission has changed into 3.0 and 3.1
|
||||
@ -3720,7 +3724,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php';
|
||||
$mod=new modECM($db);
|
||||
$mod->remove('noboxes'); // We need to remove because a permission id has been removed
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
if (! empty($conf->global->MAIN_MODULE_PAYBOX)) // Permission has changed into 3.0
|
||||
@ -3730,7 +3734,7 @@ function migrate_reload_modules($db,$langs,$conf)
|
||||
if ($res) {
|
||||
$mod=new modPaybox($db);
|
||||
$mod->remove('noboxes'); // We need to remove because id of module has changed
|
||||
$mod->init('noboxes');
|
||||
$mod->init('newboxdefonly');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user