Fix deletion of website page

This commit is contained in:
Laurent Destailleur 2020-06-06 18:57:24 +02:00
parent e31e889595
commit 7061e9b4cb
2 changed files with 59 additions and 5 deletions

View File

@ -181,7 +181,7 @@ class MyObject extends CommonObject
//public $table_element_line = 'mymodule_myobjectline';
/**
* @var int Field with ID of parent key if this field has a parent
* @var int Field with ID of parent key if this object has a parent
*/
//public $fk_element = 'fk_myobject';
@ -193,12 +193,12 @@ class MyObject extends CommonObject
/**
* @var array List of child tables. To test if we can delete object.
*/
//protected $childtables=array();
//protected $childtables = array();
/**
* @var array List of child tables. To know object to delete on cascade.
*/
//protected $childtablesoncascade=array('mymodule_myobjectdet');
//protected $childtablesoncascade = array('mymodule_myobjectdet');
/**
* @var MyObjectLine[] Array of subtable lines

View File

@ -49,6 +49,7 @@ class WebsitePage extends CommonObject
*/
public $picto = 'file-code';
/**
* @var int ID
*/
@ -164,6 +165,35 @@ class WebsitePage extends CommonObject
// END MODULEBUILDER PROPERTIES
// If this object has a subtable with lines
/**
* @var int Name of subtable line
*/
//public $table_element_line = 'mymodule_myobjectline';
/**
* @var int Field with ID of parent key if this object has a parent
*/
public $fk_element = 'fk_website';
/**
* @var int Name of subtable class that manage subtable lines
*/
//public $class_element_line = 'MyObjectline';
/**
* @var array List of child tables. To test if we can delete object.
*/
//protected $childtables=array();
/**
* @var array List of child tables. To know object to delete on cascade.
*/
protected $childtablesoncascade = array('categorie_website_page');
/**
* Constructor
*
@ -523,9 +553,33 @@ class WebsitePage extends CommonObject
*/
public function delete(User $user, $notrigger = false)
{
$result = $this->deleteCommon($user, $trigger);
$error = 0;
// Delete all child tables
if (!$error) {
foreach ($this->childtablesoncascade as $table)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$table;
$sql .= " WHERE fk_website_page = ".(int) $this->id;
$result = $this->db->query($sql);
if (!$result) {
$error++;
$this->errors[] = $this->db->lasterror();
break;
}
}
}
if (!$error) {
$result = $this->deleteCommon($user, $trigger);
if ($result > 0)
{
$error++;
}
}
if (!$error)
{
$websiteobj = new Website($this->db);
$result = $websiteobj->fetch($this->fk_website);