function delete(&$base, $whereFields = "") { global $globQuery; if (isset($base->up)) { //recursive delete // Ha veletlenul a whereFields nem az id, akkor az id-t be kell // tolteni, mert az kell a rekurziv delete-ben: if (!isset($base->id)) { $ret = $base->load($whereFields); if ($ret == not_found_in_db) { return $ret; } } getChildrenFromDb($base, $children); foreach ($children as $child) { $child->delete($whereFields); } } $typ =& $base->getTypeInfo(); $table = $base->get_table(); $query = "DELETE FROM @{$table}"; $sqlParams = array(); $whereExists = FALSE; if ($whereFields == "") { $whereFields = getPrimaryKey($typ); } if ($whereFields) { $firstField = TRUE; foreach ($whereFields as $key) { if (isset($base->{$key})) { $sqlParams[] = $key; $sqlParams[] = $base->{$key}; if ($firstField) { $query .= " WHERE `param`=#param#"; $firstField = FALSE; $whereExists = TRUE; } else { $query .= " AND `param`=#param#"; } } } } array_unshift($sqlParams, $query); $query = $sqlParams; $globQuery = $query; $hasMany = new HasManyAttrs($base); $hasMany->delete(); if ($whereExists) { executeQuery($query); } else { trigger_error("Delete without WHERE: " . print_r($query, TRUE), E_USER_ERROR); } return ok; }
function deleteRec($base, $whereFields = "") { if (isset($base->up)) { //recursive delete if (!isset($base->id)) { $ret = $base->load($whereFields); if ($ret == not_found_in_db) { return $ret; } } getChildrenFromDb($base, $children); foreach ($children as $child) { $ret = $child->deleteRec($whereFields); if ($ret != ok) { handleError("child not exists in delete"); } } $base->delete($whereFields); } return ok; }