Beispiel #1
0
/**
* @desc Almacena la información de la publicación
**/
function rd_save_resource($edit = 0)
{
    global $xoopsModuleConfig, $xoopsUser, $xoopsSecurity;
    $nameid = '';
    $q = '';
    foreach ($_POST as $k => $v) {
        ${$k} = $v;
        if ($k == 'XOOPS_TOKEN_REQUEST' || $k == 'action') {
            continue;
        }
        $q .= $q == '' ? "{$k}=" . urlencode($v) : "&{$k}=" . urlencode($v);
    }
    if ($action == 'save') {
        $q .= '&action=new';
    } else {
        $q .= "&action=edit";
    }
    if (!$xoopsSecurity->check()) {
        redirectMsg('resources.php?' . $q, __('Session token expired!', 'docs'), 1);
        die;
    }
    $db = XoopsDatabaseFactory::getDatabaseConnection();
    if ($edit) {
        //Comprueba si la publicación es válida
        if ($id <= 0) {
            redirectMsg('resources.php', __('You must provide a valid Document ID', 'docs'), 1);
            die;
        }
        //Comprueba si la publicación existe
        $res = new RDResource($id);
        if ($res->isNew()) {
            redirectMsg('resources.php', __('Specified Document does not exists!', 'docs'), 1);
            die;
        }
        //Comprueba que el título de publicación no exista
        $sql = "SELECT COUNT(*) FROM " . $db->prefix('rd_resources') . " WHERE title='{$title}' AND id_res<>'" . $id . "'";
        list($num) = $db->fetchRow($db->queryF($sql));
        if ($num > 0) {
            redirectMsg('resources.php?' . $q, __('A Document with same title exists already!', 'docs'), 1);
            die;
        }
    } else {
        //Comprueba que el título de publicación no exista
        $sql = "SELECT COUNT(*) FROM " . $db->prefix('rd_resources') . " WHERE title='{$title}' ";
        list($num) = $db->fetchRow($db->queryF($sql));
        if ($num > 0) {
            redirectMsg('resources.php?' . $q, __('A Document with same title exists already!', 'docs'), 1);
            die;
        }
        $res = new RDResource();
    }
    //Genera $nameid Nombre identificador
    if ($nameid == '' || $res->getVar('title') != $title) {
        $found = false;
        $i = 0;
        do {
            $nameid = TextCleaner::getInstance()->sweetstring($title) . ($found ? $i : '');
            $sql = "SELECT COUNT(*) FROM " . $db->prefix('rd_resources') . " WHERE nameid = '{$nameid}'";
            list($num) = $db->fetchRow($db->queryF($sql));
            if ($num > 0) {
                $found = true;
                $i++;
            } else {
                $found = false;
            }
        } while ($found == true);
    }
    $res->setVar('title', $title);
    $res->setVar('description', $desc);
    $res->isNew() ? $res->setVar('created', time()) : $res->setVar('modified', time());
    $res->setVar('editors', $editors);
    $res->setVar('editor_approve', $approvededit);
    $res->setVar('groups', $groups);
    $res->setVar('public', $public);
    $res->setVar('quick', $quick);
    $res->setVar('nameid', $nameid);
    $res->setVar('show_index', $showindex);
    $res->setVar('featured', $featured);
    $res->setVar('approved', $approvedres);
    $res->setVar('single', $single);
    if ($res->isNew()) {
        $res->setVar('owner', $xoopsUser->uid());
        $res->setVar('owname', $xoopsUser->uname());
    } elseif ($owner != $res->getVar('owner')) {
        $xuser = new $xoopsUser($owner);
        $res->setVar('owner', $owner);
        $res->setVar('owname', $xuser->uname());
    }
    if (!$res->save()) {
        redirectMsg('resources.php?' . $q, __('Document could not be saved!', 'docs') . '<br />' . $res->errors(), 1);
        die;
    } else {
        if (!$res->isNew()) {
            /**
             * Comprobamos si el recurso no estaba aprovado previamente
             * para enviar la notificación.
             * La notificación solo se envía si el dueño es distinto
             * al administrador actual.
             */
            if (!$app && $app != $res->getVar('approved') && $xoopsUser->uid() != $res->getVar('owner')) {
                $errors = RDfunctions::mail_approved($res);
                redirectMsg('./resources.php?page=' . $page, $errors, 1);
            }
        }
        redirectMsg('./resources.php?limit=' . $limit . '&page=' . $page, __('Document saved successfully!', 'docs'), 0);
    }
}