示例#1
0
文件: Brand.php 项目: ariol/adminshop
 public function selectInsert($name)
 {
     $brand = ORM::factory('Brand')->where('name', '=', $name)->find();
     if (!$brand->loaded()) {
         $url = Helpers_Url::translit($name);
         $brand = ORM::factory('Brand');
         $brand->name = $name;
         $brand->url = $url;
         $brand->md5_url = md5($url);
         $brand->save();
     }
     return $brand->id;
 }
示例#2
0
 public function selectInsert($name)
 {
     $category = ORM::factory('Category')->where('name', '=', $name)->find();
     $url = Helpers_Url::translit($name);
     $category->url = $url;
     $category->md5_url = md5($url);
     if (!$category->id) {
         $category->name = $name;
     }
     $category->save();
     $category_id = $category->id;
     unset($category);
     return $category_id;
 }
示例#3
0
 protected function _execute(array $params)
 {
     if (!Kohana::$config->load('price.update') && !Arr::get($params, 'force')) {
         exit;
     }
     header('Content-Type: text/html; charset=utf-8');
     $handle = fopen(DOCROOT . 'EXP.csv', "r+");
     $line = 0;
     $last_lines = '';
     $lines_id = 0;
     $last_cagegory = '';
     $category_id = 0;
     $last_brand = '';
     $brand_id = 0;
     $PDO = ORM::factory('Product')->PDO();
     $PDO->query('UPDATE product SET active = 0');
     Kohana::$config->load('price')->set('update', 0);
     while (!feof($handle)) {
         $matches = fgetcsv($handle, 0, ';');
         if (!$line) {
             $line++;
             continue;
         }
         if (!isset($matches[2])) {
             continue;
         }
         $brand = trim(iconv('windows-1251', 'utf-8', $matches[7]));
         $lines = trim(iconv('windows-1251', 'utf-8', $matches[8]));
         $name = trim(iconv('windows-1251', 'utf-8', $matches[3]));
         $article = trim(iconv('windows-1251', 'utf-8', $matches[12]));
         $url = Helpers_Url::translit($brand . '-' . $article);
         $product = ORM::factory('Product', array('article' => $article));
         $category = iconv('windows-1251', 'utf-8', $matches[2]);
         $category = trim($category);
         if (!$article || !$brand || !$category) {
             continue;
         }
         if ($category && $last_cagegory != $category) {
             $category_id = ORM::factory('Category')->selectInsert($category);
             $last_cagegory = $category;
         }
         if ($lines && $last_lines != $lines) {
             $lines_id = ORM::factory('Line')->selectInsert($lines);
             $last_lines = $lines;
         }
         if ($last_brand != $brand) {
             $brand_id = ORM::factory('Brand')->selectInsert($brand);
             $last_brand = $brand;
         }
         $price = trim(iconv('windows-1251', 'utf-8', $matches[10]));
         $productData = array('name' => $name, 'parent_product' => intval($matches[6]) ? intval($matches[6]) : null, 'price' => intval(str_replace(' ', '', $matches[10])), 'purchase_price' => intval($matches[9]), 'new_price' => intval(str_replace(' ', '', $matches[11])), 'url' => $url, 'md5_url' => md5($url), 'article' => $article, 'original_article' => trim(iconv('windows-1251', 'utf-8', $matches[12])), 'volume' => trim($matches[5]), 'active' => 1, 'brand_id' => $brand_id, 'line_id' => $lines_id, 'category_id' => $category_id, 'updated_at' => date('Y-m-d H:i:s'));
         if ($article) {
             $product = ORM::factory('Product')->insertSelect($product, $productData);
             if (!$product->main_image) {
                 $result = $this->downloadImage($product);
                 if ($result) {
                     $product->main_image = $result;
                     $product->update();
                 }
             }
             unset($categoty_id);
             unset($categories);
             unset($productData);
             unset($product);
             unset($categories_str);
             unset($name);
             unset($url);
             unset($category);
             unset($matches);
         }
     }
     fclose($handle);
     $PDO->query('UPDATE categories SET active = 0');
     foreach (ORM::factory('Category')->find_all() as $category) {
         if (ORM::factory('Product')->where('active', '=', 1)->where('category_id', '=', $category->id)->count_all()) {
             $category->active = 1;
             $category->save();
         }
     }
 }