Code: Alles auswählen
function deleteProperties ($itemtype, $itemid)
{
if (isset($this->client))
{
$this->select("idclient = '".$this->client."' AND itemtype = '$itemtype' AND itemid = '$itemid'");
} else {
$this->select("itemtype = '$itemtype' AND itemid = '$itemid'");
}
$deleteProperties = Array();
while ($item = $this->next())
{
$deleteProperties[] = $item->get("idproperty");
}
foreach($deleteProperties as $idproperty) {
$this->delete($idproperty);
}
}
Code: Alles auswählen
function deleteProperties ($itemtype, $itemid)
{
$oProperties = new PropertyCollection;
if (isset($this->client))
{
$oProperties->select("idclient = '".$this->client."' AND itemtype = '$itemtype' AND itemid = '$itemid'");
} else {
$oProperties->select("itemtype = '$itemtype' AND itemid = '$itemid'");
}
while ($item = $oProperties->next())
{
$this->delete($item->get("idproperty"));
}
}
Im Moment wird sie noch in der delete()-Methode der genericdb verwendet, aber die sollte man eigentlich auch so gestalten können:
Code: Alles auswählen
function delete($id)
{
/* Local new db instance since we don't want to kill our
probably existing result set */
$db = new DB_Contenido;
$sql = "DELETE FROM ".$this->table." WHERE ";
$sql .= $this->primaryKey." = '".$id."'";
$db->query($sql);
/* Runtime on-demand allocation of the properties object */
if (!is_object($this->properties))
{
$this->properties = new PropertyCollection;
}
/* if (!is_object($this->propertiesDelete))
{
$this->propertiesDelete = new PropertyCollection;
} */
/* delete the property values */
$this->properties->deleteProperties($this->primaryKey, $id);
/* If this object wasn't loaded before, return false */
if ($this->virgin == true)
{
$this->lasterror = "No item loaded";
return false;
}
if ($db->affected_rows() == 0)
{
return false;
} else
{
return true;
}
}
Gruß
HerrB