Пример #1
0
function m_save_field($edit = 0)
{
    global $xoopsModule, $xoopsModuleConfig, $xoopsSecurity;
    $query = '';
    foreach ($_POST as $k => $v) {
        ${$k} = $v;
        if ($k == 'XOOPS_TOKEN_REQUEST' || $k == 'action' || $k == 'sbt') {
            continue;
        }
        $query .= $query == '' ? "{$k}=" . urlencode($v) : "&{$k}=" . urlencode($v);
    }
    $action = $edit ? '?action=edit&id=' . $id : '?action=new&';
    if (!$xoopsSecurity->check()) {
        redirectMsg('fields.php?action=' . ($edit ? 'edit&id=' . $id : 'new') . '&' . $query, __('Session token expired!', 'match'), 1);
        die;
    }
    if ($name == '') {
        redirectMsg('fields.php?action=' . ($edit ? 'edit&id=' . $id : 'new') . '&' . $query, __('Please fill all required data!', 'match'), 1);
    }
    if ($edit) {
        if ($id <= 0) {
            redirectMsg('./fields.php', __('Field ID not valid!', 'match'), 1);
            die;
        }
        //Verificamos que el trabajo exista
        $field = new MCHField($id);
        if ($field->isNew()) {
            redirectMsg('./champ.php', __('Specified field does not exists!', 'match'), 1);
            die;
        }
    } else {
        $field = new MCHField();
    }
    $db = XoopsDatabaseFactory::getDatabaseConnection();
    // Check if work exists already
    if ($edit) {
        $sql = "SELECT COUNT(*) FROM " . $db->prefix("mch_fields") . " WHERE name='{$name}' and id_field<>'{$id}'";
    } else {
        $sql = "SELECT COUNT(*) FROM " . $db->prefix("mch_fields") . " WHERE name='{$name}'";
    }
    list($num) = $db->fetchRow($db->query($sql));
    if ($num > 0) {
        redirectMsg("fields.php" . $action . $query, __('A field with same name already exists!', 'match'), 1);
        die;
    }
    //Genera $nameid Nombre identificador
    $found = false;
    $i = 0;
    if ($name != $field->getVar('name') || empty($nameid)) {
        do {
            $nameid = TextCleaner::sweetstring($name) . ($found ? $i : '');
            $sql = "SELECT COUNT(*) FROM " . $db->prefix('mch_fields') . " WHERE nameid = '{$nameid}'";
            list($num) = $db->fetchRow($db->queryF($sql));
            if ($num > 0) {
                $found = true;
                $i++;
            } else {
                $found = false;
            }
        } while ($found == true);
    }
    $field->setVar('name', $name);
    $field->setVar('nameid', $nameid);
    $field->setVar('description', $description);
    if (!$field->save()) {
        redirectMsg('./fields.php' . $action . $query, __('Errors ocurred while trying to update database!', 'match') . $field->errors(), 1);
        die;
    } else {
        redirectMsg('./fields.php?id=' . $field->id(), __('Field saved successfully!', 'match'), 0);
        die;
    }
}