Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}