· 9 years ago · Sep 09, 2016, 02:26 PM
1<?php $___notjson=1; header('Content-Type: text/html; charset= utf-8');
2
3require_once $_SERVER['DOCUMENT_ROOT'].'/uAPImodule.php';
4require_once $_SERVER['DOCUMENT_ROOT'].'/PHPExcel/IOFactory.php';
5set_time_limit(5000);
6// получаем xls c иÑходными данными и ÑохранÑем в файл
7$data_file_url = "http://omnilux.ru/ost.xls";
8$data = file_get_contents($data_file_url);
9$fh = fopen($_SERVER['DOCUMENT_ROOT']."/tmp_data.xls", "w");
10if(!$fh) exit("Ðе удалоÑÑŒ открыть поток Ð´Ð»Ñ tmp/tmp_data.xls");
11fwrite($fh, $data);
12fclose($fh);
13
14
15$filename = '($_SERVER['DOCUMENT_ROOT']."/tmp_data.xls")';
16$file = file_get_contents($filename);
17$file = str_replace('более', '1', $file);
18file_put_contents($filename, $file);
19
20
21// переводим xls в csv формат
22$obj_PHPExcel_data = PHPExcel_IOFactory::load($_SERVER['DOCUMENT_ROOT']."/tmp_data.xls");
23$objWriter = PHPExcel_IOFactory::createWriter($obj_PHPExcel_data, 'CSV')
24 ->setDelimiter(',')
25 ->setEnclosure('"')
26 ->setLineEnding("\r\n")
27 ->setSheetIndex(0)
28 ->save($_SERVER['DOCUMENT_ROOT']."/tmp_data.csv");
29 ini_set('error_reporting', E_ALL);
30ini_set('display_errors', 1);
31ini_set('display_startup_errors', 1);
32// получаем маÑÑив Ñ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð¹ информацией
33$data_to_update = array();
34$fh = fopen($_SERVER['DOCUMENT_ROOT']."/tmp_data.csv", "r");
35if(!$fh) exit("Ðе удалоÑÑŒ открыть поток Ð´Ð»Ñ tmp/tmp_data.csv");
36// пропуÑкаем заголовки
37fgetcsv($fh);
38$request = new Request(array(
39 'oauth_consumer_key' => 'Omnilux_stock_updater',
40 'oauth_consumer_secret' => 'srCRd54zGtQAbo3cb9wSpVe9P1NCWp',
41 'oauth_token' => 'MR9EGjO6d5uQqIv2p6d9W4WrKQCwHqtHO9JEg4Wc',
42 'oauth_token_secret' => 'BxF3kEBCjhqUYQbffDCXGilv5XKfVhGbyD1GtUC8'
43));
44$res = object_from_file($_SERVER['DOCUMENT_ROOT'].'/array_stock.txt');
45if(empty($res)) {
46 while ($string = fgetcsv($fh)) {
47 $data_to_update[$string[0]] = array(
48 "stock" => $string[1],
49 );
50 }
51 fclose($fh);
52// подготавливаем объект Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов по api
53
54// получаем ÑпиÑок вÑех товаров
55 $all_goods = array();
56 $cur_page = 1;
57 do {
58 $response = $request->get('/shop/request', array(
59 'page' => 'allgoods',
60 'pnum' => $cur_page
61 ));
62
63 $response = json_decode($response);
64
65 $num_pages = $response->success->paginator->num_pages;
66 foreach ($response->success->goods_list as $product) {
67 if (isset($data_to_update[$product->entry_art_no])) {
68 $data_to_update[$product->entry_art_no]["id"] = $product->entry_id;
69 }
70 }
71 $cur_page++;
72 } while ($cur_page <= $num_pages);
73
74// обновлÑем информацию о наличии
75}else{
76 $data_to_update = $res;
77}
78$counter = 1;
79$schetcik = 1;
80foreach ($data_to_update as $art_no => $value) {
81 if(isset($value["id"])) {
82 $response = $request->get('/shop/editgoods', array(
83 'method' => 'cnt-save',
84 'id' => $value["id"],
85 'stock_q' => $value["stock"],
86
87 ));
88 $response = json_decode($response);
89
90 print_r($schetcik);
91 /*echo "<pre>";
92 print_r($response);
93 echo "</pre>";*/
94 $counter++;
95 $schetcik++;
96 unset($data_to_update[$art_no]);
97 if($counter == 5){
98 $counter = 1;
99
100 object2file($data_to_update,$_SERVER['DOCUMENT_ROOT'].'/array_stock.txt');
101 }
102 }
103
104}
105
106
107
108function object2file($value, $filename)
109{
110 $str_value = serialize($value);
111
112 $f = fopen($filename, 'w');
113 fwrite($f, $str_value);
114 fclose($f);
115}
116
117
118function object_from_file($filename)
119{
120 $file = file_get_contents($filename);
121 $value = unserialize($file);
122 return $value;
123}
124
125unlink($_SERVER['DOCUMENT_ROOT']."/tmp_data.csv");
126unlink($_SERVER['DOCUMENT_ROOT']."/tmp_data.xls");
127unlink($_SERVER['DOCUMENT_ROOT']."/array_stock.txt");
128
129
130?>