private function getCategories()
 {
     if ($categories = Model_Main::getCategory(FALSE, ['title'], TRUE)) {
         $categories_ids = [];
         $main_categories = [];
         $second_level_categories = [];
         $third_level_categories = [];
         if (!empty($categories) && is_array($categories)) {
             //Loop and get ID's
             foreach ($categories as $key => $category) {
                 $categories_ids[] = $category['id'];
             }
             //Get urls
             if ($urls = Model_Client::getURL($categories_ids, 'category')) {
                 if (!empty($urls) && is_array($urls)) {
                     foreach ($urls as $url) {
                         $categories[$url['object']]['slug'] = $url['slug'];
                     }
                 }
             }
             foreach ($categories as $key => $category) {
                 if ($category['level'] == 0) {
                     $main_categories[$category['id']] = ['id' => $category['id'], 'slug' => !empty($category['slug']) ? $category['slug'] : '', 'title' => $category['title']];
                 } elseif ($category['level'] == 1) {
                     $second_level_categories[$category['parent_id']][] = ['id' => $category['id'], 'slug' => !empty($category['slug']) ? $category['slug'] : '', 'title' => $category['title'], 'parent' => $category['parent_id']];
                 } elseif ($category['level'] == 2) {
                     $third_level_categories[$category['parent_id']][] = ['id' => $category['id'], 'slug' => !empty($category['slug']) ? $category['slug'] : '', 'title' => $category['title'], 'parent' => $category['parent_id']];
                 }
             }
         }
         $this->categories['all'] = $categories;
         View::share('main_categories', $main_categories);
         View::share('second_level_categories', $second_level_categories);
         View::share('third_level_categories', $third_level_categories);
     } else {
         return FALSE;
     }
 }
Example #2
0
 public static function sitemap()
 {
     $customCSS = [];
     $customJS = [];
     $response = ['page_title' => trans('client.sitemap'), 'blade_custom_css' => $customCSS, 'blade_custom_js' => $customJS];
     if ($response['categories'] = Model_Main::getCategory(FALSE, ['title'], FALSE)) {
         $categories_ids = [];
         $main_categories = [];
         $second_level_categories = [];
         //			$third_level_categories  = [];
         if (!empty($response['categories']) && is_array($response['categories'])) {
             //Loop and get ID's
             foreach ($response['categories'] as $key => $category) {
                 $categories_ids[] = $category['id'];
             }
             //Get urls
             if ($urls = Model_Client::getURL($categories_ids, 'category')) {
                 if (!empty($urls) && is_array($urls)) {
                     foreach ($urls as $url) {
                         $response['categories'][$url['object']]['slug'] = $url['slug'];
                     }
                 }
             }
             foreach ($response['categories'] as $key => $category) {
                 if ($category['level'] == 0) {
                     $main_categories[$category['id']] = ['id' => $category['id'], 'slug' => !empty($category['slug']) ? $category['slug'] : '', 'title' => $category['title']];
                 } elseif ($category['level'] == 1) {
                     $second_level_categories[$category['parent_id']][] = ['id' => $category['id'], 'slug' => !empty($category['slug']) ? $category['slug'] : '', 'title' => $category['title'], 'parent' => $category['parent_id']];
                 }
                 //					elseif ($category['level'] == 2)
                 //					{
                 //						$third_level_categories[$category['parent_id']][] = [
                 //							'id'     => $category['id'],
                 //							'slug'   => ! empty($category['slug']) ? $category['slug'] : '',
                 //							'title'  => $category['title'],
                 //							'parent' => $category['parent_id'],
                 //						];
                 //					}
             }
         }
         $response['map_cat_lvl_1'] = $main_categories;
         $response['map_cat_lvl_2'] = $second_level_categories;
         //			$response['map_cat_lvl_3'] = $third_level_categories;
         $response['map_pages'] = Model_Main::getSitemapPages();
     }
     return Theme::view('homepage.sitemap', $response);
 }
