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