diff --git a/backend/controllers/CheckPriceController.php b/backend/controllers/CheckPriceController.php index 42b2b4f..139ac59 100644 --- a/backend/controllers/CheckPriceController.php +++ b/backend/controllers/CheckPriceController.php @@ -8,8 +8,8 @@ use yii\filters\AccessControl; use backend\components\base\BaseController; use yii\filters\VerbFilter; use backend\models\Details; -use backend\models\ImporterFiles; -use backend\models\Importer; +use backend\models\ImportersFiles; +use backend\models\Importers; use yii\base\ErrorException; use common\components\CustomVarDamp; @@ -66,7 +66,7 @@ class CheckPriceController extends BaseController } //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); - $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); + $query = Importers::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); $provider = new ActiveDataProvider([ 'query' => $query, diff --git a/backend/controllers/ParserController.php b/backend/controllers/ParserController.php index 43da4ca..7dab9b3 100644 --- a/backend/controllers/ParserController.php +++ b/backend/controllers/ParserController.php @@ -12,8 +12,8 @@ use yii\data\ArrayDataProvider; use yii\multiparser\DynamicFormHelper; use backend\components\parsers\CustomParserConfigurator; use backend\models\Details; -use backend\models\ImporterFiles; -use backend\models\Importer; +use backend\models\ImportersFiles; +use backend\models\Importers; use yii\base\ErrorException; use yii\db\Query; @@ -88,9 +88,9 @@ class ParserController extends BaseController // первый проход - валидируем, сохраняем файл, ложим в кеш (для ручной загрузки) отпарсенные данные и параметры модели (потом при записи в базу данных они пригодятся) if ($model->validate()) { // запишем дату загрузки файла в таблицу файлов поставщика (ImportersFiles) - $files_model = new ImporterFiles(); + $files_model = new ImportersFiles(); // id поставщика получим из конфигурации - $files_model->load(['ImporterFiles' => $model->toArray()]); + $files_model->load(['ImportersFiles' => $model->toArray()]); try { $files_model->save(); } catch (ErrorException $e) { @@ -194,9 +194,9 @@ class ParserController extends BaseController // 1. запишем дату старта в таблицу файлов поставщика (ImportersFiles) // id загруженного файла получим из конфигурации - $files_model = ImporterFiles::findOne( $configuration->record_id ); + $files_model = ImportersFiles::findOne( $configuration->record_id ); - //$files_model->load(['ImporterFiles' => $configuration->toArray()]); + //$files_model->load(['ImportersFiles' => $configuration->toArray()]); $update_date = date('Y-m-d H:i:s'); $files_model->time_start = $update_date; // запишем дату начала загрузки @@ -227,7 +227,7 @@ class ParserController extends BaseController } // 4. зафиксируем дату загрузки в таблице поставщиков - $imp_model = Importer::findOne($configuration['importer_id']); + $imp_model = Importers::findOne($configuration['importer_id']); $imp_model->price_date_update = $update_date; if (!$imp_model->save()) { @@ -260,7 +260,7 @@ class ParserController extends BaseController public function actionAutoUpload() { - $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); + $query = Importers::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); $provider = new ActiveDataProvider([ 'query' => $query, @@ -282,7 +282,7 @@ class ParserController extends BaseController $arr_id_files[] = (int) $file_id; } Yii::$app->cache->set( 'files_to_delete',json_encode( $arr_id_files ) ); - $query = ImporterFiles::find()->where(['in', 'id', $arr_id_files])->orderBy(['upload_time' => SORT_DESC]); + $query = ImportersFiles::find()->where(['in', 'id', $arr_id_files])->orderBy(['upload_time' => SORT_DESC]); $provider = new ActiveDataProvider([ 'query' => $query, @@ -299,7 +299,7 @@ class ParserController extends BaseController { if ( Yii::$app->request->isAjax ) { - $files_model = new ImporterFiles(); + $files_model = new ImportersFiles(); if ( isset(Yii::$app->request->post()['id'] )) { $id = Yii::$app->request->post()['id']; try { diff --git a/backend/models/Details_old.php b/backend/models/Details_old.php deleted file mode 100644 index 15b1f67..0000000 --- a/backend/models/Details_old.php +++ /dev/null @@ -1,135 +0,0 @@ -mode = $mode; - } - - public function rules() - { - return [ - [['BRAND','ARTICLE', 'PRICE', 'BOX'], 'required' ], - ]; - } - - public function formName() - { - return 'Details'; - } - - - public static function tableName() - { - return '{{%details}}'; - } - -// //@todo вероятно этой функции не место здесь -// public function prepareData ( $data, $configuration ) -// { -// if ( isset($configuration['importer_id']) && $configuration['importer_id']) { -// $data = \Yii::$app->multiparser->addColumn( $data, 'IMPORT_ID', $configuration['importer_id'] ); -// } -// // \common\components\CustomVarDamp::dumpAndDie($data); -// return $data; -// } - - /** - * @param $data - двумерный массив данных для записи в таблицу details - * @throws \yii\db\Exception - * вставляет записи с апдейтом при дубляже ключей - */ - public function save ($data) - { - $table_name = self::tableName(); - $keys_arr = array_keys( $data[0] ); - // найдем те поля которые не являются ключами. Их нужно будет при дубляже апдейтить - $fields_arr_to_update = array_diff( $keys_arr, $this::KEY_COLUMN ); - - $query_update = ' on duplicate key update '; - foreach ($fields_arr_to_update as $field) { - $query_update .= "{$field} = values({$field}),"; - } - // удалим последнюю запятую - $query_update = substr($query_update, 0, strlen($query_update) - 1); - - // запросы будем выполнять пакетами - // размер пакета установлен в константе - // разобъем массив на пакеты и будем их проходить - $data = array_chunk($data, $this::BATCH ); - foreach( $data as $current_batch_array ){ - - //воспользуемся пакетной вставкой от фреймворка, плюс сразу с экранированием и защитой от инъекций - $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; - // добавим фрагмент с апдейтом при дубляже - $query = "{$query_insert} {$query_update}"; - // \common\components\CustomVarDamp::dumpAndDie($query); - $res = Yii::$app->db->createCommand($query)->execute(); - - } - - } -} - -// - -//$q = " INSERT INTO {$table_name} ({$keys_string}) VALUES ("; - -//$q .= " on duplicate key update `FULL_ARTICLE` = values (`FULL_ARTICLE`), -// `PRICE` = values (`PRICE`), -// `DESCR` = values(`DESCR`), -// `BOX` = values(`BOX`), -// `ADD_BOX` = values(`ADD_BOX`), -// `GROUP` = values(`GROUP`);"; - -// INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) -// ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); - - - -//INSERT INTO `books` (`UserId`, `BookId`, `Count`) VALUES (13, 1001, 3) -//ON DUPLICATE KEY UPDATE `Count` = `Count` + VALUES(`Count`); - -//$values_string = ''; -//$keys_arr = array_keys( $data[0] ); -//$keys_string = implode( ',', $keys_arr); -//$table_name = self::tableName(); -//$current_batch = 0; -//for ($i = $current_batch; $i < $this::BATCH AND $i < count($data); $i++) { -// $values_string .= '(' . implode( ',', $data[$i]) . '),'; -//} -// for ($current_batch = $this::BATCH; $current_batchdb->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql; -//$query = "{$query_insert} on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; -//$res = Yii::$app->db->createCommand($query)->execute(); - - - -// Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql execute(); \ No newline at end of file diff --git a/backend/models/Importer.php b/backend/models/Importer.php deleted file mode 100644 index 8c06694..0000000 --- a/backend/models/Importer.php +++ /dev/null @@ -1,96 +0,0 @@ - 254], - [['PARSER_FIELD_SIGN'], 'string', 'max' => 1], - // [['price_date_update'], 'string', 'max' => 15], - [['code'], 'unique'], - [['name'], 'unique'] - ]; - } - - /** - * @inheritdoc - */ - public function attributeLabels() - { - return [ - 'id' => Yii::t('app', 'ID'), - 'code' => Yii::t('app', 'Code'), - 'name' => Yii::t('app', 'Name'), - 'name_price' => Yii::t('app', 'Name Price'), - 'currency_id' => Yii::t('app', 'Currency ID'), - 'delivery' => Yii::t('app', 'Delivery'), - 'email' => Yii::t('app', 'Email'), - 'info' => Yii::t('app', 'Info'), - 'active' => Yii::t('app', 'Active'), - 'PARSER_IS_ACTIVE' => Yii::t('app', 'Parser Is Active'), - 'PARSER_COLUMN_COUNT' => Yii::t('app', 'Parser Column Count'), - 'PARSER_FIELD_BRAND' => Yii::t('app', 'Parser Field Brand'), - 'PARSER_FIELD_ARTICLE' => Yii::t('app', 'Parser Field Article'), - 'PARSER_FIELD_ARTICLE_PREFIX' => Yii::t('app', 'Parser Field Article Prefix'), - 'PARSER_FIELD_PRICE' => Yii::t('app', 'Parser Field Price'), - 'PARSER_FIELD_DESCR' => Yii::t('app', 'Parser Field Descr'), - 'PARSER_FIELD_BOX' => Yii::t('app', 'Parser Field Box'), - 'PARSER_FIELD_ADD_BOX' => Yii::t('app', 'Parser Field Add Box'), - 'PARSER_FIELD_GROUP_RG' => Yii::t('app', 'Parser Field Group Rg'), - 'PARSER_FIELD_SIGN' => Yii::t('app', 'Parser Field Sign'), - 'PARSER_FIELD_MULTIPLIER' => Yii::t('app', 'Parser Field Multiplier'), - 'price_date_update' => Yii::t('app', 'Price Date Update'), - ]; - } - - - -} diff --git a/backend/models/ImporterFiles.php b/backend/models/ImporterFiles.php deleted file mode 100644 index ab664ab..0000000 --- a/backend/models/ImporterFiles.php +++ /dev/null @@ -1,57 +0,0 @@ -hasOne(Importer::className(), ['id' => 'importer_id'])->one()->name; - } - - /** - * @inheritdoc - */ - public function attributeLabels() - { - return [ - 'id' => Yii::t('app', 'ID'), - 'importer_id' => Yii::t('app', 'Importer ID'), - 'upload_time' => Yii::t('app', 'Upload Time'), - 'time_start' => Yii::t('app', 'Time Start'), - 'time_end' => Yii::t('app', 'Time End'), - ]; - } -} diff --git a/backend/models/Importers.php b/backend/models/Importers.php new file mode 100644 index 0000000..2763c0d --- /dev/null +++ b/backend/models/Importers.php @@ -0,0 +1,86 @@ + 254], + [['PARSER_FIELD_SIGN'], 'string', 'max' => 1], + // [['price_date_update'], 'string', 'max' => 15], + [['code'], 'unique'], + [['name'], 'unique'] + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id' => Yii::t('app', 'ID'), + 'code' => Yii::t('app', 'Code'), + 'name' => Yii::t('app', 'Name'), + 'name_price' => Yii::t('app', 'Name Price'), + 'currency_id' => Yii::t('app', 'Currency ID'), + 'delivery' => Yii::t('app', 'Delivery'), + 'email' => Yii::t('app', 'Email'), + 'info' => Yii::t('app', 'Info'), + 'active' => Yii::t('app', 'Active'), + 'PARSER_IS_ACTIVE' => Yii::t('app', 'Parser Is Active'), + 'PARSER_COLUMN_COUNT' => Yii::t('app', 'Parser Column Count'), + 'PARSER_FIELD_BRAND' => Yii::t('app', 'Parser Field Brand'), + 'PARSER_FIELD_ARTICLE' => Yii::t('app', 'Parser Field Article'), + 'PARSER_FIELD_ARTICLE_PREFIX' => Yii::t('app', 'Parser Field Article Prefix'), + 'PARSER_FIELD_PRICE' => Yii::t('app', 'Parser Field Price'), + 'PARSER_FIELD_DESCR' => Yii::t('app', 'Parser Field Descr'), + 'PARSER_FIELD_BOX' => Yii::t('app', 'Parser Field Box'), + 'PARSER_FIELD_ADD_BOX' => Yii::t('app', 'Parser Field Add Box'), + 'PARSER_FIELD_GROUP_RG' => Yii::t('app', 'Parser Field Group Rg'), + 'PARSER_FIELD_SIGN' => Yii::t('app', 'Parser Field Sign'), + 'PARSER_FIELD_MULTIPLIER' => Yii::t('app', 'Parser Field Multiplier'), + 'price_date_update' => Yii::t('app', 'Price Date Update'), + ]; + } + + + +} diff --git a/backend/models/ImportersFiles.php b/backend/models/ImportersFiles.php new file mode 100644 index 0000000..aca8926 --- /dev/null +++ b/backend/models/ImportersFiles.php @@ -0,0 +1,49 @@ +hasOne(Importers::className(), ['id' => 'importer_id'])->one()->name; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id' => Yii::t('app', 'ID'), + 'importer_id' => Yii::t('app', 'Importers ID'), + 'upload_time' => Yii::t('app', 'Upload Time'), + 'time_start' => Yii::t('app', 'Time Start'), + 'time_end' => Yii::t('app', 'Time End'), + ]; + } +} \ No newline at end of file diff --git a/backend/views/parser/index.php b/backend/views/parser/index.php index a7c2646..44864c4 100644 --- a/backend/views/parser/index.php +++ b/backend/views/parser/index.php @@ -1,7 +1,7 @@ mode ) { // авто загрузка @@ -27,7 +27,7 @@ if ( $model->mode ) {

