Commit 1cc27986a6333a36df95b8027b73f208b3e7b08d
1 parent
021773a2
merge with server
Showing
22 changed files
with
211 additions
and
1451 deletions
Show diff stats
.gitignore
backend/controllers/ParserController.php
| 1 | <?php | 1 | <?php |
| 2 | namespace backend\controllers; | 2 | namespace backend\controllers; |
| 3 | 3 | ||
| 4 | +use common\components\parsers\MailParser; | ||
| 4 | use Yii; | 5 | use Yii; |
| 5 | use yii\data\ActiveDataProvider; | 6 | use yii\data\ActiveDataProvider; |
| 6 | use yii\filters\AccessControl; | 7 | use yii\filters\AccessControl; |
| @@ -53,6 +54,7 @@ class ParserController extends BaseController | @@ -53,6 +54,7 @@ class ParserController extends BaseController | ||
| 53 | public function actionIndex($mode = 0) | 54 | public function actionIndex($mode = 0) |
| 54 | { | 55 | { |
| 55 | $model = new UploadFileParsingForm(); | 56 | $model = new UploadFileParsingForm(); |
| 57 | + // $mail = new MailParser(); | ||
| 56 | // установим режим, 0 - ручная загрузка, 1 - автозагрузка | 58 | // установим режим, 0 - ручная загрузка, 1 - автозагрузка |
| 57 | $model->mode = $mode; | 59 | $model->mode = $mode; |
| 58 | return $this->render('index', ['model' => $model]); | 60 | return $this->render('index', ['model' => $model]); |
common/components/parsers/config.php
| @@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
| 52 | ['console' => | 52 | ['console' => |
| 53 | ['class' => 'yii\multiparser\XmlParser', | 53 | ['class' => 'yii\multiparser\XmlParser', |
| 54 | 'node' => 'Товар', | 54 | 'node' => 'Товар', |
| 55 | - 'hasHeaderRow' => true, | 55 | + 'has_header_row' => true, |
| 56 | 'keys' => [ | 56 | 'keys' => [ |
| 57 | "BRAND" => 'Производитель', | 57 | "BRAND" => 'Производитель', |
| 58 | "ARTICLE"=> 'Код', | 58 | "ARTICLE"=> 'Код', |
| @@ -72,9 +72,9 @@ | @@ -72,9 +72,9 @@ | ||
| 72 | ['web' => | 72 | ['web' => |
| 73 | ['class' => 'yii\multiparser\XlsxParser', | 73 | ['class' => 'yii\multiparser\XlsxParser', |
| 74 | 'path_for_extract_files' => \Yii::getAlias('@temp_upload') . '/', | 74 | 'path_for_extract_files' => \Yii::getAlias('@temp_upload') . '/', |
| 75 | + 'has_header_row' => true, | ||
| 75 | 'converter_conf' => [ | 76 | 'converter_conf' => [ |
| 76 | 'class' => 'common\components\parsers\CustomConverter', | 77 | 'class' => 'common\components\parsers\CustomConverter', |
| 77 | - 'hasHeaderRow' => true, | ||
| 78 | 'configuration' => ["string" => []], | 78 | 'configuration' => ["string" => []], |
| 79 | ] | 79 | ] |
| 80 | ], | 80 | ], |
composer.json
| @@ -18,6 +18,7 @@ | @@ -18,6 +18,7 @@ | ||
| 18 | "yiisoft/yii2": ">=2.0.6", | 18 | "yiisoft/yii2": ">=2.0.6", |
| 19 | "yiisoft/yii2-bootstrap": "*", | 19 | "yiisoft/yii2-bootstrap": "*", |
| 20 | "yiisoft/yii2-swiftmailer": "*", | 20 | "yiisoft/yii2-swiftmailer": "*", |
| 21 | + "artweb/yii2-multiparser": "master-dev", | ||
| 21 | "yiisoft/yii2-imagine": "*" | 22 | "yiisoft/yii2-imagine": "*" |
| 22 | }, | 23 | }, |
| 23 | "require-dev": { | 24 | "require-dev": { |
composer.lock
| @@ -4,9 +4,55 @@ | @@ -4,9 +4,55 @@ | ||
| 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", | 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", |
| 5 | "This file is @generated automatically" | 5 | "This file is @generated automatically" |
| 6 | ], | 6 | ], |
| 7 | - "hash": "8580bd82955b1fbb80d47024e184056e", | 7 | + "hash": "0a5f8749ae4c46cb2b7dd9d3f777c97c", |
| 8 | + "content-hash": "4c396673df5a5e19daaa0f887579444c", | ||
| 8 | "packages": [ | 9 | "packages": [ |
| 9 | { | 10 | { |
| 11 | + "name": "artweb/yii2-multiparser", | ||
| 12 | + "version": "dev-master", | ||
| 13 | + "source": { | ||
| 14 | + "type": "git", | ||
| 15 | + "url": "https://github.com/tsurkanovm/yii-multiparser.git", | ||
| 16 | + "reference": "7a3cd2728c4b0c9db1b6bcea411f8df87b69ecd3" | ||
| 17 | + }, | ||
| 18 | + "dist": { | ||
| 19 | + "type": "zip", | ||
| 20 | + "url": "https://api.github.com/repos/tsurkanovm/yii-multiparser/zipball/7a3cd2728c4b0c9db1b6bcea411f8df87b69ecd3", | ||
| 21 | + "reference": "7a3cd2728c4b0c9db1b6bcea411f8df87b69ecd3", | ||
| 22 | + "shasum": "" | ||
| 23 | + }, | ||
| 24 | + "require": { | ||
| 25 | + "yiisoft/yii2": "*" | ||
| 26 | + }, | ||
| 27 | + "type": "library", | ||
| 28 | + "autoload": { | ||
| 29 | + "psr-4": { | ||
| 30 | + "yii\\multiparser\\": "lib\\" | ||
| 31 | + } | ||
| 32 | + }, | ||
| 33 | + "notification-url": "https://packagist.org/downloads/", | ||
| 34 | + "license": [ | ||
| 35 | + "MIT" | ||
| 36 | + ], | ||
| 37 | + "authors": [ | ||
| 38 | + { | ||
| 39 | + "name": "Mihail Tsurkanov", | ||
| 40 | + "email": "tsurkanovm@gmail.com", | ||
| 41 | + "role": "Developer" | ||
| 42 | + } | ||
| 43 | + ], | ||
| 44 | + "description": "This extension provides a Multiparser solution for Yii framework 2.0.", | ||
| 45 | + "homepage": "https://github.com/tsurkanovm/yii-multiparser.git", | ||
| 46 | + "keywords": [ | ||
| 47 | + "csv", | ||
| 48 | + "parser", | ||
| 49 | + "xlsx", | ||
| 50 | + "xml", | ||
| 51 | + "yii2" | ||
| 52 | + ], | ||
| 53 | + "time": "2015-10-26 10:04:39" | ||
| 54 | + }, | ||
| 55 | + { | ||
| 10 | "name": "bower-asset/bootstrap", | 56 | "name": "bower-asset/bootstrap", |
| 11 | "version": "v3.3.5", | 57 | "version": "v3.3.5", |
| 12 | "source": { | 58 | "source": { |
| @@ -317,6 +363,58 @@ | @@ -317,6 +363,58 @@ | ||
| 317 | "time": "2013-11-30 08:25:19" | 363 | "time": "2013-11-30 08:25:19" |
| 318 | }, | 364 | }, |
| 319 | { | 365 | { |
| 366 | + "name": "imagine/imagine", | ||
| 367 | + "version": "v0.5.0", | ||
| 368 | + "source": { | ||
| 369 | + "type": "git", | ||
| 370 | + "url": "https://github.com/avalanche123/Imagine.git", | ||
| 371 | + "reference": "f64ec666baaa800edcbf237db41121a569230709" | ||
| 372 | + }, | ||
| 373 | + "dist": { | ||
| 374 | + "type": "zip", | ||
| 375 | + "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/f64ec666baaa800edcbf237db41121a569230709", | ||
| 376 | + "reference": "f64ec666baaa800edcbf237db41121a569230709", | ||
| 377 | + "shasum": "" | ||
| 378 | + }, | ||
| 379 | + "require": { | ||
| 380 | + "php": ">=5.3.2" | ||
| 381 | + }, | ||
| 382 | + "require-dev": { | ||
| 383 | + "sami/sami": "dev-master" | ||
| 384 | + }, | ||
| 385 | + "suggest": { | ||
| 386 | + "ext-gd": "to use the GD implementation", | ||
| 387 | + "ext-gmagick": "to use the Gmagick implementation", | ||
| 388 | + "ext-imagick": "to use the Imagick implementation" | ||
| 389 | + }, | ||
| 390 | + "type": "library", | ||
| 391 | + "autoload": { | ||
| 392 | + "psr-0": { | ||
| 393 | + "Imagine": "lib/" | ||
| 394 | + } | ||
| 395 | + }, | ||
| 396 | + "notification-url": "https://packagist.org/downloads/", | ||
| 397 | + "license": [ | ||
| 398 | + "MIT" | ||
| 399 | + ], | ||
| 400 | + "authors": [ | ||
| 401 | + { | ||
| 402 | + "name": "Bulat Shakirzyanov", | ||
| 403 | + "email": "mallluhuct@gmail.com", | ||
| 404 | + "homepage": "http://avalanche123.com" | ||
| 405 | + } | ||
| 406 | + ], | ||
| 407 | + "description": "Image processing for PHP 5.3", | ||
| 408 | + "homepage": "http://imagine.readthedocs.org/", | ||
| 409 | + "keywords": [ | ||
| 410 | + "drawing", | ||
| 411 | + "graphics", | ||
| 412 | + "image manipulation", | ||
| 413 | + "image processing" | ||
| 414 | + ], | ||
| 415 | + "time": "2013-07-10 17:25:36" | ||
| 416 | + }, | ||
| 417 | + { | ||
| 320 | "name": "swiftmailer/swiftmailer", | 418 | "name": "swiftmailer/swiftmailer", |
| 321 | "version": "v5.4.1", | 419 | "version": "v5.4.1", |
| 322 | "source": { | 420 | "source": { |
| @@ -459,21 +557,21 @@ | @@ -459,21 +557,21 @@ | ||
| 459 | }, | 557 | }, |
| 460 | { | 558 | { |
| 461 | "name": "yiisoft/yii2-bootstrap", | 559 | "name": "yiisoft/yii2-bootstrap", |
| 462 | - "version": "2.0.4", | 560 | + "version": "2.0.5", |
| 463 | "source": { | 561 | "source": { |
| 464 | "type": "git", | 562 | "type": "git", |
| 465 | "url": "https://github.com/yiisoft/yii2-bootstrap.git", | 563 | "url": "https://github.com/yiisoft/yii2-bootstrap.git", |
| 466 | - "reference": "1b6b1e61cf91c3cdd517d6a7e71d30bb212e4af0" | 564 | + "reference": "1464f93834b1d5edb1f5625f7ffd6c3723fa4923" |
| 467 | }, | 565 | }, |
| 468 | "dist": { | 566 | "dist": { |
| 469 | "type": "zip", | 567 | "type": "zip", |
| 470 | - "url": "https://api.github.com/repos/yiisoft/yii2-bootstrap/zipball/1b6b1e61cf91c3cdd517d6a7e71d30bb212e4af0", | ||
| 471 | - "reference": "1b6b1e61cf91c3cdd517d6a7e71d30bb212e4af0", | 568 | + "url": "https://api.github.com/repos/yiisoft/yii2-bootstrap/zipball/1464f93834b1d5edb1f5625f7ffd6c3723fa4923", |
| 569 | + "reference": "1464f93834b1d5edb1f5625f7ffd6c3723fa4923", | ||
| 472 | "shasum": "" | 570 | "shasum": "" |
| 473 | }, | 571 | }, |
| 474 | "require": { | 572 | "require": { |
| 475 | "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*", | 573 | "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*", |
| 476 | - "yiisoft/yii2": ">=2.0.4" | 574 | + "yiisoft/yii2": ">=2.0.6" |
| 477 | }, | 575 | }, |
| 478 | "type": "yii2-extension", | 576 | "type": "yii2-extension", |
| 479 | "extra": { | 577 | "extra": { |
| @@ -505,7 +603,7 @@ | @@ -505,7 +603,7 @@ | ||
| 505 | "bootstrap", | 603 | "bootstrap", |
| 506 | "yii2" | 604 | "yii2" |
| 507 | ], | 605 | ], |
| 508 | - "time": "2015-05-10 22:08:17" | 606 | + "time": "2015-09-23 17:48:24" |
| 509 | }, | 607 | }, |
| 510 | { | 608 | { |
| 511 | "name": "yiisoft/yii2-composer", | 609 | "name": "yiisoft/yii2-composer", |
| @@ -555,6 +653,54 @@ | @@ -555,6 +653,54 @@ | ||
| 555 | "time": "2015-03-01 06:22:44" | 653 | "time": "2015-03-01 06:22:44" |
| 556 | }, | 654 | }, |
| 557 | { | 655 | { |
| 656 | + "name": "yiisoft/yii2-imagine", | ||
| 657 | + "version": "2.0.3", | ||
| 658 | + "source": { | ||
| 659 | + "type": "git", | ||
| 660 | + "url": "https://github.com/yiisoft/yii2-imagine.git", | ||
| 661 | + "reference": "0961343138b65bba447de84b2b300899617e6acc" | ||
| 662 | + }, | ||
| 663 | + "dist": { | ||
| 664 | + "type": "zip", | ||
| 665 | + "url": "https://api.github.com/repos/yiisoft/yii2-imagine/zipball/0961343138b65bba447de84b2b300899617e6acc", | ||
| 666 | + "reference": "0961343138b65bba447de84b2b300899617e6acc", | ||
| 667 | + "shasum": "" | ||
| 668 | + }, | ||
| 669 | + "require": { | ||
| 670 | + "imagine/imagine": "0.5.*", | ||
| 671 | + "yiisoft/yii2": "*" | ||
| 672 | + }, | ||
| 673 | + "type": "yii2-extension", | ||
| 674 | + "extra": { | ||
| 675 | + "branch-alias": { | ||
| 676 | + "dev-master": "2.0.x-dev" | ||
| 677 | + } | ||
| 678 | + }, | ||
| 679 | + "autoload": { | ||
| 680 | + "psr-4": { | ||
| 681 | + "yii\\imagine\\": "" | ||
| 682 | + } | ||
| 683 | + }, | ||
| 684 | + "notification-url": "https://packagist.org/downloads/", | ||
| 685 | + "license": [ | ||
| 686 | + "BSD-3-Clause" | ||
| 687 | + ], | ||
| 688 | + "authors": [ | ||
| 689 | + { | ||
| 690 | + "name": "Antonio Ramirez", | ||
| 691 | + "email": "amigo.cobos@gmail.com" | ||
| 692 | + } | ||
| 693 | + ], | ||
| 694 | + "description": "The Imagine integration for the Yii framework", | ||
| 695 | + "keywords": [ | ||
| 696 | + "helper", | ||
| 697 | + "image", | ||
| 698 | + "imagine", | ||
| 699 | + "yii2" | ||
| 700 | + ], | ||
| 701 | + "time": "2015-03-01 06:22:44" | ||
| 702 | + }, | ||
| 703 | + { | ||
| 558 | "name": "yiisoft/yii2-swiftmailer", | 704 | "name": "yiisoft/yii2-swiftmailer", |
| 559 | "version": "2.0.4", | 705 | "version": "2.0.4", |
| 560 | "source": { | 706 | "source": { |
| @@ -634,101 +780,6 @@ | @@ -634,101 +780,6 @@ | ||
| 634 | } | 780 | } |
| 635 | }, | 781 | }, |
| 636 | { | 782 | { |
| 637 | - "name": "composer/installers", | ||
| 638 | - "version": "v1.0.21", | ||
| 639 | - "source": { | ||
| 640 | - "type": "git", | ||
| 641 | - "url": "https://github.com/composer/installers.git", | ||
| 642 | - "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45" | ||
| 643 | - }, | ||
| 644 | - "dist": { | ||
| 645 | - "type": "zip", | ||
| 646 | - "url": "https://api.github.com/repos/composer/installers/zipball/d64e23fce42a4063d63262b19b8e7c0f3b5e4c45", | ||
| 647 | - "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45", | ||
| 648 | - "shasum": "" | ||
| 649 | - }, | ||
| 650 | - "replace": { | ||
| 651 | - "roundcube/plugin-installer": "*", | ||
| 652 | - "shama/baton": "*" | ||
| 653 | - }, | ||
| 654 | - "require-dev": { | ||
| 655 | - "composer/composer": "1.0.*@dev", | ||
| 656 | - "phpunit/phpunit": "4.1.*" | ||
| 657 | - }, | ||
| 658 | - "type": "composer-installer", | ||
| 659 | - "extra": { | ||
| 660 | - "class": "Composer\\Installers\\Installer", | ||
| 661 | - "branch-alias": { | ||
| 662 | - "dev-master": "1.0-dev" | ||
| 663 | - } | ||
| 664 | - }, | ||
| 665 | - "autoload": { | ||
| 666 | - "psr-0": { | ||
| 667 | - "Composer\\Installers\\": "src/" | ||
| 668 | - } | ||
| 669 | - }, | ||
| 670 | - "notification-url": "https://packagist.org/downloads/", | ||
| 671 | - "license": [ | ||
| 672 | - "MIT" | ||
| 673 | - ], | ||
| 674 | - "authors": [ | ||
| 675 | - { | ||
| 676 | - "name": "Kyle Robinson Young", | ||
| 677 | - "email": "kyle@dontkry.com", | ||
| 678 | - "homepage": "https://github.com/shama" | ||
| 679 | - } | ||
| 680 | - ], | ||
| 681 | - "description": "A multi-framework Composer library installer", | ||
| 682 | - "homepage": "http://composer.github.com/installers/", | ||
| 683 | - "keywords": [ | ||
| 684 | - "Craft", | ||
| 685 | - "Dolibarr", | ||
| 686 | - "Hurad", | ||
| 687 | - "MODX Evo", | ||
| 688 | - "OXID", | ||
| 689 | - "SMF", | ||
| 690 | - "Thelia", | ||
| 691 | - "WolfCMS", | ||
| 692 | - "agl", | ||
| 693 | - "aimeos", | ||
| 694 | - "annotatecms", | ||
| 695 | - "bitrix", | ||
| 696 | - "cakephp", | ||
| 697 | - "chef", | ||
| 698 | - "codeigniter", | ||
| 699 | - "concrete5", | ||
| 700 | - "croogo", | ||
| 701 | - "dokuwiki", | ||
| 702 | - "drupal", | ||
| 703 | - "elgg", | ||
| 704 | - "fuelphp", | ||
| 705 | - "grav", | ||
| 706 | - "installer", | ||
| 707 | - "joomla", | ||
| 708 | - "kohana", | ||
| 709 | - "laravel", | ||
| 710 | - "lithium", | ||
| 711 | - "magento", | ||
| 712 | - "mako", | ||
| 713 | - "mediawiki", | ||
| 714 | - "modulework", | ||
| 715 | - "moodle", | ||
| 716 | - "phpbb", | ||
| 717 | - "piwik", | ||
| 718 | - "ppi", | ||
| 719 | - "puppet", | ||
| 720 | - "roundcube", | ||
| 721 | - "shopware", | ||
| 722 | - "silverstripe", | ||
| 723 | - "symfony", | ||
| 724 | - "typo3", | ||
| 725 | - "wordpress", | ||
| 726 | - "zend", | ||
| 727 | - "zikula" | ||
| 728 | - ], | ||
| 729 | - "time": "2015-02-18 17:17:01" | ||
| 730 | - }, | ||
| 731 | - { | ||
| 732 | "name": "fzaninotto/faker", | 783 | "name": "fzaninotto/faker", |
| 733 | "version": "v1.5.0", | 784 | "version": "v1.5.0", |
| 734 | "source": { | 785 | "source": { |
| @@ -815,55 +866,6 @@ | @@ -815,55 +866,6 @@ | ||
| 815 | "time": "2013-11-01 13:02:21" | 866 | "time": "2013-11-01 13:02:21" |
| 816 | }, | 867 | }, |
| 817 | { | 868 | { |
| 818 | - "name": "silverstripe/framework", | ||
| 819 | - "version": "3.1.13", | ||
| 820 | - "source": { | ||
| 821 | - "type": "git", | ||
| 822 | - "url": "https://github.com/silverstripe/silverstripe-framework.git", | ||
| 823 | - "reference": "04b803dfc6dc60f2e6a38fa74f957156230b54be" | ||
| 824 | - }, | ||
| 825 | - "dist": { | ||
| 826 | - "type": "zip", | ||
| 827 | - "url": "https://api.github.com/repos/silverstripe/silverstripe-framework/zipball/04b803dfc6dc60f2e6a38fa74f957156230b54be", | ||
| 828 | - "reference": "04b803dfc6dc60f2e6a38fa74f957156230b54be", | ||
| 829 | - "shasum": "" | ||
| 830 | - }, | ||
| 831 | - "require": { | ||
| 832 | - "composer/installers": "*", | ||
| 833 | - "php": ">=5.3.2" | ||
| 834 | - }, | ||
| 835 | - "require-dev": { | ||
| 836 | - "phpunit/phpunit": "~3.7@stable" | ||
| 837 | - }, | ||
| 838 | - "type": "silverstripe-module", | ||
| 839 | - "autoload": { | ||
| 840 | - "classmap": [ | ||
| 841 | - "tests/behat/features/bootstrap" | ||
| 842 | - ] | ||
| 843 | - }, | ||
| 844 | - "notification-url": "https://packagist.org/downloads/", | ||
| 845 | - "license": [ | ||
| 846 | - "BSD-3-Clause" | ||
| 847 | - ], | ||
| 848 | - "authors": [ | ||
| 849 | - { | ||
| 850 | - "name": "SilverStripe", | ||
| 851 | - "homepage": "http://silverstripe.com" | ||
| 852 | - }, | ||
| 853 | - { | ||
| 854 | - "name": "The SilverStripe Community", | ||
| 855 | - "homepage": "http://silverstripe.org" | ||
| 856 | - } | ||
| 857 | - ], | ||
| 858 | - "description": "The SilverStripe framework", | ||
| 859 | - "homepage": "http://silverstripe.org", | ||
| 860 | - "keywords": [ | ||
| 861 | - "framework", | ||
| 862 | - "silverstripe" | ||
| 863 | - ], | ||
| 864 | - "time": "2015-05-28 06:59:11" | ||
| 865 | - }, | ||
| 866 | - { | ||
| 867 | "name": "yiisoft/yii2-codeception", | 869 | "name": "yiisoft/yii2-codeception", |
| 868 | "version": "2.0.4", | 870 | "version": "2.0.4", |
| 869 | "source": { | 871 | "source": { |
| @@ -1058,7 +1060,9 @@ | @@ -1058,7 +1060,9 @@ | ||
| 1058 | ], | 1060 | ], |
| 1059 | "aliases": [], | 1061 | "aliases": [], |
| 1060 | "minimum-stability": "stable", | 1062 | "minimum-stability": "stable", |
| 1061 | - "stability-flags": [], | 1063 | + "stability-flags": { |
| 1064 | + "artweb/yii2-multiparser": 20 | ||
| 1065 | + }, | ||
| 1062 | "prefer-stable": false, | 1066 | "prefer-stable": false, |
| 1063 | "prefer-lowest": false, | 1067 | "prefer-lowest": false, |
| 1064 | "platform": { | 1068 | "platform": { |
vendor/composer/autoload_psr4.php
| @@ -7,6 +7,7 @@ $baseDir = dirname($vendorDir); | @@ -7,6 +7,7 @@ $baseDir = dirname($vendorDir); | ||
| 7 | 7 | ||
| 8 | return array( | 8 | return array( |
| 9 | 'yii\\swiftmailer\\' => array($vendorDir . '/yiisoft/yii2-swiftmailer'), | 9 | 'yii\\swiftmailer\\' => array($vendorDir . '/yiisoft/yii2-swiftmailer'), |
| 10 | + 'yii\\multiparser\\' => array($vendorDir . '/artweb/yii2-multiparser/lib'), | ||
| 10 | 'yii\\imagine\\' => array($vendorDir . '/yiisoft/yii2-imagine'), | 11 | 'yii\\imagine\\' => array($vendorDir . '/yiisoft/yii2-imagine'), |
| 11 | 'yii\\gii\\' => array($vendorDir . '/yiisoft/yii2-gii'), | 12 | 'yii\\gii\\' => array($vendorDir . '/yiisoft/yii2-gii'), |
| 12 | 'yii\\faker\\' => array($vendorDir . '/yiisoft/yii2-faker'), | 13 | 'yii\\faker\\' => array($vendorDir . '/yiisoft/yii2-faker'), |
vendor/composer/installed.json
| @@ -1043,5 +1043,52 @@ | @@ -1043,5 +1043,52 @@ | ||
| 1043 | "imagine", | 1043 | "imagine", |
| 1044 | "yii2" | 1044 | "yii2" |
| 1045 | ] | 1045 | ] |
| 1046 | + }, | ||
| 1047 | + { | ||
| 1048 | + "name": "artweb/yii2-multiparser", | ||
| 1049 | + "version": "dev-master", | ||
| 1050 | + "version_normalized": "9999999-dev", | ||
| 1051 | + "source": { | ||
| 1052 | + "type": "git", | ||
| 1053 | + "url": "https://github.com/tsurkanovm/yii-multiparser.git", | ||
| 1054 | + "reference": "7a3cd2728c4b0c9db1b6bcea411f8df87b69ecd3" | ||
| 1055 | + }, | ||
| 1056 | + "dist": { | ||
| 1057 | + "type": "zip", | ||
| 1058 | + "url": "https://api.github.com/repos/tsurkanovm/yii-multiparser/zipball/7a3cd2728c4b0c9db1b6bcea411f8df87b69ecd3", | ||
| 1059 | + "reference": "7a3cd2728c4b0c9db1b6bcea411f8df87b69ecd3", | ||
| 1060 | + "shasum": "" | ||
| 1061 | + }, | ||
| 1062 | + "require": { | ||
| 1063 | + "yiisoft/yii2": "*" | ||
| 1064 | + }, | ||
| 1065 | + "time": "2015-10-26 10:04:39", | ||
| 1066 | + "type": "library", | ||
| 1067 | + "installation-source": "dist", | ||
| 1068 | + "autoload": { | ||
| 1069 | + "psr-4": { | ||
| 1070 | + "yii\\multiparser\\": "lib\\" | ||
| 1071 | + } | ||
| 1072 | + }, | ||
| 1073 | + "notification-url": "https://packagist.org/downloads/", | ||
| 1074 | + "license": [ | ||
| 1075 | + "MIT" | ||
| 1076 | + ], | ||
| 1077 | + "authors": [ | ||
| 1078 | + { | ||
| 1079 | + "name": "Mihail Tsurkanov", | ||
| 1080 | + "email": "tsurkanovm@gmail.com", | ||
| 1081 | + "role": "Developer" | ||
| 1082 | + } | ||
| 1083 | + ], | ||
| 1084 | + "description": "This extension provides a Multiparser solution for Yii framework 2.0.", | ||
| 1085 | + "homepage": "https://github.com/tsurkanovm/yii-multiparser.git", | ||
| 1086 | + "keywords": [ | ||
| 1087 | + "csv", | ||
| 1088 | + "parser", | ||
| 1089 | + "xlsx", | ||
| 1090 | + "xml", | ||
| 1091 | + "yii2" | ||
| 1092 | + ] | ||
| 1046 | } | 1093 | } |
| 1047 | ] | 1094 | ] |
vendor/yiisoft/multiparser/Converter.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 31.08.2015 | ||
| 6 | - * Time: 12:50 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | -// класс который содержит преобразователи значений (фильтры) используемые при парсинге | ||
| 12 | -class Converter implements ConverterInterface | ||
| 13 | -{ | ||
| 14 | - | ||
| 15 | - const METHOD_PREFIX = 'convertTo'; | ||
| 16 | - | ||
| 17 | - //public $configuration = []; | ||
| 18 | - | ||
| 19 | - public static function convertToFloat($value) | ||
| 20 | - { | ||
| 21 | - if ($value == '') { | ||
| 22 | - $value = 0; | ||
| 23 | - } | ||
| 24 | - $value = trim(str_replace(",", ".", $value)); | ||
| 25 | - $value = preg_replace("/[^0-9.]+/", "", strtoupper($value)); | ||
| 26 | - | ||
| 27 | - if ($value == '') { | ||
| 28 | - return ''; | ||
| 29 | - } | ||
| 30 | - $value = round((float)$value, 2); | ||
| 31 | - | ||
| 32 | - return $value; | ||
| 33 | - } | ||
| 34 | - | ||
| 35 | - public static function convertToInteger($value) | ||
| 36 | - { | ||
| 37 | - if ($value == '') { | ||
| 38 | - $value = 0; | ||
| 39 | - } | ||
| 40 | - $value = trim(str_replace(",", ".", $value)); | ||
| 41 | - $value = preg_replace("/[^0-9.]+/", "", strtoupper($value)); | ||
| 42 | - if ($value == '') { | ||
| 43 | - return ''; | ||
| 44 | - } | ||
| 45 | - $value = round((int)$value, 2); | ||
| 46 | - | ||
| 47 | - return $value; | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | - public static function convertToEncode($value) | ||
| 51 | - { | ||
| 52 | - $res = $value; | ||
| 53 | - if (is_array($value)) { | ||
| 54 | - | ||
| 55 | - $res = Encoder::encodeArray($value); | ||
| 56 | - | ||
| 57 | - } elseif (is_string($value)) { | ||
| 58 | - | ||
| 59 | - $res = Encoder::encodeString($value); | ||
| 60 | - | ||
| 61 | - } | ||
| 62 | - return $res; | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - public static function convertToString($value) | ||
| 66 | - { | ||
| 67 | - $convert_func = function ($value_to_convert) { | ||
| 68 | - return str_replace(array('!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '~', '`', '"', "'", ' ', '№', '%', ';', ':', '[', ']', '{', '}', '*', '?', '/', '\'', '|', '.', ',', '<', '>', '\\'), '', $value_to_convert); | ||
| 69 | - }; | ||
| 70 | - | ||
| 71 | - if( is_string( $value ) ){ | ||
| 72 | - $value = $convert_func( $value ); | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - if( is_array( $value ) ){ | ||
| 76 | - array_walk( $value, $convert_func ); | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | - return $value; | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | - /** | ||
| 83 | - * @param $name - имя метода конвертации | ||
| 84 | - * @param $value - значение на конвертацию | ||
| 85 | - * @return mixed | ||
| 86 | - */ | ||
| 87 | - public static function __callStatic($name, $value) | ||
| 88 | - { | ||
| 89 | - $method_name = self::METHOD_PREFIX . $name; | ||
| 90 | - | ||
| 91 | - if (method_exists(static::class, $method_name)) { | ||
| 92 | - return static::$method_name($value[0]); | ||
| 93 | - | ||
| 94 | - } else { | ||
| 95 | - // если такого метода конвертации не предусмотрено, то возвращаем не конвертируя | ||
| 96 | - return $value[0]; | ||
| 97 | - | ||
| 98 | - } | ||
| 99 | - } | ||
| 100 | - | ||
| 101 | - public function __call($name, $params) | ||
| 102 | - { | ||
| 103 | - return self::__callStatic($name, $params); | ||
| 104 | - } | ||
| 105 | - | ||
| 106 | - | ||
| 107 | - /** | ||
| 108 | - * @param $arr - массив для конвертирования | ||
| 109 | - * @param $configuration - массив конфигурация конвертирования | ||
| 110 | - * @return mixed | ||
| 111 | - * конвертирует массив по полученным настройкам, вызывая последовательно функции конвертации (указанные в конфигурации) | ||
| 112 | - */ | ||
| 113 | - public static function convertByConfiguration($arr, $configuration) | ||
| 114 | - { | ||
| 115 | - if ($hasKey = isset($configuration['hasKey'])) | ||
| 116 | - unset($configuration['hasKey']); | ||
| 117 | - | ||
| 118 | - if (isset($configuration['configuration'])) { | ||
| 119 | - $arr_config = $configuration['configuration']; | ||
| 120 | - unset($configuration['configuration']); | ||
| 121 | - } else { | ||
| 122 | - throw new \Exception('Не указан обязательный параметр конфигурационного файла - converter_conf[configuration]'); | ||
| 123 | - } | ||
| 124 | - | ||
| 125 | - // проставим аттрибуты из конфига{}{} | ||
| 126 | - self::setAttributes($configuration); | ||
| 127 | - | ||
| 128 | - foreach ($arr_config as $key => $value) { | ||
| 129 | - if ($hasKey) { | ||
| 130 | - // у нас ассоциативный массив, и мы можем конвертировать каждое значение в отдельности | ||
| 131 | - if (is_array($value)) { | ||
| 132 | - //если пустой массив то конвертируем всю строку | ||
| 133 | - if (count($value) === 0) { | ||
| 134 | - | ||
| 135 | - $arr = self::$key($arr); | ||
| 136 | - continue; | ||
| 137 | - } | ||
| 138 | - // иначе конвертируем каждую ячейку в отдельности | ||
| 139 | - foreach ($value as $sub_value) { | ||
| 140 | - if (isset($arr[$sub_value])) { | ||
| 141 | - // конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле | ||
| 142 | - $arr[$sub_value] = self::$key($arr[$sub_value]); | ||
| 143 | - } | ||
| 144 | - | ||
| 145 | - } | ||
| 146 | - } else { | ||
| 147 | - | ||
| 148 | - if (isset($arr[$value])) { | ||
| 149 | - // конвертируем только те ячейки которые сопоставлены в прочитанном массиве с колонками в конфигурационном файле | ||
| 150 | - $arr[$value] = self::$key($arr[$value]); | ||
| 151 | - // CustomVarDamp::dump($result); | ||
| 152 | - } | ||
| 153 | - | ||
| 154 | - } | ||
| 155 | - | ||
| 156 | - } else { | ||
| 157 | - // нет заголовка - мы можем конвертировать только строку в целом | ||
| 158 | - $arr = self::$key($arr); | ||
| 159 | - } | ||
| 160 | - | ||
| 161 | - } | ||
| 162 | - | ||
| 163 | - return $arr; | ||
| 164 | - } | ||
| 165 | - | ||
| 166 | - public static function setAttributes($configuration) | ||
| 167 | - { | ||
| 168 | - foreach ($configuration as $key_setting => $setting) { | ||
| 169 | - if (property_exists(static::class, $key_setting)) | ||
| 170 | - static::$$key_setting = $setting; | ||
| 171 | - } | ||
| 172 | - | ||
| 173 | - } | ||
| 174 | - | ||
| 175 | - | ||
| 176 | -} | ||
| 177 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/ConverterInterface.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Tsurkanov | ||
| 5 | - * Date: 20.10.2015 | ||
| 6 | - * Time: 13:38 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | - | ||
| 12 | -interface ConverterInterface { | ||
| 13 | - | ||
| 14 | - public static function convertByConfiguration( $arr_values_to_convert, $configuration ); | ||
| 15 | - | ||
| 16 | -} | ||
| 17 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/CsvParser.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - | ||
| 4 | - */ | ||
| 5 | -namespace yii\multiparser; | ||
| 6 | -use common\components\CustomVarDamp; | ||
| 7 | - | ||
| 8 | - | ||
| 9 | -/** | ||
| 10 | - * Class CsvParser | ||
| 11 | - * @package yii\multiparser | ||
| 12 | - * @todo - перевести на анг. яз. | ||
| 13 | - */ | ||
| 14 | -class CsvParser extends TableParser | ||
| 15 | -{ | ||
| 16 | - /** @var string - разделитель csv */ | ||
| 17 | - public $delimiter = ';'; | ||
| 18 | - | ||
| 19 | - | ||
| 20 | - | ||
| 21 | - /** | ||
| 22 | - * метод устанвливает нужные настройки объекта SplFileObject, для работы с csv | ||
| 23 | - */ | ||
| 24 | - public function setup() | ||
| 25 | - { | ||
| 26 | - | ||
| 27 | - $this->file->setCsvControl($this->delimiter); | ||
| 28 | - $this->file->setFlags(\SplFileObject::READ_CSV); | ||
| 29 | - $this->file->setFlags(\SplFileObject::SKIP_EMPTY); | ||
| 30 | - | ||
| 31 | - parent::setup(); | ||
| 32 | - | ||
| 33 | - } | ||
| 34 | - | ||
| 35 | - public function read() | ||
| 36 | - { | ||
| 37 | - parent::read(); | ||
| 38 | - | ||
| 39 | - return $this->result; | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - | ||
| 43 | - protected function readRow( ) | ||
| 44 | - { | ||
| 45 | - $this->row = $this->file->fgetcsv(); | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - protected function isEmptyRow(){ | ||
| 49 | - | ||
| 50 | - $is_empty = false; | ||
| 51 | - | ||
| 52 | - if ($this->row === false || $this->row === NULL ) { | ||
| 53 | - return true; | ||
| 54 | - } | ||
| 55 | - | ||
| 56 | - $j = 0; | ||
| 57 | - for ($i = 1; $i <= count( $this->row ); $i++) { | ||
| 58 | - | ||
| 59 | - if ( $this->isEmptyColumn( $this->row[$i - 1] ) ) { | ||
| 60 | - $j++; | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - if ( $j >= $this->min_column_quantity ) { | ||
| 64 | - $is_empty = true; | ||
| 65 | - break; | ||
| 66 | - } | ||
| 67 | - } | ||
| 68 | - | ||
| 69 | - return $is_empty; | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - protected function isEmptyColumn( $val ){ | ||
| 73 | - return $val == ''; | ||
| 74 | - } | ||
| 75 | -} | ||
| 76 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/DynamicFormHelper.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 08.09.2015 | ||
| 6 | - * Time: 14:50 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | -use yii\base\DynamicModel; | ||
| 12 | -use yii\grid\GridView; | ||
| 13 | -use yii\grid\SerialColumn; | ||
| 14 | -use yii\helpers\ArrayHelper; | ||
| 15 | - | ||
| 16 | -/** | ||
| 17 | - * Class DynamicFormHelper | ||
| 18 | - * @package backend\components\parsers | ||
| 19 | - * Содержит процедуры генерации компонентов с динамическим количеством аттрибутов | ||
| 20 | - */ | ||
| 21 | -class DynamicFormHelper | ||
| 22 | -{ | ||
| 23 | - | ||
| 24 | - const KEY_PREFIX = 'attr_'; | ||
| 25 | - | ||
| 26 | - /** | ||
| 27 | - * @param $source - int or array | ||
| 28 | - * если передан массив, то создается модель с атрибутами переданными в массиве, | ||
| 29 | - * ключ - имя, значение - значение аттрибута | ||
| 30 | - * если передано число, то создается переданное количество аттрибутов с именами - attr_0, attr_1... | ||
| 31 | - */ | ||
| 32 | - public static function CreateDynamicModel( $source ) | ||
| 33 | - { | ||
| 34 | - $arr_keys = []; | ||
| 35 | - if (is_array($source)) { | ||
| 36 | - $arr_keys = $source; | ||
| 37 | - } elseif (is_int($source)) { | ||
| 38 | - | ||
| 39 | - $i = 0; | ||
| 40 | - while ($source > $i) { | ||
| 41 | - $arr_keys[] = self::KEY_PREFIX . $i; | ||
| 42 | - $i++; | ||
| 43 | - } | ||
| 44 | - array_flip($arr_keys); | ||
| 45 | - | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - $model = new DynamicModel($arr_keys); | ||
| 49 | - | ||
| 50 | - return $model; | ||
| 51 | - } | ||
| 52 | - | ||
| 53 | - // @todo add comments | ||
| 54 | - public static function CreateGridWithDropDownListHeader( $dataProvider, $form, $header_model, $arr_header_values ) | ||
| 55 | - { | ||
| 56 | - $columns_config = [['class' => SerialColumn::className()]]; | ||
| 57 | - $i = 0; | ||
| 58 | - foreach( $header_model as $key => $value ) { | ||
| 59 | - | ||
| 60 | - $columns_config[] = ['header' => $form->field($header_model, $key, ['inputOptions' => ['label' => '']])->dropDownList($arr_header_values), 'attribute' => $i]; | ||
| 61 | - $i++; | ||
| 62 | - } | ||
| 63 | - $dynamic_grid_view = GridView::widget( ['dataProvider' => $dataProvider, | ||
| 64 | - 'columns' => $columns_config ] ); | ||
| 65 | - | ||
| 66 | - return $dynamic_grid_view; | ||
| 67 | - | ||
| 68 | - } | ||
| 69 | - | ||
| 70 | -} | ||
| 71 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/Encoder.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 27.08.2015 | ||
| 6 | - * Time: 13:36 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | -// @todo add comments | ||
| 12 | -class Encoder | ||
| 13 | -{ | ||
| 14 | - /** @var out encoding charset */ | ||
| 15 | - public static $out_charset = 'UTF-8'; | ||
| 16 | - /** @var out encoding charset */ | ||
| 17 | - public static $in_charset = 'windows-1251'; | ||
| 18 | - | ||
| 19 | - public static function encodeFile($in_charset, $out_charset, $filePath) | ||
| 20 | - { | ||
| 21 | - | ||
| 22 | - $old_content = file_get_contents($filePath); | ||
| 23 | - $encode_content = self::encodeString( $old_content, $in_charset, $out_charset ); | ||
| 24 | - $file = @fopen($filePath, "w"); | ||
| 25 | - fwrite($file, $encode_content); | ||
| 26 | - @fclose($file); | ||
| 27 | - } | ||
| 28 | - | ||
| 29 | - public static function encodeArray( $array, $in_charset = '', $out_charset = '') | ||
| 30 | - { | ||
| 31 | - if ($in_charset) | ||
| 32 | - self::$in_charset = $in_charset; | ||
| 33 | - | ||
| 34 | - if ($out_charset) | ||
| 35 | - self::$out_charset = $out_charset; | ||
| 36 | - | ||
| 37 | - $result = array_map( | ||
| 38 | - function ($value) { | ||
| 39 | - | ||
| 40 | - return self::encodeString( $value, self::$in_charset, self::$out_charset ); | ||
| 41 | - | ||
| 42 | - }, | ||
| 43 | - $array); | ||
| 44 | - | ||
| 45 | - return $result; | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | - public static function encodeString( $source, $in_charset = '', $out_charset = '' ){ | ||
| 49 | - | ||
| 50 | - if ($in_charset) | ||
| 51 | - self::$in_charset = $in_charset; | ||
| 52 | - | ||
| 53 | - if ($out_charset) | ||
| 54 | - self::$out_charset = $out_charset; | ||
| 55 | - | ||
| 56 | - return iconv( self::$in_charset, self::$out_charset, $source ); | ||
| 57 | - | ||
| 58 | - } | ||
| 59 | -} | ||
| 60 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/ObjectCreator.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Tsurkanov | ||
| 5 | - * Date: 20.10.2015 | ||
| 6 | - * Time: 16:24 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | - | ||
| 12 | -use common\components\CustomVarDamp; | ||
| 13 | - | ||
| 14 | -class ObjectCreator { | ||
| 15 | - public static function build( array $configuration ){ | ||
| 16 | - if ( isset( $configuration['class'] ) ) { | ||
| 17 | - $class = trim( $configuration['class'] ); | ||
| 18 | - unset( $configuration['class'] ); | ||
| 19 | - } else{ | ||
| 20 | - throw new \ErrorException('Error configuration - undefined class'); | ||
| 21 | - } | ||
| 22 | - | ||
| 23 | - $object = new $class(); | ||
| 24 | - foreach ($configuration as $name => $value) { | ||
| 25 | - $object->$name = $value; | ||
| 26 | - } | ||
| 27 | - | ||
| 28 | - return $object; | ||
| 29 | - } | ||
| 30 | -} | ||
| 31 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/Parser.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 04.09.2015 | ||
| 6 | - * Time: 18:25 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | -//@todo - заменить read на parse | ||
| 12 | -//@todo - xml - убрать из названий функций xml и array - это и так понятно | ||
| 13 | - | ||
| 14 | - | ||
| 15 | -use common\components\CustomVarDamp; | ||
| 16 | - | ||
| 17 | -abstract class Parser | ||
| 18 | -{ | ||
| 19 | - public $converter_conf = []; | ||
| 20 | - protected $converter = NULL; | ||
| 21 | - | ||
| 22 | - /** | ||
| 23 | - * @var array - результирующий массив с отпарсенными значениями | ||
| 24 | - */ | ||
| 25 | - protected $result = []; | ||
| 26 | - | ||
| 27 | - /** @var array - массив с заголовком, | ||
| 28 | - * */ | ||
| 29 | - public $keys = NULL; | ||
| 30 | - /** @var bool | ||
| 31 | - имеет ли файл заголовок который будет установлен ключами возвращемого массива*/ | ||
| 32 | - public $has_header_row = false; | ||
| 33 | - | ||
| 34 | - /** @var экземляр SplFileObject читаемого файла */ | ||
| 35 | - public $file; | ||
| 36 | - | ||
| 37 | - | ||
| 38 | - | ||
| 39 | - public function setup() | ||
| 40 | - { | ||
| 41 | - $this->setupConverter(); | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - protected function setupConverter() | ||
| 45 | - { | ||
| 46 | - if ( $this->has_header_row || $this->keys !== NULL ) { | ||
| 47 | - // если у файла есть заголовок, то в результате имеем ассоциативный массив | ||
| 48 | - $this->converter_conf['hasKey'] = 1; | ||
| 49 | - } | ||
| 50 | - | ||
| 51 | - if ( $this->converter_conf ) { | ||
| 52 | - $converter = ObjectCreator::build( $this->converter_conf ); | ||
| 53 | - if ( $converter instanceof ConverterInterface ) { | ||
| 54 | - | ||
| 55 | - $this->converter = $converter; | ||
| 56 | - | ||
| 57 | - } | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - public abstract function read(); | ||
| 64 | - | ||
| 65 | - /** | ||
| 66 | - * @param $arr | ||
| 67 | - * @return mixed | ||
| 68 | - * преобразовует значения прочитанного массива в нужные типы, согласно конфигурации конвертера | ||
| 69 | - */ | ||
| 70 | - protected function convert( $arr ) | ||
| 71 | - { | ||
| 72 | - | ||
| 73 | - if ($this->converter !== NULL) { | ||
| 74 | - | ||
| 75 | - $arr = $this->converter->convertByConfiguration( $arr, $this->converter_conf ); | ||
| 76 | - | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | - | ||
| 80 | - return $arr; | ||
| 81 | - | ||
| 82 | - } | ||
| 83 | -} | ||
| 84 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/ParserHandler.php deleted
| 1 | -<?php | ||
| 2 | - | ||
| 3 | -namespace yii\multiparser; | ||
| 4 | - | ||
| 5 | -use common\components\CustomVarDamp; | ||
| 6 | - | ||
| 7 | -class ParserHandler | ||
| 8 | -{ | ||
| 9 | - //@todo - добавить комменты на анг язе (ошибки выкидывать тоже на англ яз.) | ||
| 10 | - //@todo - сделать универсальную обработку ошибок | ||
| 11 | - //@todo - возможно отказаться от YiiParserHandler | ||
| 12 | - const DEFAULT_MODE = 'web'; | ||
| 13 | - /** @var string */ | ||
| 14 | - protected $filePath; | ||
| 15 | - | ||
| 16 | - /** @var string */ | ||
| 17 | - protected $configuration = []; | ||
| 18 | - /** @var string */ | ||
| 19 | - protected $custom_configuration = []; | ||
| 20 | - | ||
| 21 | - /** @var instance of SplFileObject */ | ||
| 22 | - protected $fileObject; | ||
| 23 | - | ||
| 24 | - /** @var string - extension of file $filePath */ | ||
| 25 | - protected $extension; | ||
| 26 | - | ||
| 27 | - /** @var string - */ | ||
| 28 | - protected $mode; | ||
| 29 | - | ||
| 30 | - /** @var string - */ | ||
| 31 | - protected $options; | ||
| 32 | - | ||
| 33 | - /** | ||
| 34 | - * @param string first line in file for parsing | ||
| 35 | - */ | ||
| 36 | - public function setup($filePath, $options = []) | ||
| 37 | - { | ||
| 38 | - $this->filePath = $filePath; | ||
| 39 | - if (isset($options['mode'])) { | ||
| 40 | - | ||
| 41 | - $this->mode = $options['mode']; | ||
| 42 | - unset($options['mode']); | ||
| 43 | - | ||
| 44 | - } else { | ||
| 45 | - | ||
| 46 | - $this->mode = self::DEFAULT_MODE; | ||
| 47 | - | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | - $this->options = $options; | ||
| 51 | - | ||
| 52 | - $this->fileObject = new \SplFileObject($this->filePath, 'r'); | ||
| 53 | - | ||
| 54 | - $options['file'] = $this->fileObject; | ||
| 55 | - $this->extension = $this->fileObject->getExtension(); | ||
| 56 | - | ||
| 57 | - $this->custom_configuration = $this->getCustomConfiguration($this->extension, $this->mode); | ||
| 58 | - $this->custom_configuration = array_merge_recursive($this->custom_configuration, $options); | ||
| 59 | - | ||
| 60 | - } | ||
| 61 | - | ||
| 62 | - public function run() | ||
| 63 | - { | ||
| 64 | - $result = []; | ||
| 65 | - if (count($this->custom_configuration)) { | ||
| 66 | - | ||
| 67 | - $parser = $this->createObjectByConfiguration($this->custom_configuration); | ||
| 68 | - | ||
| 69 | - try { | ||
| 70 | - | ||
| 71 | - $parser->setup(); | ||
| 72 | - $result = $parser->read(); | ||
| 73 | - | ||
| 74 | - } catch (\ErrorException $e) { | ||
| 75 | - | ||
| 76 | - echo $e->getMessage(); | ||
| 77 | - | ||
| 78 | - } | ||
| 79 | - | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | - return $result; | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - public function getCustomConfiguration($extension, $parameter) | ||
| 86 | - { | ||
| 87 | - if (!count($this->configuration)) { | ||
| 88 | - $this->setConfiguration(require(__DIR__ . '/config.php')); | ||
| 89 | - } | ||
| 90 | - | ||
| 91 | - if (!isset($this->configuration[$extension])) { | ||
| 92 | - throw new \ErrorException("Parser do not maintain file with extension {$extension}"); | ||
| 93 | - } | ||
| 94 | - if (!isset($this->configuration[$extension][$parameter])) { | ||
| 95 | - throw new \ErrorException("Parser configurator do not have settings for {$parameter} parameter"); | ||
| 96 | - } | ||
| 97 | - | ||
| 98 | - return $this->configuration[$extension][$parameter]; | ||
| 99 | - } | ||
| 100 | - | ||
| 101 | - public function setConfiguration($configuration) | ||
| 102 | - { | ||
| 103 | - $this->configuration = $configuration; | ||
| 104 | - } | ||
| 105 | - | ||
| 106 | - protected function createObjectByConfiguration($configuration) | ||
| 107 | - { | ||
| 108 | - return ObjectCreator::build($configuration); | ||
| 109 | - } | ||
| 110 | -} | ||
| 111 | - | ||
| 112 | - |
vendor/yiisoft/multiparser/TableParser.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Tsurkanov | ||
| 5 | - * Date: 22.10.2015 | ||
| 6 | - * Time: 15:53 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | - | ||
| 12 | -use common\components\CustomVarDamp; | ||
| 13 | - | ||
| 14 | -abstract class TableParser extends Parser { | ||
| 15 | - | ||
| 16 | - | ||
| 17 | - /** | ||
| 18 | - * @var array - текущий отпарсенный ряд | ||
| 19 | - */ | ||
| 20 | - protected $row = []; | ||
| 21 | - | ||
| 22 | - /** @var int - первая строка с которой начинать парсить */ | ||
| 23 | - public $first_line = 0; | ||
| 24 | - | ||
| 25 | - /** @var int - последняя строка до которой парсить | ||
| 26 | - * если не указана, то парсинг происходит до конца файла*/ | ||
| 27 | - public $last_line = 0; | ||
| 28 | - | ||
| 29 | - /** @var int - первая колонка файла с которой начнется парсинг */ | ||
| 30 | - public $first_column = 0; | ||
| 31 | - | ||
| 32 | - | ||
| 33 | - /** @var bool | ||
| 34 | - нужно ли искать автоматически первоую значисмую строку (не пустая строка) | ||
| 35 | - * иначе первая строка будет взята из аттрибута $first_line */ | ||
| 36 | - public $auto_detect_first_line = false; | ||
| 37 | - | ||
| 38 | - /** @var int - количество значимых колонок, что бы определить первую значимую строку | ||
| 39 | - * используется при автоопределении первой строки*/ | ||
| 40 | - public $min_column_quantity = 5; | ||
| 41 | - /** @var int - количество пустых строк, что бы определить конец файла, | ||
| 42 | - такое количеество подряд пустых строк считается концом файла*/ | ||
| 43 | - public $empty_lines_quantity = 3; | ||
| 44 | - | ||
| 45 | - | ||
| 46 | - /** @var int - номер текущей строки парсера */ | ||
| 47 | - protected $current_row_number = 0; | ||
| 48 | - | ||
| 49 | - | ||
| 50 | - protected abstract function isEmptyRow(); | ||
| 51 | - | ||
| 52 | - protected abstract function isEmptyColumn($column_value); | ||
| 53 | - | ||
| 54 | - protected abstract function readRow(); | ||
| 55 | - | ||
| 56 | - | ||
| 57 | - public function read() | ||
| 58 | - { | ||
| 59 | - if ($this->auto_detect_first_line) { | ||
| 60 | - $this->shiftToFirstValuableLine(); | ||
| 61 | - } | ||
| 62 | - | ||
| 63 | - // будем считать количество пустых строк подряд - при достижении $empty_lines_quantity - считаем что это конец файла и выходим | ||
| 64 | - $empty_lines = 0; | ||
| 65 | - while ( $empty_lines < $this->empty_lines_quantity ) { | ||
| 66 | - // прочтем строку из файла | ||
| 67 | - $this->readRow(); | ||
| 68 | - | ||
| 69 | - if ( $this->isEmptyRow() ) { | ||
| 70 | - //счетчик пустых строк | ||
| 71 | - $empty_lines++; | ||
| 72 | - continue; | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - // уберем пустые колонки из ряда | ||
| 76 | - $this->filterRow(); | ||
| 77 | - | ||
| 78 | - | ||
| 79 | - $this->adjustRowToSettings( ); | ||
| 80 | - | ||
| 81 | - // строка не пустая, имеем прочитанный массив значений | ||
| 82 | - $this->current_row_number++; | ||
| 83 | - | ||
| 84 | - // для первой строки утановим ключи из заголовка | ||
| 85 | - $this->setKeysFromHeader(); | ||
| 86 | - | ||
| 87 | - // если у нас установлен лимит, при его достижении прекращаем парсинг | ||
| 88 | - if ( $this->isLastLine() ) | ||
| 89 | - break; | ||
| 90 | - | ||
| 91 | - // обнуляем счетчик, так как считаюся пустые строки ПОДРЯД | ||
| 92 | - $empty_lines = 0; | ||
| 93 | - | ||
| 94 | - $this->result[] = $this->row; | ||
| 95 | - $this->row = []; | ||
| 96 | - | ||
| 97 | - } | ||
| 98 | - | ||
| 99 | - | ||
| 100 | - } | ||
| 101 | - /** | ||
| 102 | - * определяет первую значимую строку, | ||
| 103 | - * считывается файл пока в нем не встретится строка с непустыми колонками | ||
| 104 | - * в количестве указанном в атрибуте min_column_quantity | ||
| 105 | - * в результате выполнения $current_row_number будет находится на последней незначимой строке | ||
| 106 | - */ | ||
| 107 | - protected function shiftToFirstValuableLine() | ||
| 108 | - { | ||
| 109 | - do { | ||
| 110 | - | ||
| 111 | - $this->current_row_number ++; | ||
| 112 | - $this->readRow(); | ||
| 113 | - | ||
| 114 | - } while( $this->isEmptyRow() ); | ||
| 115 | - | ||
| 116 | - // @todo - сделать опционально | ||
| 117 | - // код для того что бы парсить первую строку, закомментировано как предполагается что первая значимая строка это заголовок | ||
| 118 | - // $this->current_row_number --; | ||
| 119 | -// $this->file->seek( $this->current_row_number ); | ||
| 120 | - } | ||
| 121 | - | ||
| 122 | - /** | ||
| 123 | - * @return array - одномерный массив результата парсинга строки | ||
| 124 | - */ | ||
| 125 | - protected function adjustRowToSettings( ) | ||
| 126 | - { | ||
| 127 | - | ||
| 128 | - // если есть заголовок, то перед конвертацией его нужно назначить | ||
| 129 | - if ( $this->keys !== NULL ) { | ||
| 130 | - | ||
| 131 | - if (count($this->keys) !== count($this->row)) { | ||
| 132 | - throw new \Exception("Ошибка парсинга файла в строке # {$this->current_row_number}. Не соответсвие числа ключевых колонок (заголовка) - числу колонок с данными", 0, 1, $this->file->getBasename(), $this->current_row_number); | ||
| 133 | - } | ||
| 134 | - | ||
| 135 | - $this->row = array_combine($this->keys, $this->row); | ||
| 136 | - } | ||
| 137 | - | ||
| 138 | - // попытаемся конвертировать прочитанные значения согласно конфигурации котнвертера значений | ||
| 139 | - $this->row = $this->convert($this->row); | ||
| 140 | - | ||
| 141 | - // обрежем массив к первой значимой колонке | ||
| 142 | - if ( $this->first_column ) { | ||
| 143 | - | ||
| 144 | - $this->row = array_slice($this->row, $this->first_column); | ||
| 145 | - | ||
| 146 | - } | ||
| 147 | - | ||
| 148 | - } | ||
| 149 | - | ||
| 150 | - protected function setKeysFromHeader(){ | ||
| 151 | - if ( $this->has_header_row ) { | ||
| 152 | - // в файле есть заголовок, но он еще не назначен - назначим | ||
| 153 | - if ($this->keys === NULL) { | ||
| 154 | - $this->keys = array_values( $this->row ); | ||
| 155 | - } | ||
| 156 | - } | ||
| 157 | - } | ||
| 158 | - | ||
| 159 | - protected function filterRow(){ | ||
| 160 | - $this->row = array_filter( $this->row, function($val){ | ||
| 161 | - return !$this->isEmptyColumn($val); | ||
| 162 | - }); | ||
| 163 | - } | ||
| 164 | - | ||
| 165 | - protected function isLastLine(){ | ||
| 166 | - | ||
| 167 | - if ( ( $this->last_line ) && ( $this->current_row_number > $this->last_line ) ) { | ||
| 168 | - return true; | ||
| 169 | - } | ||
| 170 | - return false; | ||
| 171 | - } | ||
| 172 | - | ||
| 173 | -} | ||
| 174 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/XlsxParser.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Tsurkanov | ||
| 5 | - * Date: 21.10.2015 | ||
| 6 | - * Time: 15:44 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | - | ||
| 12 | -use common\components\CustomVarDamp; | ||
| 13 | - | ||
| 14 | - | ||
| 15 | -/** | ||
| 16 | - * Class XlsxParser | ||
| 17 | - * @package yii\multiparser | ||
| 18 | - */ | ||
| 19 | -class XlsxParser extends TableParser { | ||
| 20 | - | ||
| 21 | - /** | ||
| 22 | - * @var string - путь куда будут распаковываться файлы, если не указанно - во временный каталог сервера | ||
| 23 | - */ | ||
| 24 | - public $path_for_extract_files = ''; | ||
| 25 | - | ||
| 26 | - | ||
| 27 | - /** | ||
| 28 | - * @var int - если указано то считывание будет производиться с этого листа, иначе со всех листов | ||
| 29 | - * при чтении со всех листов - выходной массив будет иметь номера листов первыми элементами | ||
| 30 | - */ | ||
| 31 | - public $active_sheet = 0; | ||
| 32 | - | ||
| 33 | - protected $strings_arr = []; | ||
| 34 | - protected $sheets_arr = []; | ||
| 35 | - | ||
| 36 | - protected $current_node; | ||
| 37 | - protected $current_sheet; | ||
| 38 | - | ||
| 39 | - public function setup() | ||
| 40 | - { | ||
| 41 | - | ||
| 42 | - parent::setup(); | ||
| 43 | - | ||
| 44 | - if ( $this->path_for_extract_files == '' ) { | ||
| 45 | - $this->path_for_extract_files = sys_get_temp_dir(); | ||
| 46 | - } | ||
| 47 | - } | ||
| 48 | - | ||
| 49 | - | ||
| 50 | - public function read() | ||
| 51 | - { | ||
| 52 | - | ||
| 53 | - // $this->extractFiles(); | ||
| 54 | - | ||
| 55 | - $this->readSheets(); | ||
| 56 | - $this->readStrings(); | ||
| 57 | - | ||
| 58 | - foreach ( $this->sheets_arr as $sheet ) { | ||
| 59 | - //проходим по всем файлам из директории /xl/worksheets/ | ||
| 60 | - | ||
| 61 | - $sheet_path = $this->path_for_extract_files . '/xl/worksheets/' . $sheet . '.xml'; | ||
| 62 | - if ( file_exists( $sheet_path ) && is_readable( $sheet_path ) ) { | ||
| 63 | - | ||
| 64 | - $xml = simplexml_load_file( $sheet_path, "SimpleXMLIterator" ); | ||
| 65 | - $this->current_node = $xml->sheetData->row; | ||
| 66 | - $this->current_node->rewind(); | ||
| 67 | - | ||
| 68 | - parent::read(); | ||
| 69 | - | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - } | ||
| 73 | -CustomVarDamp::dumpAndDie($this->$result); | ||
| 74 | - // return $this->$result_arr; | ||
| 75 | - } | ||
| 76 | - | ||
| 77 | - protected function extractFiles () | ||
| 78 | - { | ||
| 79 | - $zip = new \ZipArchive; | ||
| 80 | - if ( $zip->open( $this->file->getPathname() ) === TRUE ) { | ||
| 81 | - $zip->extractTo( $this->path_for_extract_files ); | ||
| 82 | - $zip->close(); | ||
| 83 | - } else { | ||
| 84 | - throw new \Exception( 'Ошибка чтения xlsx файла' ); | ||
| 85 | - } | ||
| 86 | - } | ||
| 87 | - | ||
| 88 | - protected function readSheets () | ||
| 89 | - { | ||
| 90 | - if ( $this->active_sheet ) { | ||
| 91 | - $this->sheets_arr[ $this->active_sheet ] = 'Sheet' . $this->active_sheet; | ||
| 92 | - return; | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - $xml = simplexml_load_file( $this->path_for_extract_files . '/xl/workbook.xml' ); | ||
| 96 | - foreach ( $xml->sheets->children() as $sheet ) { | ||
| 97 | - $sheet_name = ''; | ||
| 98 | - $sheet_id = 0; | ||
| 99 | - $attr = $sheet->attributes(); | ||
| 100 | - foreach ( $attr as $name => $value ) { | ||
| 101 | - if ($name == 'name') | ||
| 102 | - $sheet_name = (string)$value; | ||
| 103 | - | ||
| 104 | - if ($name == 'sheetId') | ||
| 105 | - $sheet_id = $value; | ||
| 106 | - | ||
| 107 | - } | ||
| 108 | - if ( $sheet_name && $sheet_id ) { | ||
| 109 | - $this->sheets_arr[$sheet_name] = 'Sheet' . $sheet_id; | ||
| 110 | - } | ||
| 111 | -// | ||
| 112 | - } | ||
| 113 | - } | ||
| 114 | - | ||
| 115 | - protected function readStrings () | ||
| 116 | - { | ||
| 117 | - $xml = simplexml_load_file( $this->path_for_extract_files . '/xl/sharedStrings.xml' ); | ||
| 118 | - foreach ( $xml->children() as $item ) { | ||
| 119 | - $this->strings_arr[] = (string)$item->t; | ||
| 120 | - } | ||
| 121 | - } | ||
| 122 | - | ||
| 123 | - | ||
| 124 | - | ||
| 125 | - // protected function readRow ( $item, $sheet , $current_row ) | ||
| 126 | - protected function readRow ( ) | ||
| 127 | - { | ||
| 128 | - $node = $this->current_node->getChildren(); | ||
| 129 | - | ||
| 130 | - foreach ( $node as $child ) { | ||
| 131 | - $attr = $child->attributes(); | ||
| 132 | - | ||
| 133 | - if( isset($child->v) ) { | ||
| 134 | - $value = (string)$child->v; | ||
| 135 | - }else{ | ||
| 136 | - $value = ''; | ||
| 137 | - } | ||
| 138 | - if ( isset( $attr['t'] ) ) { | ||
| 139 | - // $this->result_arr[$sheet][$current_row][$cell] = $this->strings_arr[ $value ]; | ||
| 140 | - $this->row[] = $this->strings_arr[ $value ]; | ||
| 141 | - }else{ | ||
| 142 | - // $this->result_arr[$sheet][$current_row][$cell] = $value; | ||
| 143 | - $this->row[] = $value; | ||
| 144 | - } | ||
| 145 | - | ||
| 146 | - } | ||
| 147 | - $this->current_node->next(); | ||
| 148 | - CustomVarDamp::dump($this->row); | ||
| 149 | - } | ||
| 150 | - | ||
| 151 | - protected function isEmptyRow(){ | ||
| 152 | - | ||
| 153 | - $is_empty = false; | ||
| 154 | - | ||
| 155 | - if ( !count( $this->row ) || !$this->current_node->valid() ) { | ||
| 156 | - return true; | ||
| 157 | - } | ||
| 158 | - | ||
| 159 | - $j = 0; | ||
| 160 | - for ($i = 1; $i <= count( $this->row ); $i++) { | ||
| 161 | - | ||
| 162 | - if ( $this->isEmptyColumn( $this->row[$i - 1] ) ) { | ||
| 163 | - $j++; | ||
| 164 | - } | ||
| 165 | - | ||
| 166 | - if ( $j >= $this->min_column_quantity ) { | ||
| 167 | - $is_empty = true; | ||
| 168 | - break; | ||
| 169 | - } | ||
| 170 | - } | ||
| 171 | - | ||
| 172 | - return $is_empty; | ||
| 173 | - } | ||
| 174 | - | ||
| 175 | - protected function isEmptyColumn( $val ){ | ||
| 176 | - return $val == ''; | ||
| 177 | - } | ||
| 178 | -} | ||
| 179 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/XmlParser.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 10.09.2015 | ||
| 6 | - * Time: 17:47 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | - | ||
| 12 | -use common\components\CustomVarDamp; | ||
| 13 | -use common\components\CustomArrayHelper; | ||
| 14 | - | ||
| 15 | -class XmlParser extends Parser{ | ||
| 16 | - | ||
| 17 | - public $node; | ||
| 18 | - | ||
| 19 | - public function read() | ||
| 20 | - { | ||
| 21 | - $file = $this->file; | ||
| 22 | - $result = $this->xmlToArray( $file->getPathname() ); | ||
| 23 | - | ||
| 24 | - if ( isset($this->node) ) { | ||
| 25 | - | ||
| 26 | - $result = $result[ $this->node ]; | ||
| 27 | - | ||
| 28 | - } | ||
| 29 | - | ||
| 30 | - return $result; | ||
| 31 | - } | ||
| 32 | - | ||
| 33 | - | ||
| 34 | - /** | ||
| 35 | - * Converts an XML string to a PHP array | ||
| 36 | - * | ||
| 37 | - * @uses recursiveXMLToArray() | ||
| 38 | - * @param string $file_path | ||
| 39 | - * @return array | ||
| 40 | - */ | ||
| 41 | - protected function xmlToArray( $file_path ) { | ||
| 42 | - | ||
| 43 | - try { | ||
| 44 | - $xml = new \SimpleXMLElement( $file_path, 0, true ); | ||
| 45 | - //\common\components\CustomVarDamp::dumpAndDie($xml->children()->children()); | ||
| 46 | - $result = $this->recursiveXMLToArray( $xml ); | ||
| 47 | - } catch(Exception $ex) { | ||
| 48 | - | ||
| 49 | - throw $ex; | ||
| 50 | - } | ||
| 51 | - | ||
| 52 | - return $result; | ||
| 53 | - } | ||
| 54 | - | ||
| 55 | - /** | ||
| 56 | - * Convert a XML string to a PHP array recursively. Do not | ||
| 57 | - * call this function directly | ||
| 58 | - * | ||
| 59 | - * @param SimpleXMLElement | ||
| 60 | - * | ||
| 61 | - * @return mixed | ||
| 62 | - */ | ||
| 63 | - protected function recursiveXMLToArray($xml) { | ||
| 64 | - if( $xml instanceof \SimpleXMLElement ) { | ||
| 65 | - $attributes = $xml->attributes(); | ||
| 66 | - | ||
| 67 | - foreach( $attributes as $key => $value ) { | ||
| 68 | - if( $value ) { | ||
| 69 | - $attribute_array[$key] = (string) $value; | ||
| 70 | - } | ||
| 71 | - } | ||
| 72 | - $previous_xml = $xml; | ||
| 73 | - $xml = get_object_vars($xml); | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - if(is_array($xml)) { | ||
| 77 | - | ||
| 78 | - if( count($xml) == 0 ) | ||
| 79 | - return (string) $previous_xml; // for CDATA | ||
| 80 | - | ||
| 81 | - foreach($xml as $key => $value) { | ||
| 82 | - $row[$key] = $this->recursiveXMLToArray($value); | ||
| 83 | - } | ||
| 84 | - if ( is_string($value) ) { | ||
| 85 | - // дошли до конца рекурсии | ||
| 86 | - // преобразуем ряд согласно конфигурации | ||
| 87 | - if ( $this->keys !== NULL ) { | ||
| 88 | - // назначим ключи из конфигурации, согласно массиву $keys | ||
| 89 | - $row = $this->compareArrayWithKeys( $row ); | ||
| 90 | - } | ||
| 91 | - $row = $this->convert( $row ); | ||
| 92 | - | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - | ||
| 96 | - if( isset( $attribute_array ) ) | ||
| 97 | - $row['@'] = $attribute_array; // Attributes | ||
| 98 | - | ||
| 99 | - return $row; | ||
| 100 | - } | ||
| 101 | - return (string) $xml; | ||
| 102 | - } | ||
| 103 | - | ||
| 104 | - /** | ||
| 105 | - * @param array $value_arr - текущий ряд, массив, которому нужно назначить конфигурационные ключи ($keys) | ||
| 106 | - * @return array | ||
| 107 | - */ | ||
| 108 | - protected function compareArrayWithKeys( array $value_arr ){ | ||
| 109 | - $res = $this->keys; | ||
| 110 | - foreach ( $this->keys as $key => $value ) { | ||
| 111 | - if ( array_key_exists( $value, $value_arr ) ) { | ||
| 112 | - $res[$key] = $value_arr[$value]; | ||
| 113 | - } | ||
| 114 | - } | ||
| 115 | - return $res; | ||
| 116 | - } | ||
| 117 | - | ||
| 118 | -} | ||
| 119 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/YiiConverter.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 07.09.2015 | ||
| 6 | - * Time: 15:56 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | -use common\components\CustomVarDamp; | ||
| 12 | -use yii\base\Component; | ||
| 13 | -use yii\base\ErrorException; | ||
| 14 | - | ||
| 15 | - | ||
| 16 | -class YiiConverter extends Component{ | ||
| 17 | - | ||
| 18 | -public $configuration; | ||
| 19 | -public $converter; | ||
| 20 | - | ||
| 21 | - public function init() | ||
| 22 | - { | ||
| 23 | - parent::init(); | ||
| 24 | - $converter = \Yii::createObject( $this->configuration ); | ||
| 25 | - if ( $converter instanceof ConverterInterface ) { | ||
| 26 | - | ||
| 27 | - $this->converter = $converter; | ||
| 28 | - }else{ | ||
| 29 | - throw new ErrorException('Wrong type of converter'); | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - | ||
| 33 | - } | ||
| 34 | - | ||
| 35 | - public function convertTo( $method, $value, $attributes = [] ){ | ||
| 36 | - | ||
| 37 | - if ( $attributes ) { | ||
| 38 | - $this->converter->setAttributes($attributes); | ||
| 39 | - } | ||
| 40 | - return $this->converter->$method( $value ); | ||
| 41 | - | ||
| 42 | - } | ||
| 43 | - | ||
| 44 | - public function convertByConfiguration( $value, $configuration ){ | ||
| 45 | - | ||
| 46 | - return $this->converter->convertByConfiguration( $value, $configuration ); | ||
| 47 | - | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | - | ||
| 51 | -} | ||
| 52 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/YiiMultiparser.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 07.09.2015 | ||
| 6 | - * Time: 15:56 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | -use common\components\CustomVarDamp; | ||
| 12 | -use yii\base\Component; | ||
| 13 | - | ||
| 14 | - | ||
| 15 | - | ||
| 16 | - | ||
| 17 | -class YiiMultiparser extends Component{ | ||
| 18 | - | ||
| 19 | -public $configuration; | ||
| 20 | -public $parserHandler; | ||
| 21 | - | ||
| 22 | - public function init() | ||
| 23 | - { | ||
| 24 | - parent::init(); | ||
| 25 | - $this->parserHandler = new YiiParserHandler( ); | ||
| 26 | - $this->parserHandler->setConfiguration( $this->configuration ); | ||
| 27 | - | ||
| 28 | - } | ||
| 29 | - | ||
| 30 | - | ||
| 31 | - public function parse( $filePath, $options = [] ){ | ||
| 32 | - | ||
| 33 | - $this->parserHandler->setup( $filePath, $options ); | ||
| 34 | - | ||
| 35 | - return $this->parserHandler->run(); | ||
| 36 | - | ||
| 37 | - } | ||
| 38 | - | ||
| 39 | - public function getConfiguration( $extension, $parameter ){ | ||
| 40 | - | ||
| 41 | - return $this->parserHandler->getCustomConfiguration( $extension, $parameter ); | ||
| 42 | - | ||
| 43 | - } | ||
| 44 | - | ||
| 45 | -} | ||
| 46 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/YiiParserHandler.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 07.09.2015 | ||
| 6 | - * Time: 15:53 | ||
| 7 | - */ | ||
| 8 | - | ||
| 9 | -namespace yii\multiparser; | ||
| 10 | - | ||
| 11 | - | ||
| 12 | -use common\components\CustomVarDamp; | ||
| 13 | - | ||
| 14 | -class YiiParserHandler extends ParserHandler{ | ||
| 15 | - | ||
| 16 | - | ||
| 17 | - /** | ||
| 18 | - * @param $filePath | ||
| 19 | - * @param array $options | ||
| 20 | - * проверяет читабельность переданного файла, а также наличие настроек парсера в конфигурационном файле для данного типа файла | ||
| 21 | - */ | ||
| 22 | -// public function setup($filePath, $options = []) | ||
| 23 | -// { | ||
| 24 | -// $this->filePath = $filePath; | ||
| 25 | -// if (isset($options['mode'])) { | ||
| 26 | -// | ||
| 27 | -// $this->mode = $options['mode']; | ||
| 28 | -// unset($options['mode']); | ||
| 29 | -// | ||
| 30 | -// } else { | ||
| 31 | -// | ||
| 32 | -// $this->mode = self::DEFAULT_MODE; | ||
| 33 | -// | ||
| 34 | -// } | ||
| 35 | -// | ||
| 36 | -// $this->options = $options; | ||
| 37 | -// | ||
| 38 | -// try { | ||
| 39 | -// $this->fileObject = new \SplFileObject($this->filePath, 'r'); | ||
| 40 | -// } catch (\ErrorException $e) { | ||
| 41 | -// // Yii::warning("Ошибка открытия файла {$this->filePath}"); | ||
| 42 | -// echo "Ошибка открытия файла {$this->filePath}"; | ||
| 43 | -// return []; | ||
| 44 | -// } | ||
| 45 | -// | ||
| 46 | -// $options['file'] = $this->fileObject; | ||
| 47 | -// $this->extension = $this->fileObject->getExtension(); | ||
| 48 | -// | ||
| 49 | -// try { | ||
| 50 | -// | ||
| 51 | -// $this->configuration = array_merge_recursive ($this->configuration, $options); | ||
| 52 | -// | ||
| 53 | -// } catch (\ErrorException $e) { | ||
| 54 | -// echo $e->getMessage(); | ||
| 55 | -// return []; | ||
| 56 | -// } | ||
| 57 | -// | ||
| 58 | -// } | ||
| 59 | -// | ||
| 60 | -// public function run() | ||
| 61 | -// { | ||
| 62 | -// | ||
| 63 | -// $result = []; | ||
| 64 | -// | ||
| 65 | -// // \common\components\CustomVarDamp::dumpAndDie($this); | ||
| 66 | -// if (count($this->configuration)) { | ||
| 67 | -// $parser = \Yii::createObject($this->configuration); | ||
| 68 | -// | ||
| 69 | -// try { | ||
| 70 | -// | ||
| 71 | -// $parser->setup(); | ||
| 72 | -// $result = $parser->read(); | ||
| 73 | -// | ||
| 74 | -// } catch (\ErrorException $e) { | ||
| 75 | -// | ||
| 76 | -// echo $e->getMessage(); | ||
| 77 | -// | ||
| 78 | -// } | ||
| 79 | -// | ||
| 80 | -// } | ||
| 81 | -// | ||
| 82 | -// return $result; | ||
| 83 | -// } | ||
| 84 | - protected function createObjectByConfiguration($configuration) | ||
| 85 | - { | ||
| 86 | - return \Yii::createObject($configuration); | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - | ||
| 90 | -} | ||
| 91 | \ No newline at end of file | 0 | \ No newline at end of file |
vendor/yiisoft/multiparser/config.php deleted
| 1 | -<?php | ||
| 2 | -return | ||
| 3 | - [ | ||
| 4 | - 'csv' => | ||
| 5 | - ['web' => | ||
| 6 | - ['class' => 'yii\multiparser\CsvParser', | ||
| 7 | - 'auto_detect_first_line' => true, | ||
| 8 | - 'converter_conf' => [ | ||
| 9 | - "float" => 'PRICE', | ||
| 10 | - "integer" => 'QUANTITY', | ||
| 11 | - "string" => 'DESCR' | ||
| 12 | - ]], | ||
| 13 | - 'basic_column' => [ | ||
| 14 | - "ARTICLE" => 'Артикул', | ||
| 15 | - "PRICE" => 'Цена', | ||
| 16 | - "DESCR" => 'Наименование', | ||
| 17 | - "QUANTITY" => 'Колво' | ||
| 18 | - | ||
| 19 | - ], | ||
| 20 | - ]]; |