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); } }