Example #3
0
 private function loadProduct($id)
 {
     $response = [];
     $product = Model_Main::getProducts($id);
     //Breadcrumbs
     $response['all_categories'] = $this->categories['all'];
     if (!empty($product[$id]['main_category']) && $this->categories['all'][$product[$id]['main_category']]) {
         $response['breadcrumbs'] = self::generateCategoryBreadcrumbs($this->categories['all'][$product[$id]['main_category']]);
     }
     //Prepare product for response
     if (!empty($product[$id])) {
         $response['product'] = $product[$id];
         if (!empty($response['product']['page_title'])) {
             View::share('page_title', $response['product']['page_title']);
         } else {
             if (!empty($response['product']['title'])) {
                 View::share('page_title', $response['product']['title']);
             }
         }
         if (!empty($response['product']['meta_description'])) {
             View::share('page_meta_description', $response['product']['meta_description']);
         }
         if (!empty($response['product']['meta_keywords'])) {
             View::share('page_meta_keywords', $response['product']['meta_keywords']);
         }
         if (!empty($response['product']['discount_price'])) {
             //Calculate is discount active
             $now = time();
             if ($response['product']['discount_start'] == '0000.00.00 00:00:00' || strtotime($response['product']['discount_start']) <= $now) {
                 $allow_start = TRUE;
             } else {
                 $allow_start = FALSE;
             }
             if ($response['product']['discount_end'] == '0000.00.00 00:00:00' || strtotime($response['product']['discount_end']) <= $now) {
                 $allow_end = TRUE;
             } else {
                 $allow_end = FALSE;
             }
             if ($allow_start === TRUE && $allow_end === TRUE) {
                 $response['product']['active_discount'] = TRUE;
             }
         }
         if (!empty($response['product']['sizes']) && is_array($response['product']['sizes'] = json_decode($response['product']['sizes'], TRUE))) {
             foreach ($response['product']['sizes'] as $key => $size) {
                 if (empty($size['name']) || empty($size['quantity'])) {
                     if (isset($response['product']['sizes'][$key])) {
                         unset($response['product']['sizes'][$key]);
                     }
                 }
             }
         }
     }
     //Product discount percentage
     if (!empty($response['product']['active_discount'])) {
         $response['product']['discount'] = intval((floatval($response['product']['price']) - floatval($response['product']['discount_price'])) / floatval($response['product']['price']) * 100);
     }
     //Images
     if (!empty($response['product']['images'])) {
         $response['product']['images'] = json_decode($response['product']['images'], TRUE);
         if (is_array($response['product']['images'])) {
             $response['product_thumbs_path'] = Config::get('system_settings.product_public_path') . $id . '/' . Config::get('images.sm_icon_size') . '/';
             $response['images_path'] = Config::get('system_settings.product_public_path') . $id . '/' . Config::get('images.full_size') . '/';
             $response['md_path'] = Config::get('system_settings.product_public_path') . $id . '/' . Config::get('images.md_icon_size') . '/';
             uasort($response['product']['images'], function ($a, $b) {
                 if ($a == $b) {
                     return 0;
                 }
                 return $a < $b ? -1 : 1;
             });
         }
     }
     //Tags
     $response['product']['tags'] = Model_Main::getTags($id);
     //Manufacturer
     $response['product']['manufacturer'] = Model_Main::getManufacturer($id);
     //Material
     $response['product']['material'] = Model_Main::getMaterial($id);
     if (!empty($response['product']['material'][0])) {
         $response['product']['material'] = $response['product']['material'][0];
     }
     //Color
     $response['product']['related_colors'] = Model_Main::getColor($id);
     if (!empty($response['product']['related_colors'])) {
         $response['product']['related_colors'] = implode(', ', $response['product']['related_colors']);
     }
     //Related products
     if (!empty($response['product']['related_products']) && is_array(json_decode($response['product']['related_products'], TRUE))) {
         $response['carousel']['products'] = json_decode($response['product']['related_products'], TRUE);
     } else {
         if (!empty($response['product']['main_category'])) {
             $response['carousel']['products'] = Model_Main::getSimilarProducts($response['product']['main_category']);
         }
     }
     if (!empty($response['carousel']['products'])) {
         $response['products'] = $response['carousel']['products'];
     }
     //Get upcoming product
     $response['upcoming'] = Model_Client::getUpcomingProduct();
     if (!empty($response['upcoming']['product_id'])) {
         $response['products'][] = $response['upcoming']['product_id'];
         if (!empty($response['upcoming']['date'])) {
             $response['upcoming']['date'] = date('Y/m/d', strtotime($response['upcoming']['date']));
         }
     }
     $recent = Model_Main::getNewestProducts(3, $id, TRUE);
     if (!empty($recent)) {
         $response['recent'] = $recent;
         array_merge($response['products'], $recent);
     }
     $response['icon_size'] = Config::get('images.sm_icon_size');
     $response['thumbs_path'] = Config::get('system_settings.product_public_path');
     $response['carousel']['title'] = trans('client.similar_products');
     // Get products data
     $response['products'] = Model_Main::getProducts($response['products'], ['title', 'images', 'sizes', 'description']);
     // Send products to response
     $response['products'] = self::prepareProductsForResponse($response['products']);
     //Check dimensions table
     if (!empty($response['product']['dimensions_table'])) {
         $response['product']['dimensions_table'] = trim($response['product']['dimensions_table']);
     }
     return $response;
 }
Example #4
0
 public function sitemapCategories()
 {
     $categories = Model_Main::getCategory(FALSE, ['title']);
     if (!empty($categories) && is_array($categories)) {
         //Loop and get ID's
         foreach ($categories as $key => $category) {
             $categories_ids[] = $category['id'];
         }
         //Get urls
         if ($urls = Model_Client::getURL($categories_ids, 'category')) {
             if (!empty($urls) && is_array($urls)) {
                 foreach ($urls as $url) {
                     $categories[$url['object']]['slug'] = $url['slug'];
                 }
             }
         }
         foreach ($categories as $id => $data) {
             Sitemap::addTag(url('/' . $data['slug']), $data['updated_at']);
         }
     }
     // Return the sitemap to the client.
     return Sitemap::render();
 }