diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 057a2aab615..03fffaaba5d 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -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 diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index 2a72a222265..61ec8376414 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -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; - if ($result > 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);