Esempio n. 1
0
 public function init()
 {
     // Get product details from business tier
     $this->mProduct = Catalog::GetProductDetails($this->_mProductId);
     if (isset($_SESSION['link_to_continue_shopping'])) {
         $continue_shopping = Link::QueryStringToArray($_SESSION['link_to_continue_shopping']);
         $page = 1;
         if (isset($continue_shopping['Page'])) {
             $page = (int) $continue_shopping['Page'];
         }
         if (isset($continue_shopping['CategoryId'])) {
             $this->mLinkToContinueShopping = Link::ToCategory((int) $continue_shopping['DepartmentId'], (int) $continue_shopping['CategoryId'], $page);
         } elseif (isset($continue_shopping['DepartmentId'])) {
             $this->mLinkToContinueShopping = Link::ToDepartment((int) $continue_shopping['DepartmentId'], $page);
         } elseif (isset($continue_shopping['SearchResults'])) {
             $this->mLinkToContinueShopping = Link::ToSearchResults(trim(str_replace('-', ' ', $continue_shopping['SearchString'])), $continue_shopping['AllWords'], $page);
         } else {
             $this->mLinkToContinueShopping = Link::ToIndex($page);
         }
     }
     if ($this->mProduct['image']) {
         $this->mProduct['image'] = Link::Build('images/product_images/' . $this->mProduct['image']);
     }
     if ($this->mProduct['image_2']) {
         $this->mProduct['image_2'] = Link::Build('images/product_images/' . $this->mProduct['image_2']);
     }
     $this->mProduct['attributes'] = Catalog::GetProductAttributes($this->mProduct['product_id']);
     $this->mLocations = Catalog::GetProductLocations($this->_mProductId);
     // Create the Add to Cart link
     $this->mProduct['link_to_add_product'] = Link::ToCart(ADD_PRODUCT, $this->_mProductId);
     // Build links for product departments and categories pages
     for ($i = 0; $i < count($this->mLocations); $i++) {
         $this->mLocations[$i]['link_to_department'] = Link::ToDepartment($this->mLocations[$i]['department_id']);
         $this->mLocations[$i]['link_to_category'] = Link::ToCategory($this->mLocations[$i]['department_id'], $this->mLocations[$i]['category_id']);
     }
     // Подготавливаем кнопу редактирования
     $this->mEditActionTarget = Link::Build(str_replace(VIRTUAL_LOCATION, '', getenv('REQUEST_URI')));
     if (isset($_SESSION['admin_logged']) && $_SESSION['admin_logged'] == TRUE && isset($_POST['submit_edit'])) {
         $product_locations = $this->mLocations;
         if (count($product_locations) > 0) {
             $department_id = $product_locations[0]['department_id'];
             $category_id = $product_locations[0]['category_id'];
             header('Location: ' . htmlspecialchars_decode(Link::ToProductAdmin($department_id, $category_id, $this->_mProductId)));
         }
     }
 }
Esempio n. 2
0
 public function init()
 {
     // Get product details from business tier
     $this->mProduct = Catalog::GetProductDetails($this->_mProductId);
     // Session Handle
     if (isset($_SESSION['link_to_continue_shopping'])) {
         $continue_shopping = Link::QueryStringToArray($_SESSION['link_to_continue_shopping']);
         $page = 1;
         // Cache the current query string. Then after choose the product, we will get back this page.
         if (isset($continue_shopping['Page'])) {
             $page = (int) $continue_shopping['Page'];
         }
         if (isset($continue_shopping['CategoryId'])) {
             $this->mLinkToContinueShopping = Link::ToCategory((int) $continue_shopping['DepartmentId'], (int) $continue_shopping['CategoryId'], $page);
         } elseif (isset($continue_shopping['DepartmentId'])) {
             $this->mLinkToContinueShopping = Link::ToDepartment((int) $continue_shopping['DepartmentId'], $page);
         } else {
             $this->mLinkToContinueShopping = Link::ToIndex($page);
         }
     }
     // Product detail
     if ($this->mProduct['image']) {
         $this->mProduct['image'] = Link::Build('images/product_images/' . $this->mProduct['image']);
     }
     if ($this->mProduct['image_2']) {
         $this->mProduct['image_2'] = Link::Build('images/product_images/' . $this->mProduct['image_2']);
     }
     $this->mProduct['attributes'] = Catalog::GetProductAttributes($this->mProduct['product_id']);
     // Similar products in catalog
     $this->mLocations = Catalog::GetProductLocations($this->_mProductId);
     // Build links for product departments and categories pages
     for ($i = 0; $i < count($this->mLocations); $i++) {
         $this->mLocations[$i]['link_to_department'] = Link::ToDepartment($this->mLocations[$i]['department_id']);
         $this->mLocations[$i]['link_to_category'] = Link::ToCategory($this->mLocations[$i]['department_id'], $this->mLocations[$i]['category_id']);
     }
 }
