Skip to content
Snippets Groups Projects
Commit 966f1353 authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

Fix: Migration must load new boxes

parent c4b6a1b9
No related branches found
No related tags found
No related merge requests found
......@@ -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');
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment