Пример #1
0
function shop_save_product($edit = 0)
{
    global $xoopsSecurity, $xoopsUser, $xoopsModule, $xoopsModuleConfig;
    $q = '';
    foreach ($_POST as $k => $v) {
        ${$k} = $v;
        if ($k == 'XOOPS_TOKEN_REQUEST' || $k == 'action') {
            continue;
        }
        $q .= $q == '' ? "{$k}=" . rawurlencode($v) : "&{$k}=" . rawurlencode($v);
    }
    $q = "action=" . ($edit ? 'edit&id=' . $id : 'new') . '&' . $q;
    if (!$xoopsSecurity->check()) {
        redirectMsg("products.php?{$q}", __('Session token expired!', 'shop'), 1);
        die;
    }
    if ($edit) {
        if ($id <= 0) {
            redirectMsg("products.php", __('Product ID has not been provided', 'shop'), 1);
            die;
        }
        $product = new ShopProduct($id);
        if ($product->isNew()) {
            redirectMsg("products.php", __('Specified product does not exists!', 'shop'), 1);
            die;
        }
    } else {
        $product = new ShopProduct();
    }
    if ($name == '' || $description == '' || empty($cats)) {
        redirectMsg("products.php?{$q}", __('Please fill al required data!', 'shop'), 1);
        die;
    }
    if (!isset($nameid)) {
        $nameid = TextCleaner::getInstance()->sweetstring($name);
    }
    /**
     * Comprobamos que no exista otra página con el mismo título
     */
    $db = XoopsDatabaseFactory::getDatabaseConnection();
    $sql = "SELECT COUNT(*) FROM " . $db->prefix("shop_products") . " WHERE nameid='{$nameid}'";
    $sql .= $edit ? " AND id_product<>" . $product->id() : '';
    list($num) = $db->fetchRow($db->query($sql));
    if ($num > 0) {
        redirectMsg('products.php?' . $q, __('Another product with same name already exists!', 'shop'), 1);
        die;
    }
    #Guardamos los datos del Post
    $product->setVar('name', $name);
    $product->setVar('nameid', $nameid);
    $product->setVar('description', $description);
    $product->setVar('price', $price);
    $product->setVar('buy', $buy != '' && $buy != 'http://' ? $buy : '');
    $product->setVar('type', $type);
    $product->setVar('available', $available);
    // Add Metas
    foreach ($meta_name as $k => $v) {
        $product->add_meta($v, $meta_value[$k]);
    }
    $product->add_categories($cats, true);
    //Imagen
    include_once RMCPATH . '/class/uploader.php';
    $folder = XOOPS_UPLOAD_PATH . '/minishop';
    $folderths = XOOPS_UPLOAD_PATH . '/minishop/ths';
    if ($edit) {
        $image = $product->getVar('image');
        $filename = $product->getVar('image');
    } else {
        $filename = '';
    }
    //Obtenemos el tamaño de la imagen
    $thSize = explode("|", $xoopsModuleConfig['thssize']);
    $imgSize = explode("|", $xoopsModuleConfig['imgsize']);
    $up = new RMFileUploader($folder, $xoopsModuleConfig['maxsize'] * 1024, array('jpg', 'png', 'gif'));
    if ($up->fetchMedia('image')) {
        if (!$up->upload()) {
            redirectMsg('./products.php', $up->getErrors(), 1);
            die;
        }
        if ($edit && $product->getVar('image') != '') {
            @unlink(XOOPS_UPLOAD_PATH . '/minishop/' . $product->getVar('image'));
            @unlink(XOOPS_UPLOAD_PATH . '/minishop/ths/' . $product->getVar('image'));
        }
        $filename = $up->getSavedFileName();
        $fullpath = $up->getSavedDestination();
        // Redimensionamos la imagen
        $redim = new RMImageResizer($fullpath, $fullpath);
        if ($xoopsModuleConfig['imgredim']) {
            $redim->resizeAndCrop($imgSize[0], $imgSize[1]);
        } else {
            $redim->resizeWidthOrHeight($imgSize[0], $imgSize[1]);
        }
        $redim->setTargetFile($folderths . "/{$filename}");
        if ($xoopsModuleConfig['thsredim']) {
            $redim->resizeAndCrop($thSize[0], $thSize[1]);
        } else {
            $redim->resizeWidthOrHeight($thSize[0], $thSize[1]);
        }
    }
    $product->setVar('image', $filename);
    if ($product->save()) {
        redirectMsg("products.php", __('Database updated successfully!', 'shop'), 0);
    } else {
        redirectMsg("products.php?{$q}", __('Errors ocurred while trying to update database', 'shop') . "<br />" . $product->errors(), 1);
    }
}