Esempio n. 3
0
 public function init()
 {
     /* If browsing a category, get the list of products by calling the
      * GetProductsInCategory() business tier method */
     if (isset($this->_mCategoryId)) {
         $this->mProducts = Catalog::GetProductsInCategory($this->_mCategoryId, $this->mPage, $this->mrTotalPages);
     } elseif (isset($this->_mDepartmentId)) {
         $this->mProducts = Catalog::GetProductsOnDepartment($this->_mDepartmentId, $this->mPage, $this->mrTotalPages);
     } else {
         $this->mProducts = Catalog::GetProductsOnCatalog($this->mPage, $this->mrTotalPages);
     }
     /* If there are subpages of products, display navigation
        controls */
     if ($this->mrTotalPages > 1) {
         // Build the Next link
         if ($this->mPage < $this->mrTotalPages) {
             if (isset($this->_mCategoryId)) {
                 $this->mLinkToNextPage = Link::ToCategory($this->_mDepartmentId, $this->_mCategoryId, $this->mPage + 1);
             } elseif (isset($this->_mDepartmentId)) {
                 $this->mLinkToNextPage = Link::ToDepartment($this->_mDepartmentId, $this->mPage + 1);
             } else {
                 $this->mLinkToNextPage = Link::ToIndex($this->mPage + 1);
             }
         }
         // Build the Previous Link
         if ($this->mPage > 1) {
             if (isset($this->_mCategoryId)) {
                 $this->mLinkToPreviousPage = Link::ToCategory($this->_mDepartmentId, $this->_mCategoryId, $this->mPage - 1);
             } elseif (isset($this->_mDepartmentId)) {
                 $this->mLinkToPreviousPage = Link::ToDepartment($this->_mDepartmentId, $this->mPage - 1);
             } else {
                 $this->mLinkToPreviousPage = Link::ToIndex($this->mPage - 1);
             }
         }
     }
     // Build links for product details pages
     for ($i = 0; $i < count($this->mProducts); $i++) {
         $this->mProducts[$i]['link_to_product'] = Link::ToProduct($this->mProducts[$i]['product_id']);
         if ($this->mProducts[$i]['thumbnail']) {
             $this->mProducts[$i]['thumbnail'] = Link::Build('images/product_images/' . $this->mProducts[$i]['thumbnail']);
         }
         $this->mProducts[$i]['attributes'] = Catalog::GetProductAttributes($this->mProducts[$i]['product_id']);
     }
 }
 public function init()
 {
     //При загрузке изображения товара...
     if (isset($_POST['Upload'])) {
         //Проверяем есть ли доступ на запись в папку images/product_images
         if (!is_writable(SITE_ROOT . '/images/product_images/')) {
             echo 'Невозможно записать в папку с изображениями';
             exit;
         }
         //загружаем 1 изображение
         //Если код ошибки - 0, файл успешно загружен
         if ($_FILES['ImageUpload']['error'] == 0) {
             //Используем функцию PHP move_upload_file для перемещения загруженного
             //файла из временной папки в папку images/product_images
             move_uploaded_file($_FILES['ImageUpload']['tmp_name'], SITE_ROOT . '/images/product_images/' . $_FILES['ImageUpload']['name']);
             //обновляем информацию о товаре в базе данных
             Catalog::SetImage($this->_mProductId, $_FILES['ImageUpload']['name']);
         }
         //загружаем 2 изображение
         //Если код ошибки - 0, файл успешно загружен
         if ($_FILES['Image2Upload']['error'] == 0) {
             move_uploaded_file($_FILES['Image2Upload']['tmp_name'], SITE_ROOT . '/images/product_images/' . $_FILES['Image2Upload']['name']);
             //обновляем информацию о товаре в базе данных
             Catalog::SetImage2($this->_mProductId, $_FILES['Image2Upload']['name']);
         }
         //загружаем миниатюру
         //Если код ошибки - 0, файл успешно загружен
         if ($_FILES['ThumbnailUpload']['error'] == 0) {
             move_uploaded_file($_FILES['ThumbnailUpload']['tmp_name'], SITE_ROOT . '/images/product_images/' . $_FILES['ThumbnailUpload']['name']);
             //обновляем информацию о товаре в базе данных
             Catalog::SetThumbnail($this->_mProductId, $_FILES['ThumbnailUpload']['name']);
         }
     }
     // При обновлении информации о товаре...
     if (isset($_POST['UpdateProductInfo'])) {
         $product_name = $_POST['name'];
         $product_description = $_POST['description'];
         $product_price = $_POST['price'];
         $product_discounted_price = $_POST['discounted_price'];
         if ($product_name == NULL) {
             $this->mErrorMessage = 'Имя товара не установлено!';
         }
         if ($product_description == NULL) {
             $this->mErrorMessage = 'Описание не заполнено!';
         }
         if ($product_price == NULL || !is_numeric($product_price)) {
             $this->mErrorMessage = 'Цена товара должна быть в виде числа!';
         }
         if ($product_discounted_price == NULL || !is_numeric($product_discounted_price)) {
             $this->mErrorMessage = 'Цена товара со скидкой 
               должна быть в виде числа!';
         }
         if ($this->mErrorMessage == NULL) {
             Catalog::UpdateProduct($this->_mProductId, $product_name, $product_description, $product_price, $product_discounted_price);
         }
     }
     //При удалении товара из категории...
     if (isset($_POST['RemoveFromCategory'])) {
         $target_category_id = $_POST['TargetCategoryIdRemove'];
         $still_exists = Catalog::RemoveProductFromCategory($this->_mProductId, $target_category_id);
         if ($still_exists == 0) {
             header('Location: ' . htmlspecialchars_decode($this->mLinkToCategoryProductsAdmin));
             exit;
         }
     }
     // При установке параметров отображения товара
     if (isset($_POST['SetProductDisplayOption'])) {
         $product_display = $_POST['ProductDisplay'];
         Catalog::SetProductDisplayOption($this->_mProductId, $product_display);
     }
     // При удалениии товара из каталога
     if (isset($_POST['RemoveFromCatalog'])) {
         Catalog::DeleteProduct($this->_mProductId);
         header('Location: ' . htmlspecialchars_decode($this->mLinkToCategoryProductsAdmin));
         exit;
     }
     //При зачислении товара в другую категори ...
     if (isset($_POST['Assign'])) {
         $target_category_id = $_POST['TargetCategoryIdAssign'];
         Catalog::AssignProductToCategory($this->_mProductId, $target_category_id);
     }
     //При переносе товара в другую категорию
     if (isset($_POST['Move'])) {
         $target_category_id = $_POST['TargetCategoryIdMove'];
         Catalog::MoveProductToCategory($this->_mProductId, $this->_mCategoryId, $target_category_id);
         header('Location: ' . htmlspecialchars_decode(Link::ToProductAdmin($this->_mDepartmentId, $target_category_id, $this->_mProductId)));
         exit;
     }
     // При присвоении товару значения атрибута...
     if (isset($_POST['AssignAttributeValue'])) {
         $targer_attribute_value_id = $_POST['TargetAttributeValueIdAssign'];
         Catalog::AssignAttributeValueToProduct($this->_mProductId, $targer_attribute_value_id);
     }
     // При удалении значения атрибута из товара
     if (isset($_POST['RemoveAttributeValue'])) {
         $targer_attribute_value_id = $_POST['TargetAttributeValueIdRemove'];
         Catalog::RemoveProductAttributeValue($this->_mProductId, $targer_attribute_value_id);
     }
     //Получаем информацию о товаре
     $this->mProduct = Catalog::GetProductInfo($this->_mProductId);
     $product_categories = Catalog::GetCategoriesForProduct($this->_mProductId);
     $product_attributes = Catalog::GetProductAttributes($this->_mProductId);
     for ($i = 0; $i < count($product_attributes); $i++) {
         $this->mProductAttributes[$product_attributes[$i]['attribute_value_id']] = $product_attributes[$i]['attribute_name'] . ': ' . $product_attributes[$i]['attribute_value'];
     }
     $catalog_attributes = Catalog::GetAttributesNotAssignedToProduct($this->_mProductId);
     for ($i = 0; $i < count($catalog_attributes); $i++) {
         $this->mProductAttributes[$catalog_attributes[$i]['attribute_value_id']] = $catalog_attributes[$i]['attribute_name'] . ': ' . $catalog_attributes[$i]['attribute_value'];
     }
     if (count($product_categories) == 1) {
         $this->mRemoveFromCategoryButtonDisabled = true;
     }
     //Отображаем категории к которым принадлежит товар
     for ($i = 0; $i < count($product_categories); $i++) {
         $temp1[$product_categories[$i]['category_id']] = $product_categories[$i]['name'];
     }
     $this->mRemoveFromCategories = $temp1;
     $this->mProductCategoriesString = implode(', ', $temp1);
     $all_categories = Catalog::GetCategories();
     for ($i = 0; $i < count($all_categories); $i++) {
         $temp2[$all_categories[$i]['category_id']] = $all_categories[$i]['name'];
     }
     $this->mAssignOrMoveTo = array_diff($temp2, $temp1);
 }