Загрузка прайсов поставщиков

- field($model, 'importer_id')->dropDownList(ArrayHelper::map( Importer::find()->all(), 'id','name' )); ?> + field($model, 'importer_id')->dropDownList(ArrayHelper::map( Importers::find()->all(), 'id','name' )); ?> field($model, 'delete_price')->checkbox(['label' => 'Загрузить с удалением старого прайса']); diff --git a/common/models/User.php b/common/models/User.php index ce78fcd..a23707a 100644 --- a/common/models/User.php +++ b/common/models/User.php @@ -31,7 +31,7 @@ class User extends ActiveRecord implements IdentityInterface */ public static function tableName() { - return '{{%user}}'; + return 'user'; } /** diff --git a/console/.gitignore b/console/.gitignore new file mode 100644 index 0000000..16203a8 --- /dev/null +++ b/console/.gitignore @@ -0,0 +1 @@ +/old_migrations \ No newline at end of file diff --git a/console/migrations/m130524_201442_init.php b/console/migrations/m130524_201442_init.php deleted file mode 100644 index 81a322a..0000000 --- a/console/migrations/m130524_201442_init.php +++ /dev/null @@ -1,34 +0,0 @@ -db->driverName === 'mysql') { - // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci - $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; - } - - $this->createTable('{{%user}}', [ - 'id' => $this->primaryKey(), - 'username' => $this->string()->notNull()->unique(), - 'auth_key' => $this->string(32)->notNull(), - 'password_hash' => $this->string()->notNull(), - 'password_reset_token' => $this->string()->unique(), - 'email' => $this->string()->notNull()->unique(), - - 'status' => $this->smallInteger()->notNull()->defaultValue(10), - 'created_at' => $this->integer()->notNull(), - 'updated_at' => $this->integer()->notNull(), - ], $tableOptions); - } - - public function down() - { - $this->dropTable('{{%user}}'); - } -} diff --git a/console/migrations/m150818_125718_create_user_180815.php b/console/migrations/m150818_125718_create_user_180815.php deleted file mode 100644 index db70571..0000000 --- a/console/migrations/m150818_125718_create_user_180815.php +++ /dev/null @@ -1,44 +0,0 @@ - 'admin', - 'auth_key' => 'admin', - 'password_hash' => Yii::$app->security->generatePasswordHash('admin'), - 'password_reset_token' => 'admin', - 'email'=> 'admin@test.com', - 'status' => '10', - 'created_at'=>'000000', - 'updated_at' => '000000' - ]; - $this->insert('{{%user}}', $user_array); - } - - - - public function down() - { - $this->dropTable('{{%user}}'); - } - - /* - // Use safeUp/safeDown to run migration code within a transaction - public function safeUp() - { - } - - public function safeDown() - { - } - */ -} diff --git a/console/migrations/m150831_130250_addImporters.php b/console/migrations/m150831_130250_addImporters.php deleted file mode 100644 index 2fbc121..0000000 --- a/console/migrations/m150831_130250_addImporters.php +++ /dev/null @@ -1,62 +0,0 @@ -db->driverName === 'mysql') { - $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; - } - - $this->createTable('{{%importer}}', [ - 'id' => $this->primaryKey(6)->notNull() . ' AUTO_INCREMENT', - 'code' =>'varchar(254) NOT NULL', - 'name' => 'varchar(254) NOT NULL', - 'name_price' => 'varchar(254) NOT NULL', - 'currency_id' => 'int(3) unsigned NOT NULL', - 'delivery' => 'varchar(254) NOT NULL', - 'email' => 'varchar(254) NOT NULL', - 'info' => 'text NOT NULL', - 'active' => 'tinyint(1) unsigned NOT NULL DEFAULT 1', - 'PARSER_IS_ACTIVE' => 'tinyint(1) unsigned NOT NULL DEFAULT 0', - 'PARSER_COLUMN_COUNT' => 'int(6) unsigned DEFAULT NULL', - 'PARSER_FIELD_BRAND' => 'int(3) unsigned DEFAULT NULL', - 'PARSER_FIELD_ARTICLE' => 'int(3) unsigned DEFAULT NULL', - 'PARSER_FIELD_ARTICLE_PREFIX' => 'tinyint(1) unsigned NOT NULL DEFAULT 0', - 'PARSER_FIELD_PRICE' => 'int(3) unsigned DEFAULT NULL', - 'PARSER_FIELD_DESCR' =>'int(3) unsigned DEFAULT NULL', - 'PARSER_FIELD_BOX' => 'int(3) unsigned DEFAULT NULL', - 'PARSER_FIELD_ADD_BOX' => 'int(3) unsigned DEFAULT NULL', - 'PARSER_FIELD_GROUP_RG' => 'int(3) unsigned DEFAULT NULL', - 'PARSER_FIELD_SIGN' => 'varchar(1) NOT NULL', - 'PARSER_FIELD_MULTIPLIER' => 'float(8,2) unsigned DEFAULT NULL', - 'price_date_update' => 'varchar(15) NOT NULL' - - ], $tableOptions); - - $this->createIndex('code', '{{%importer}}', 'code', true); - $this->createIndex('name', '{{%importer}}', 'name', true); - $this->createIndex('active', '{{%importer}}', 'active', false); - } - - public function down() - { - $this->dropTable('{{%importer}}'); - - } - - /* - // Use safeUp/safeDown to run migration code within a transaction - public function safeUp() - { - } - - public function safeDown() - { - } - */ -} diff --git a/console/migrations/m150901_135806_addImportersFiles.php b/console/migrations/m150901_135806_addImportersFiles.php deleted file mode 100644 index 647e773..0000000 --- a/console/migrations/m150901_135806_addImportersFiles.php +++ /dev/null @@ -1,42 +0,0 @@ -db->driverName === 'mysql') { - $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; - } - - $this->createTable('{{%importer_files}}', [ - 'id' => $this->primaryKey(10)->notNull() . ' AUTO_INCREMENT', - 'importer_id' => 'int(6) unsigned NOT NULL', - 'upload_time' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP', - 'time_start' => 'timestamp NULL DEFAULT NULL', - 'time_end' => 'timestamp NULL DEFAULT NULL', - ], $tableOptions); - - - $this->createIndex('importer_id', '{{%importer_files}}', 'importer_id, time_start', false); - } - - public function down() - { - $this->dropTable('{{%importer_files}}'); - } - - /* - // Use safeUp/safeDown to run migration code within a transaction - public function safeUp() - { - } - - public function safeDown() - { - } - */ -} diff --git a/console/migrations/m150901_141850_addImportersPrefix.php b/console/migrations/m150901_141850_addImportersPrefix.php deleted file mode 100644 index a59f15a..0000000 --- a/console/migrations/m150901_141850_addImportersPrefix.php +++ /dev/null @@ -1,41 +0,0 @@ -db->driverName === 'mysql') { - $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; - } - - $this->createTable('{{%importer_prefix}}', [ - 'id' => $this->primaryKey(10)->notNull() . ' AUTO_INCREMENT', - 'importer_id' => 'int(6) unsigned NOT NULL', - 'brand' => 'varchar(100) NOT NULL', - 'prefix' => 'varchar(50) NOT NULL', - 'timestamp' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP', - ], $tableOptions); - - $this->createIndex('importer_id', '{{%importer_prefix}}', 'importer_id, brand, prefix', true); - } - - public function down() - { - $this->dropTable('{{%importer_prefix}}'); - } - - /* - // Use safeUp/safeDown to run migration code within a transaction - public function safeUp() - { - } - - public function safeDown() - { - } - */ -} diff --git a/console/migrations/m150915_125129_addDetails.php b/console/migrations/m150915_125129_addDetails.php deleted file mode 100644 index d8d5419..0000000 --- a/console/migrations/m150915_125129_addDetails.php +++ /dev/null @@ -1,40 +0,0 @@ -execute('CREATE TABLE `details` ( - `ID` int(10) unsigned NOT NULL AUTO_INCREMENT, - `IMPORT_ID` int(6) unsigned NOT NULL, - `BRAND` varchar(100) NOT NULL, - `ARTICLE` varchar(100) NOT NULL, - `FULL_ARTICLE` varchar(150) NOT NULL, - `PRICE` float(15,2) unsigned NOT NULL, - `DESCR` varchar(200) NOT NULL, - `BOX` int(6) unsigned NOT NULL, - `ADD_BOX` int(6) unsigned NOT NULL DEFAULT 0, - `GROUP` varchar(200) NOT NULL DEFAULT \'\', - `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`ARTICLE`,`BRAND`,`IMPORT_ID`), - UNIQUE KEY `ID_delete` (`ID`), - KEY `timestamp` (`timestamp`), - KEY `ARTICLE` (`ARTICLE`,`BRAND`,`BOX`), - KEY `BRAND` (`BRAND`,`ARTICLE`), - KEY `ARTICLE_2` (`ARTICLE`,`BRAND`,`ADD_BOX`), - KEY `IMPORT_ID` (`IMPORT_ID`,`ARTICLE`), - KEY `IMPORT_ID_2` (`IMPORT_ID`,`timestamp`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8'); - - } - - public function down() - { - $this->dropTable('{{%details}}'); - - } - -} diff --git a/console/migrations/m150922_094313_change_key_ImportFiles.php b/console/migrations/m150922_094313_change_key_ImportFiles.php deleted file mode 100644 index 5606ec2..0000000 --- a/console/migrations/m150922_094313_change_key_ImportFiles.php +++ /dev/null @@ -1,22 +0,0 @@ -dropIndex('importer_id', '{{%importer_files}}'); - $this->createIndex('importer_id', '{{%importer_files}}', 'importer_id, upload_time', false); - } - - public function down() - { - $this->dropIndex('importer_id', '{{%importer_files}}'); - $this->createIndex('importer_id', '{{%importer_files}}', 'importer_id, time_start', false); - } - - -} diff --git a/console/migrations/m150922_144040_change_Importer_dataPrice.php b/console/migrations/m150922_144040_change_Importer_dataPrice.php deleted file mode 100644 index f62873d..0000000 --- a/console/migrations/m150922_144040_change_Importer_dataPrice.php +++ /dev/null @@ -1,21 +0,0 @@ -alterColumn('{{%importer}}','price_date_update','TIMESTAMP' ); - $this->createIndex('price_date', '{{%importer}}', 'price_date_update', false); - } - - public function down() - { - $this->alterColumn('{{%importer}}','price_date','varchar(15)' ); - $this->dropIndex('price_date', '{{%importer}}'); - } - - -} diff --git a/console/migrations/m150925_111922_add_foreign_key_ImportFiles.php b/console/migrations/m150925_111922_add_foreign_key_ImportFiles.php index 10f44aa..0954d7f 100644 --- a/console/migrations/m150925_111922_add_foreign_key_ImportFiles.php +++ b/console/migrations/m150925_111922_add_foreign_key_ImportFiles.php @@ -2,17 +2,29 @@ use yii\db\Schema; use yii\db\Migration; +use backend\models\ImportersFiles; class m150925_111922_add_foreign_key_ImportFiles extends Migration { - public function up() + public function safeUp() { - $this->addForeignKey('importer_fk', '{{%importer_files}}', 'importer_id', '{{%importer}}', 'id'); + // сначала отберем записи которых нет уже в поставщиках + $id_arr = (new \yii\db\Query()) + ->select(['{{%importers_files}}.id']) + ->from('{{%importers_files}}') + ->leftJoin('{{%importers}}', 'importer_id = {{%importers}}.id') + ->where(['name' => null]) + ->all(); + $id_arr = array_column($id_arr,'id'); + // удалим их + $this->delete('{{%importers_files}}',['id' => $id_arr]); + + $this->addForeignKey('importer_fk', '{{%importers_files}}', 'importer_id', '{{%importers}}', 'id'); } public function down() { - $this->dropForeignKey('importer_fk', '{{%importer_files}}'); + $this->dropForeignKey('importer_fk', '{{%importers_files}}'); } } diff --git a/console/migrations/m150929_110456_addTempTableUser.php b/console/migrations/m150929_110456_addTempTableUser.php new file mode 100644 index 0000000..1273b3c --- /dev/null +++ b/console/migrations/m150929_110456_addTempTableUser.php @@ -0,0 +1,46 @@ +db->driverName === 'mysql') { + // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci + $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB'; + } + + $this->createTable('user', [ + 'id' => $this->primaryKey(), + 'username' => $this->string()->notNull()->unique(), + 'auth_key' => $this->string(32)->notNull(), + 'password_hash' => $this->string()->notNull(), + 'password_reset_token' => $this->string()->unique(), + 'email' => $this->string()->notNull()->unique(), + + 'status' => $this->smallInteger()->notNull()->defaultValue(10), + 'created_at' => $this->integer()->notNull(), + 'updated_at' => $this->integer()->notNull(), + ], $tableOptions); + + $user_array = [ + 'username' => 'admin', + 'auth_key' => 'admin', + 'password_hash' => Yii::$app->security->generatePasswordHash('admin'), + 'password_reset_token' => 'admin', + 'email'=> 'admin@test.com', + 'status' => '10', + 'created_at'=>'000000', + 'updated_at' => '000000' + ]; + $this->insert('user', $user_array); + } + + public function down() + { + $this->dropTable('user'); + } +} diff --git a/console/migrations/m150929_113358_change_Importer_dataPrice.php b/console/migrations/m150929_113358_change_Importer_dataPrice.php new file mode 100644 index 0000000..78af93d --- /dev/null +++ b/console/migrations/m150929_113358_change_Importer_dataPrice.php @@ -0,0 +1,27 @@ +alterColumn('{{%importers}}','price_date_update','VARCHAR(80)' ); + // конвертем в дату + $this->update('{{%importers}}',['price_date_update'=> new yii\db\Expression('FROM_UNIXTIME(price_date_update)')]); + // а из даты в таймстамп + $this->alterColumn('{{%importers}}','price_date_update','TIMESTAMP NOT NULL' ); + $this->createIndex('price_date', '{{%importers}}', 'price_date_update', false); + + } + + + public function safedown() + { + $this->alterColumn('{{%importers}}','price_date','varchar(15)' ); + $this->dropIndex('price_date', '{{%importers}}'); + } + +} diff --git a/framework/lang/da.yml b/framework/lang/da.yml index ea485b3..54b8f80 100644 --- a/framework/lang/da.yml +++ b/framework/lang/da.yml @@ -23,7 +23,7 @@ da: PLEASESAVE: 'Gem siden: Denne side kunne ikke blive opdateret, fordi den endnu ikke er gemt.' ModelAdmin: DELETE: Slet - IMPORT: 'Importer fra CSV' + IMPORT: 'Importers fra CSV' NOCSVFILE: 'Tryk på Gennemse for at vælge en CSVfil til importering' NOIMPORT: 'Intet at importere' SecurityAdmin: diff --git a/framework/lang/fr.yml b/framework/lang/fr.yml index 41374ee..5f7bb52 100644 --- a/framework/lang/fr.yml +++ b/framework/lang/fr.yml @@ -234,7 +234,7 @@ fr: has_many_Permissions: Autorisations many_many_Members: Membres GroupImportForm: - Help1: '

Importer un ou plusieurs groupe(s) au format CSV (comma-separated values). Montrer l''usage avancé

' + Help1: '

Importers un ou plusieurs groupe(s) au format CSV (comma-separated values). Montrer l''usage avancé

' Help2: "
\n

Utilisation avancée

\n\n
" ResultCreated: '{count} groupes créés' ResultDeleted: '%d groupes supprimés' @@ -388,7 +388,7 @@ fr: TWODIGITYEAR: 'L’année sur deux chiffres' Toggle: 'Afficher l’aide de mise en forme' MemberImportForm: - Help1: '

Importer les membres au formatCSV format (comma-separated values). Afficher l''usage avancé.

' + Help1: '

Importers les membres au formatCSV format (comma-separated values). Afficher l''usage avancé.

' Help2: "
\n

Utilisation avancée

\n\n
" ResultCreated: '{count} membres créés' ResultDeleted: '%d membres supprimés' @@ -403,7 +403,7 @@ fr: DELETE: Supprime DELETEDRECORDS: '{count} enregistrements supprimés.' EMPTYBEFOREIMPORT: 'Remplacer les données' - IMPORT: 'Importer de CSV' + IMPORT: 'Importers de CSV' IMPORTEDRECORDS: '{count} enregistrements importés.' NOCSVFILE: 'Veuillez choisir un fichier CSV à importer' NOIMPORT: 'Rien à importer' @@ -417,9 +417,9 @@ fr: IMPORTSPECTITLE: 'Spécification de %s' ModelAdmin_Tools_ss: FILTER: Filtrer - IMPORT: Importer + IMPORT: Importers ModelSidebar_ss: - IMPORT_TAB_HEADER: Importer + IMPORT_TAB_HEADER: Importers SEARCHLISTINGS: Rechercher MoneyField: FIELDLABELAMOUNT: Quantité @@ -481,8 +481,8 @@ fr: EDITPERMISSIONS: 'Gérer les autorisations des groupes' EDITPERMISSIONS_HELP: 'Possibilité d''éditer les autorisations et les adresses IP pour un groupe. Nécessite l’autorisation « Accès à la section “Securité” ».' GROUPNAME: 'Nom du group' - IMPORTGROUPS: 'Importer des groupes' - IMPORTUSERS: 'Importer des utilisateurs' + IMPORTGROUPS: 'Importers des groupes' + IMPORTUSERS: 'Importers des utilisateurs' MEMBERS: Membres MENUTITLE: Sécurité MemberListCaution: 'Attention : en supprimant des membres de cette liste vous les enlèverez de tous les groupes ainsi que de la base de données' @@ -493,7 +493,7 @@ fr: TABROLES: Rôles Users: Utilisateurs SecurityAdmin_MemberImportForm: - BtnImport: 'Importer' + BtnImport: 'Importers' FileFieldLabel: 'Fichier CSV (extension autorisée : *.csv)' SilverStripeNavigator: Auto: Auto diff --git a/framework/lang/nb.yml b/framework/lang/nb.yml index 53ada3d..261e453 100644 --- a/framework/lang/nb.yml +++ b/framework/lang/nb.yml @@ -236,7 +236,7 @@ nb: has_many_Permissions: Tillatelser many_many_Members: Medlemmer GroupImportForm: - Help1: '

Importer en eller flere grupper i CSV-format (kommaseparerte verdier). Vis avanserte alternativer

' + Help1: '

Importers en eller flere grupper i CSV-format (kommaseparerte verdier). Vis avanserte alternativer

' Help2: "
\n

Avanserte alternativer

\n\n
" ResultCreated: 'Opprettet {count} grupper' ResultDeleted: 'Slettet %d grupper' @@ -390,7 +390,7 @@ nb: TWODIGITYEAR: 'Tosifret årstall' Toggle: 'Vis formateringshjelp' MemberImportForm: - Help1: '

Importer brukere i CSV-format (verdier adskilt med komma). Vis avanserte alternativer

' + Help1: '

Importers brukere i CSV-format (verdier adskilt med komma). Vis avanserte alternativer

' Help2: "
\n

Avanserte alternativer

\n\n
" ResultCreated: 'Opprettet {count} medlemmer' ResultDeleted: 'Slettet %d medlemmer' @@ -405,7 +405,7 @@ nb: DELETE: Slett DELETEDRECORDS: 'Slettet {count} oppføringer.' EMPTYBEFOREIMPORT: 'Erstatt data' - IMPORT: 'Importer fra CSV' + IMPORT: 'Importers fra CSV' IMPORTEDRECORDS: 'Importerte {count} oppføringer.' NOCSVFILE: 'Vennligst finn en CSV-fil å importere' NOIMPORT: 'Ingenting å importere' @@ -419,9 +419,9 @@ nb: IMPORTSPECTITLE: 'Spesifikasjon for %s' ModelAdmin_Tools_ss: FILTER: Filtrer - IMPORT: Importer + IMPORT: Importers ModelSidebar_ss: - IMPORT_TAB_HEADER: Importer + IMPORT_TAB_HEADER: Importers SEARCHLISTINGS: Søk MoneyField: FIELDLABELAMOUNT: Mengde @@ -485,8 +485,8 @@ nb: EDITPERMISSIONS: 'Administrer tillatelser for grupper' EDITPERMISSIONS_HELP: 'Mulighet for å endre tillatelser og IP-adresser for en gruppe. Brukere må ha adgang til sikkerhetsseksjon.' GROUPNAME: 'Gruppenavn' - IMPORTGROUPS: 'Importer grupper' - IMPORTUSERS: 'Importer brukere' + IMPORTGROUPS: 'Importers grupper' + IMPORTUSERS: 'Importers brukere' MEMBERS: Medlemmer MENUTITLE: Sikkerhet MemberListCaution: 'Advarsel: Hvis du fjerner medlemmer fra denne listen vil det samtidig fjerne dem fra alle grupper og databasen' @@ -497,7 +497,7 @@ nb: TABROLES: Roller Users: Brukere SecurityAdmin_MemberImportForm: - BtnImport: 'Importer fra CSV' + BtnImport: 'Importers fra CSV' FileFieldLabel: 'CSV-fil (Tillatt filtype: *.csv)' SilverStripeNavigator: Auto: Automatisk -- libgit2 0.21.4