Esempio n. 5
0
 public function init()
 {
     //Подготавливаем кнопку редактирования
     $this->mEditActionTarget = Link::Build(str_replace(VIRTUAL_LOCATION, '', getenv('REQUEST_URI')));
     if (isset($_SESSION['admin_logged']) && $_SESSION['admin_logged'] == TRUE && isset($_POST['product_id'])) {
         if (isset($this->_mDepartmentId) && isset($this->_mCategoryId)) {
             header('Location: ' . htmlspecialchars_decode(Link::ToProductAdmin($this->_mDepartmentId, $this->_mCategoryId, (int) $_POST['product_id'])));
         } else {
             $product_locations = Catalog::GetProductLocations((int) $_POST['product_id']);
             if (count($product_locations) > 0) {
                 $department_id = $product_locations[0]['department_id'];
                 $category_id = $product_locations[0]['category_id'];
                 header('Location: ' . htmlspecialchars_decode(Link::ToProductAdmin($department_id, $category_id, (int) $_POST['product_id'])));
             }
         }
     }
     /* If searching the catalog, get the list of products by calling
        the Search business tier method */
     if (isset($this->mSearchString)) {
         // Get search results
         $search_results = Catalog::Search($this->mSearchString, $this->mAllWords, $this->mPage, $this->mrTotalPages);
         // Get the list of products
         $this->mProducts = $search_results['products'];
         // Build the title for the list of products
         if (count($search_results['accepted_words']) > 0) {
             $this->mSearchDescription = '<p class="description">Products containing <font class="words">' . ($this->mAllWords == 'on' ? 'all' : 'any') . '</font>' . ' of these words: <font class="words">' . implode(', ', $search_results['accepted_words']) . '</font></p>';
         }
         if (count($search_results['ignored_words']) > 0) {
             $this->mSearchDescription .= '<p class="description">Ignored words: <font class="words">' . implode(', ', $search_results['ignored_words']) . '</font></p>';
         }
         if (!(count($search_results['products']) > 0)) {
             $this->mSearchDescription .= '<p class="description">Your search generated no results.</p>';
         }
     } elseif (isset($this->_mCategoryId)) {
         $this->mProducts = Catalog::GetProductsInCategory($this->_mCategoryId, $this->mPage, $this->mrTotalPages);
     } elseif (isset($this->_mDepartmentId)) {
         $this->mProducts = Catalog::GetProductsOnDepartment($this->_mDepartmentId, $this->mPage, $this->mrTotalPages);
     } else {
         $this->mProducts = Catalog::GetProductsOnCatalog($this->mPage, $this->mrTotalPages);
     }
     /* If there are subpages of products, display navigation
        controls */
     if ($this->mrTotalPages > 1) {
         // Build the Next link
         if ($this->mPage < $this->mrTotalPages) {
             if (isset($_GET['SearchResults'])) {
                 $this->mLinkToNextPage = Link::ToSearchResults($this->mSearchString, $this->mAllWords, $this->mPage + 1);
             } elseif (isset($this->_mCategoryId)) {
                 $this->mLinkToNextPage = Link::ToCategory($this->_mDepartmentId, $this->_mCategoryId, $this->mPage + 1);
             } elseif (isset($this->_mDepartmentId)) {
                 $this->mLinkToNextPage = Link::ToDepartment($this->_mDepartmentId, $this->mPage + 1);
             } else {
                 $this->mLinkToNextPage = Link::ToIndex($this->mPage + 1);
             }
         }
         // Build the Previous link
         if ($this->mPage > 1) {
             if (isset($_GET['SearchResults'])) {
                 $this->mLinkToPreviousPage = Link::ToSearchResults($this->mSearchString, $this->mAllWords, $this->mPage - 1);
             } elseif (isset($this->_mCategoryId)) {
                 $this->mLinkToPreviousPage = Link::ToCategory($this->_mDepartmentId, $this->_mCategoryId, $this->mPage - 1);
             } elseif (isset($this->_mDepartmentId)) {
                 $this->mLinkToPreviousPage = Link::ToDepartment($this->_mDepartmentId, $this->mPage - 1);
             } else {
                 $this->mLinkToPreviousPage = Link::ToIndex($this->mPage - 1);
             }
         }
         // Build the pages links
         for ($i = 1; $i <= $this->mrTotalPages; $i++) {
             if (isset($_GET['SearchResults'])) {
                 $this->mProductListPages[] = Link::ToSearchResults($this->mSearchString, $this->mAllWords, $i);
             } elseif (isset($this->_mCategoryId)) {
                 $this->mProductListPages[] = Link::ToCategory($this->_mDepartmentId, $this->_mCategoryId, $i);
             } elseif (isset($this->_mDepartmentId)) {
                 $this->mProductListPages[] = Link::ToDepartment($this->_mDepartmentId, $i);
             } else {
                 $this->mProductListPages[] = Link::ToIndex($i);
             }
         }
     }
     /* 404 redirect if the page number is larger than
        the total number of pages */
     if ($this->mPage > $this->mrTotalPages && !empty($this->mrTotalPages)) {
         // Clean output buffer
         ob_clean();
         // Load the 404 page
         include '404.php';
         // Clear the output buffer and stop execution
         flush();
         ob_flush();
         ob_end_clean();
         exit;
     }
     // Build links for product details pages
     for ($i = 0; $i < count($this->mProducts); $i++) {
         $this->mProducts[$i]['link_to_product'] = Link::ToProduct($this->mProducts[$i]['product_id']);
         if ($this->mProducts[$i]['thumbnail']) {
             $this->mProducts[$i]['thumbnail'] = Link::Build('images/product_images/' . $this->mProducts[$i]['thumbnail']);
         }
         // Create the Add to Cart link
         $this->mProducts[$i]['link_to_add_product'] = Link::ToCart(ADD_PRODUCT, $this->mProducts[$i]['product_id']);
         $this->mProducts[$i]['attributes'] = Catalog::GetProductAttributes($this->mProducts[$i]['product_id']);
     }
 }