Commit e197367840a0cbe30b0d7f17f2ff294064b77018
Committed by
Eduardo Santos
1 parent
13aa2fad
Exists in
master
and in
1 other branch
Refatoração das coletas para aumentar a eficiência.
Showing
7 changed files
with
395 additions
and
292 deletions
Show diff stats
app/config/config.yml
| @@ -116,7 +116,10 @@ swiftmailer: | @@ -116,7 +116,10 @@ swiftmailer: | ||
| 116 | host: "%mailer_host%" | 116 | host: "%mailer_host%" |
| 117 | username: "%mailer_user%" | 117 | username: "%mailer_user%" |
| 118 | password: "%mailer_password%" | 118 | password: "%mailer_password%" |
| 119 | - spool: { type: memory } | 119 | + spool: |
| 120 | + type: file | ||
| 121 | + path: "%kernel.root_dir%/spool" | ||
| 122 | + | ||
| 120 | 123 | ||
| 121 | # KNP Paginator Configuration | 124 | # KNP Paginator Configuration |
| 122 | knp_paginator: | 125 | knp_paginator: |
app/config/config_dev.yml
app/config/config_prod.yml
| @@ -18,3 +18,6 @@ monolog: | @@ -18,3 +18,6 @@ monolog: | ||
| 18 | type: stream | 18 | type: stream |
| 19 | path: "%kernel.logs_dir%/%kernel.environment%.log" | 19 | path: "%kernel.logs_dir%/%kernel.environment%.log" |
| 20 | level: warning | 20 | level: warning |
| 21 | + | ||
| 22 | +swiftmailer: | ||
| 23 | + sender_address: www-data@localhost | ||
| 21 | \ No newline at end of file | 24 | \ No newline at end of file |
composer.lock
| @@ -219,8 +219,7 @@ | @@ -219,8 +219,7 @@ | ||
| 219 | { | 219 | { |
| 220 | "name": "Jonathan Wage", | 220 | "name": "Jonathan Wage", |
| 221 | "email": "jonwage@gmail.com", | 221 | "email": "jonwage@gmail.com", |
| 222 | - "homepage": "http://www.jwage.com/", | ||
| 223 | - "role": "Creator" | 222 | + "homepage": "http://www.jwage.com/" |
| 224 | }, | 223 | }, |
| 225 | { | 224 | { |
| 226 | "name": "Guilherme Blanco", | 225 | "name": "Guilherme Blanco", |
| @@ -434,8 +433,7 @@ | @@ -434,8 +433,7 @@ | ||
| 434 | { | 433 | { |
| 435 | "name": "Jonathan Wage", | 434 | "name": "Jonathan Wage", |
| 436 | "email": "jonwage@gmail.com", | 435 | "email": "jonwage@gmail.com", |
| 437 | - "homepage": "http://www.jwage.com/", | ||
| 438 | - "role": "Creator" | 436 | + "homepage": "http://www.jwage.com/" |
| 439 | }, | 437 | }, |
| 440 | { | 438 | { |
| 441 | "name": "Guilherme Blanco", | 439 | "name": "Guilherme Blanco", |
| @@ -530,12 +528,12 @@ | @@ -530,12 +528,12 @@ | ||
| 530 | "source": { | 528 | "source": { |
| 531 | "type": "git", | 529 | "type": "git", |
| 532 | "url": "https://github.com/doctrine/dbal.git", | 530 | "url": "https://github.com/doctrine/dbal.git", |
| 533 | - "reference": "2a37b007dda8e21bdbb8fa445be8fa0064199e13" | 531 | + "reference": "2.3.4" |
| 534 | }, | 532 | }, |
| 535 | "dist": { | 533 | "dist": { |
| 536 | "type": "zip", | 534 | "type": "zip", |
| 537 | - "url": "https://api.github.com/repos/doctrine/dbal/zipball/2a37b007dda8e21bdbb8fa445be8fa0064199e13", | ||
| 538 | - "reference": "2a37b007dda8e21bdbb8fa445be8fa0064199e13", | 535 | + "url": "https://api.github.com/repos/doctrine/dbal/zipball/2.3.4", |
| 536 | + "reference": "2.3.4", | ||
| 539 | "shasum": "" | 537 | "shasum": "" |
| 540 | }, | 538 | }, |
| 541 | "require": { | 539 | "require": { |
| @@ -561,8 +559,7 @@ | @@ -561,8 +559,7 @@ | ||
| 561 | { | 559 | { |
| 562 | "name": "Jonathan Wage", | 560 | "name": "Jonathan Wage", |
| 563 | "email": "jonwage@gmail.com", | 561 | "email": "jonwage@gmail.com", |
| 564 | - "homepage": "http://www.jwage.com/", | ||
| 565 | - "role": "Creator" | 562 | + "homepage": "http://www.jwage.com/" |
| 566 | }, | 563 | }, |
| 567 | { | 564 | { |
| 568 | "name": "Guilherme Blanco", | 565 | "name": "Guilherme Blanco", |
| @@ -595,25 +592,25 @@ | @@ -595,25 +592,25 @@ | ||
| 595 | "source": { | 592 | "source": { |
| 596 | "type": "git", | 593 | "type": "git", |
| 597 | "url": "https://github.com/doctrine/DoctrineBundle.git", | 594 | "url": "https://github.com/doctrine/DoctrineBundle.git", |
| 598 | - "reference": "765b0d87fcc3e839c74817b7211258cbef3a4fb9" | 595 | + "reference": "v1.2.0" |
| 599 | }, | 596 | }, |
| 600 | "dist": { | 597 | "dist": { |
| 601 | "type": "zip", | 598 | "type": "zip", |
| 602 | - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/765b0d87fcc3e839c74817b7211258cbef3a4fb9", | ||
| 603 | - "reference": "765b0d87fcc3e839c74817b7211258cbef3a4fb9", | 599 | + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/v1.2.0", |
| 600 | + "reference": "v1.2.0", | ||
| 604 | "shasum": "" | 601 | "shasum": "" |
| 605 | }, | 602 | }, |
| 606 | "require": { | 603 | "require": { |
| 607 | "doctrine/dbal": ">=2.2,<2.5-dev", | 604 | "doctrine/dbal": ">=2.2,<2.5-dev", |
| 608 | - "jdorn/sql-formatter": "~1.1", | 605 | + "jdorn/sql-formatter": ">=1.1,<2.0", |
| 609 | "php": ">=5.3.2", | 606 | "php": ">=5.3.2", |
| 610 | - "symfony/doctrine-bridge": "~2.2", | ||
| 611 | - "symfony/framework-bundle": "~2.2" | 607 | + "symfony/doctrine-bridge": ">=2.2,<3.0", |
| 608 | + "symfony/framework-bundle": ">=2.2,<3.0" | ||
| 612 | }, | 609 | }, |
| 613 | "require-dev": { | 610 | "require-dev": { |
| 614 | "doctrine/orm": ">=2.2,<2.5-dev", | 611 | "doctrine/orm": ">=2.2,<2.5-dev", |
| 615 | - "symfony/validator": "~2.2", | ||
| 616 | - "symfony/yaml": "~2.2" | 612 | + "symfony/validator": ">=2.2,<3.0", |
| 613 | + "symfony/yaml": ">=2.2,<3.0" | ||
| 617 | }, | 614 | }, |
| 618 | "suggest": { | 615 | "suggest": { |
| 619 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", | 616 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", |
| @@ -749,8 +746,7 @@ | @@ -749,8 +746,7 @@ | ||
| 749 | { | 746 | { |
| 750 | "name": "Jonathan Wage", | 747 | "name": "Jonathan Wage", |
| 751 | "email": "jonwage@gmail.com", | 748 | "email": "jonwage@gmail.com", |
| 752 | - "homepage": "http://www.jwage.com/", | ||
| 753 | - "role": "Creator" | 749 | + "homepage": "http://www.jwage.com/" |
| 754 | }, | 750 | }, |
| 755 | { | 751 | { |
| 756 | "name": "Guilherme Blanco", | 752 | "name": "Guilherme Blanco", |
| @@ -766,7 +762,7 @@ | @@ -766,7 +762,7 @@ | ||
| 766 | "email": "kontakt@beberlei.de" | 762 | "email": "kontakt@beberlei.de" |
| 767 | }, | 763 | }, |
| 768 | { | 764 | { |
| 769 | - "name": "Johannes Schmitt", | 765 | + "name": "Johannes M. Schmitt", |
| 770 | "email": "schmittjoh@gmail.com", | 766 | "email": "schmittjoh@gmail.com", |
| 771 | "homepage": "http://jmsyst.com", | 767 | "homepage": "http://jmsyst.com", |
| 772 | "role": "Developer of wrapped JMSSerializerBundle" | 768 | "role": "Developer of wrapped JMSSerializerBundle" |
| @@ -1285,13 +1281,13 @@ | @@ -1285,13 +1281,13 @@ | ||
| 1285 | "version": "1.0.0", | 1281 | "version": "1.0.0", |
| 1286 | "source": { | 1282 | "source": { |
| 1287 | "type": "git", | 1283 | "type": "git", |
| 1288 | - "url": "https://github.com/schmittjoh/cg-library.git", | ||
| 1289 | - "reference": "ce8ef43dd6bfe6ce54e5e9844ab71be2343bf2fc" | 1284 | + "url": "git://github.com/schmittjoh/cg-library.git", |
| 1285 | + "reference": "1.0.0" | ||
| 1290 | }, | 1286 | }, |
| 1291 | "dist": { | 1287 | "dist": { |
| 1292 | "type": "zip", | 1288 | "type": "zip", |
| 1293 | - "url": "https://api.github.com/repos/schmittjoh/cg-library/zipball/ce8ef43dd6bfe6ce54e5e9844ab71be2343bf2fc", | ||
| 1294 | - "reference": "ce8ef43dd6bfe6ce54e5e9844ab71be2343bf2fc", | 1289 | + "url": "https://github.com/schmittjoh/cg-library/zipball/1.0.0", |
| 1290 | + "reference": "1.0.0", | ||
| 1295 | "shasum": "" | 1291 | "shasum": "" |
| 1296 | }, | 1292 | }, |
| 1297 | "require": { | 1293 | "require": { |
| @@ -1319,7 +1315,7 @@ | @@ -1319,7 +1315,7 @@ | ||
| 1319 | "keywords": [ | 1315 | "keywords": [ |
| 1320 | "code generation" | 1316 | "code generation" |
| 1321 | ], | 1317 | ], |
| 1322 | - "time": "2012-01-02 20:40:52" | 1318 | + "time": "2012-01-02 12:40:52" |
| 1323 | }, | 1319 | }, |
| 1324 | { | 1320 | { |
| 1325 | "name": "jms/di-extra-bundle", | 1321 | "name": "jms/di-extra-bundle", |
| @@ -1328,20 +1324,20 @@ | @@ -1328,20 +1324,20 @@ | ||
| 1328 | "source": { | 1324 | "source": { |
| 1329 | "type": "git", | 1325 | "type": "git", |
| 1330 | "url": "https://github.com/schmittjoh/JMSDiExtraBundle.git", | 1326 | "url": "https://github.com/schmittjoh/JMSDiExtraBundle.git", |
| 1331 | - "reference": "7fffdb6c96fb922a131af06d773e1e6c5301d070" | 1327 | + "reference": "1.4.0" |
| 1332 | }, | 1328 | }, |
| 1333 | "dist": { | 1329 | "dist": { |
| 1334 | "type": "zip", | 1330 | "type": "zip", |
| 1335 | - "url": "https://api.github.com/repos/schmittjoh/JMSDiExtraBundle/zipball/7fffdb6c96fb922a131af06d773e1e6c5301d070", | ||
| 1336 | - "reference": "7fffdb6c96fb922a131af06d773e1e6c5301d070", | 1331 | + "url": "https://api.github.com/repos/schmittjoh/JMSDiExtraBundle/zipball/1.4.0", |
| 1332 | + "reference": "1.4.0", | ||
| 1337 | "shasum": "" | 1333 | "shasum": "" |
| 1338 | }, | 1334 | }, |
| 1339 | "require": { | 1335 | "require": { |
| 1340 | "jms/aop-bundle": ">=1.0.0,<1.2-dev", | 1336 | "jms/aop-bundle": ">=1.0.0,<1.2-dev", |
| 1341 | "jms/metadata": "1.*", | 1337 | "jms/metadata": "1.*", |
| 1342 | - "symfony/finder": "~2.1", | ||
| 1343 | - "symfony/framework-bundle": "~2.1", | ||
| 1344 | - "symfony/process": "~2.1" | 1338 | + "symfony/finder": ">=2.1,<3.0", |
| 1339 | + "symfony/framework-bundle": ">=2.1,<3.0", | ||
| 1340 | + "symfony/process": ">=2.1,<3.0" | ||
| 1345 | }, | 1341 | }, |
| 1346 | "require-dev": { | 1342 | "require-dev": { |
| 1347 | "doctrine/doctrine-bundle": "*", | 1343 | "doctrine/doctrine-bundle": "*", |
| @@ -1425,7 +1421,7 @@ | @@ -1425,7 +1421,7 @@ | ||
| 1425 | ], | 1421 | ], |
| 1426 | "authors": [ | 1422 | "authors": [ |
| 1427 | { | 1423 | { |
| 1428 | - "name": "Johannes M. Schmitt", | 1424 | + "name": "Johannes Schmitt", |
| 1429 | "email": "schmittjoh@gmail.com", | 1425 | "email": "schmittjoh@gmail.com", |
| 1430 | "homepage": "http://jmsyst.com", | 1426 | "homepage": "http://jmsyst.com", |
| 1431 | "role": "Developer of wrapped JMSSerializerBundle" | 1427 | "role": "Developer of wrapped JMSSerializerBundle" |
| @@ -1445,13 +1441,13 @@ | @@ -1445,13 +1441,13 @@ | ||
| 1445 | "version": "1.0.0", | 1441 | "version": "1.0.0", |
| 1446 | "source": { | 1442 | "source": { |
| 1447 | "type": "git", | 1443 | "type": "git", |
| 1448 | - "url": "https://github.com/schmittjoh/parser-lib.git", | ||
| 1449 | - "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" | 1444 | + "url": "git://github.com/schmittjoh/parser-lib", |
| 1445 | + "reference": "1.0.0" | ||
| 1450 | }, | 1446 | }, |
| 1451 | "dist": { | 1447 | "dist": { |
| 1452 | "type": "zip", | 1448 | "type": "zip", |
| 1453 | - "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", | ||
| 1454 | - "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", | 1449 | + "url": "https://github.com/schmittjoh/parser-lib/archive/1.0.0.zip", |
| 1450 | + "reference": "1.0.0", | ||
| 1455 | "shasum": "" | 1451 | "shasum": "" |
| 1456 | }, | 1452 | }, |
| 1457 | "require": { | 1453 | "require": { |
| @@ -1482,20 +1478,20 @@ | @@ -1482,20 +1478,20 @@ | ||
| 1482 | "source": { | 1478 | "source": { |
| 1483 | "type": "git", | 1479 | "type": "git", |
| 1484 | "url": "https://github.com/schmittjoh/JMSSecurityExtraBundle.git", | 1480 | "url": "https://github.com/schmittjoh/JMSSecurityExtraBundle.git", |
| 1485 | - "reference": "f5f6c6df69ceae8b709e57b49fcc2a42d9280bcc" | 1481 | + "reference": "1.5.1" |
| 1486 | }, | 1482 | }, |
| 1487 | "dist": { | 1483 | "dist": { |
| 1488 | "type": "zip", | 1484 | "type": "zip", |
| 1489 | - "url": "https://api.github.com/repos/schmittjoh/JMSSecurityExtraBundle/zipball/f5f6c6df69ceae8b709e57b49fcc2a42d9280bcc", | ||
| 1490 | - "reference": "f5f6c6df69ceae8b709e57b49fcc2a42d9280bcc", | 1485 | + "url": "https://api.github.com/repos/schmittjoh/JMSSecurityExtraBundle/zipball/1.5.1", |
| 1486 | + "reference": "1.5.1", | ||
| 1491 | "shasum": "" | 1487 | "shasum": "" |
| 1492 | }, | 1488 | }, |
| 1493 | "require": { | 1489 | "require": { |
| 1494 | - "jms/aop-bundle": "~1.0", | ||
| 1495 | - "jms/di-extra-bundle": "~1.3", | ||
| 1496 | - "jms/metadata": "~1.0", | ||
| 1497 | - "jms/parser-lib": "~1.0", | ||
| 1498 | - "symfony/framework-bundle": "~2.1", | 1490 | + "jms/aop-bundle": ">=1.0,<2.0", |
| 1491 | + "jms/di-extra-bundle": ">=1.3,<2.0", | ||
| 1492 | + "jms/metadata": ">=1.0,<2.0", | ||
| 1493 | + "jms/parser-lib": ">=1.0,<2.0", | ||
| 1494 | + "symfony/framework-bundle": ">=2.1,<3.0", | ||
| 1499 | "symfony/security-bundle": "*" | 1495 | "symfony/security-bundle": "*" |
| 1500 | }, | 1496 | }, |
| 1501 | "require-dev": { | 1497 | "require-dev": { |
| @@ -2055,17 +2051,17 @@ | @@ -2055,17 +2051,17 @@ | ||
| 2055 | "source": { | 2051 | "source": { |
| 2056 | "type": "git", | 2052 | "type": "git", |
| 2057 | "url": "https://github.com/kriswallsmith/assetic.git", | 2053 | "url": "https://github.com/kriswallsmith/assetic.git", |
| 2058 | - "reference": "a826e4b96f5c607ff47ef61caf3826b2b1e840ec" | 2054 | + "reference": "v1.1.1" |
| 2059 | }, | 2055 | }, |
| 2060 | "dist": { | 2056 | "dist": { |
| 2061 | "type": "zip", | 2057 | "type": "zip", |
| 2062 | - "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/a826e4b96f5c607ff47ef61caf3826b2b1e840ec", | ||
| 2063 | - "reference": "a826e4b96f5c607ff47ef61caf3826b2b1e840ec", | 2058 | + "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/v1.1.1", |
| 2059 | + "reference": "v1.1.1", | ||
| 2064 | "shasum": "" | 2060 | "shasum": "" |
| 2065 | }, | 2061 | }, |
| 2066 | "require": { | 2062 | "require": { |
| 2067 | "php": ">=5.3.1", | 2063 | "php": ">=5.3.1", |
| 2068 | - "symfony/process": "~2.1" | 2064 | + "symfony/process": ">=2.1,<3.0" |
| 2069 | }, | 2065 | }, |
| 2070 | "require-dev": { | 2066 | "require-dev": { |
| 2071 | "cssmin/cssmin": "*", | 2067 | "cssmin/cssmin": "*", |
| @@ -2075,9 +2071,9 @@ | @@ -2075,9 +2071,9 @@ | ||
| 2075 | "leafo/scssphp": "*", | 2071 | "leafo/scssphp": "*", |
| 2076 | "leafo/scssphp-compass": "*", | 2072 | "leafo/scssphp-compass": "*", |
| 2077 | "mrclay/minify": "*", | 2073 | "mrclay/minify": "*", |
| 2078 | - "phpunit/phpunit": "~3.7", | 2074 | + "phpunit/phpunit": ">=3.7,<4.0", |
| 2079 | "ptachoire/cssembed": "*", | 2075 | "ptachoire/cssembed": "*", |
| 2080 | - "twig/twig": "~1.6" | 2076 | + "twig/twig": ">=1.6,<2.0" |
| 2081 | }, | 2077 | }, |
| 2082 | "suggest": { | 2078 | "suggest": { |
| 2083 | "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", | 2079 | "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", |
| @@ -2422,13 +2418,13 @@ | @@ -2422,13 +2418,13 @@ | ||
| 2422 | "version": "1.0.0", | 2418 | "version": "1.0.0", |
| 2423 | "source": { | 2419 | "source": { |
| 2424 | "type": "git", | 2420 | "type": "git", |
| 2425 | - "url": "https://github.com/php-fig/log.git", | ||
| 2426 | - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" | 2421 | + "url": "https://github.com/php-fig/log", |
| 2422 | + "reference": "1.0.0" | ||
| 2427 | }, | 2423 | }, |
| 2428 | "dist": { | 2424 | "dist": { |
| 2429 | "type": "zip", | 2425 | "type": "zip", |
| 2430 | - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", | ||
| 2431 | - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", | 2426 | + "url": "https://github.com/php-fig/log/archive/1.0.0.zip", |
| 2427 | + "reference": "1.0.0", | ||
| 2432 | "shasum": "" | 2428 | "shasum": "" |
| 2433 | }, | 2429 | }, |
| 2434 | "type": "library", | 2430 | "type": "library", |
| @@ -2654,27 +2650,27 @@ | @@ -2654,27 +2650,27 @@ | ||
| 2654 | "source": { | 2650 | "source": { |
| 2655 | "type": "git", | 2651 | "type": "git", |
| 2656 | "url": "https://github.com/symfony/AsseticBundle.git", | 2652 | "url": "https://github.com/symfony/AsseticBundle.git", |
| 2657 | - "reference": "146dd3cb46b302bd471560471c6aaa930483dac1" | 2653 | + "reference": "v2.3.0" |
| 2658 | }, | 2654 | }, |
| 2659 | "dist": { | 2655 | "dist": { |
| 2660 | "type": "zip", | 2656 | "type": "zip", |
| 2661 | - "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/146dd3cb46b302bd471560471c6aaa930483dac1", | ||
| 2662 | - "reference": "146dd3cb46b302bd471560471c6aaa930483dac1", | 2657 | + "url": "https://api.github.com/repos/symfony/AsseticBundle/zipball/v2.3.0", |
| 2658 | + "reference": "v2.3.0", | ||
| 2663 | "shasum": "" | 2659 | "shasum": "" |
| 2664 | }, | 2660 | }, |
| 2665 | "require": { | 2661 | "require": { |
| 2666 | - "kriswallsmith/assetic": "~1.1", | 2662 | + "kriswallsmith/assetic": ">=1.1,<2.0", |
| 2667 | "php": ">=5.3.0", | 2663 | "php": ">=5.3.0", |
| 2668 | - "symfony/framework-bundle": "~2.1" | 2664 | + "symfony/framework-bundle": ">=2.1,<3.0" |
| 2669 | }, | 2665 | }, |
| 2670 | "require-dev": { | 2666 | "require-dev": { |
| 2671 | - "symfony/class-loader": "~2.1", | ||
| 2672 | - "symfony/console": "~2.1", | ||
| 2673 | - "symfony/css-selector": "~2.1", | ||
| 2674 | - "symfony/dom-crawler": "~2.1", | ||
| 2675 | - "symfony/form": "~2.1", | ||
| 2676 | - "symfony/twig-bundle": "~2.1", | ||
| 2677 | - "symfony/yaml": "~2.1" | 2667 | + "symfony/class-loader": ">=2.1,<3.0", |
| 2668 | + "symfony/console": ">=2.1,<3.0", | ||
| 2669 | + "symfony/css-selector": ">=2.1,<3.0", | ||
| 2670 | + "symfony/dom-crawler": ">=2.1,<3.0", | ||
| 2671 | + "symfony/form": ">=2.1,<3.0", | ||
| 2672 | + "symfony/twig-bundle": ">=2.1,<3.0", | ||
| 2673 | + "symfony/yaml": ">=2.1,<3.0" | ||
| 2678 | }, | 2674 | }, |
| 2679 | "suggest": { | 2675 | "suggest": { |
| 2680 | "symfony/twig-bundle": "~2.1" | 2676 | "symfony/twig-bundle": "~2.1" |
| @@ -2817,23 +2813,23 @@ | @@ -2817,23 +2813,23 @@ | ||
| 2817 | "source": { | 2813 | "source": { |
| 2818 | "type": "git", | 2814 | "type": "git", |
| 2819 | "url": "https://github.com/symfony/MonologBundle.git", | 2815 | "url": "https://github.com/symfony/MonologBundle.git", |
| 2820 | - "reference": "03ed73bc11367b3156cc21f22ac37c7f70fcd10a" | 2816 | + "reference": "v2.3.0" |
| 2821 | }, | 2817 | }, |
| 2822 | "dist": { | 2818 | "dist": { |
| 2823 | "type": "zip", | 2819 | "type": "zip", |
| 2824 | - "url": "https://api.github.com/repos/symfony/MonologBundle/zipball/03ed73bc11367b3156cc21f22ac37c7f70fcd10a", | ||
| 2825 | - "reference": "03ed73bc11367b3156cc21f22ac37c7f70fcd10a", | 2820 | + "url": "https://api.github.com/repos/symfony/MonologBundle/zipball/v2.3.0", |
| 2821 | + "reference": "v2.3.0", | ||
| 2826 | "shasum": "" | 2822 | "shasum": "" |
| 2827 | }, | 2823 | }, |
| 2828 | "require": { | 2824 | "require": { |
| 2829 | - "monolog/monolog": "~1.3", | 2825 | + "monolog/monolog": ">=1.3,<2.0", |
| 2830 | "php": ">=5.3.2", | 2826 | "php": ">=5.3.2", |
| 2831 | - "symfony/config": "~2.2-beta2", | ||
| 2832 | - "symfony/dependency-injection": "~2.2-beta2", | ||
| 2833 | - "symfony/monolog-bridge": "~2.2-beta2" | 2827 | + "symfony/config": ">=2.2-beta2,<3.0", |
| 2828 | + "symfony/dependency-injection": ">=2.2-beta2,<3.0", | ||
| 2829 | + "symfony/monolog-bridge": ">=2.2-beta2,<3.0" | ||
| 2834 | }, | 2830 | }, |
| 2835 | "require-dev": { | 2831 | "require-dev": { |
| 2836 | - "symfony/yaml": "~2.2-beta2" | 2832 | + "symfony/yaml": ">=2.2-beta2,<3.0" |
| 2837 | }, | 2833 | }, |
| 2838 | "type": "symfony-bundle", | 2834 | "type": "symfony-bundle", |
| 2839 | "extra": { | 2835 | "extra": { |
| @@ -3164,7 +3160,7 @@ | @@ -3164,7 +3160,7 @@ | ||
| 3164 | "role": "Lead Developer" | 3160 | "role": "Lead Developer" |
| 3165 | }, | 3161 | }, |
| 3166 | { | 3162 | { |
| 3167 | - "name": "Armin Ronacher", | 3163 | + "name": "Armin Ronacher2", |
| 3168 | "email": "armin.ronacher@active-4.com", | 3164 | "email": "armin.ronacher@active-4.com", |
| 3169 | "role": "Project Founder" | 3165 | "role": "Project Founder" |
| 3170 | }, | 3166 | }, |
src/Cacic/WSBundle/Controller/ColetaController.php
| @@ -49,6 +49,9 @@ class ColetaController extends Controller | @@ -49,6 +49,9 @@ class ColetaController extends Controller | ||
| 49 | //$strComputerSystem = OldCacicHelper::deCrypt( $request, $request->get('ComputerSystem') ); | 49 | //$strComputerSystem = OldCacicHelper::deCrypt( $request, $request->get('ComputerSystem') ); |
| 50 | //$strOperatingSystem = OldCacicHelper::deCrypt( $request, $request->request->get('OperatingSystem') ); | 50 | //$strOperatingSystem = OldCacicHelper::deCrypt( $request, $request->request->get('OperatingSystem') ); |
| 51 | $data = new \DateTime('NOW'); | 51 | $data = new \DateTime('NOW'); |
| 52 | + $data_inicio = $data->format('d/m/Y H:i:s'); | ||
| 53 | + $data = microtime(); | ||
| 54 | + $logger->debug("%%% Início da operação de coleta: $data_inicio %%%"); | ||
| 52 | 55 | ||
| 53 | $te_node_adress = TagValueHelper::getValueFromTags( 'MACAddress', $strNetworkAdapterConfiguration ); | 56 | $te_node_adress = TagValueHelper::getValueFromTags( 'MACAddress', $strNetworkAdapterConfiguration ); |
| 54 | $te_so = $request->get( 'te_so' ); | 57 | $te_so = $request->get( 'te_so' ); |
| @@ -58,60 +61,38 @@ class ColetaController extends Controller | @@ -58,60 +61,38 @@ class ColetaController extends Controller | ||
| 58 | //vefifica se existe SO coletado se não, insere novo SO | 61 | //vefifica se existe SO coletado se não, insere novo SO |
| 59 | $so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->findOneBy( array('teSo'=>$te_so) ); | 62 | $so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->findOneBy( array('teSo'=>$te_so) ); |
| 60 | $computador = $this->getDoctrine()->getRepository('CacicCommonBundle:Computador')->findOneBy( array('idSo'=>$so, 'teNodeAddress'=>$te_node_adress) ); | 63 | $computador = $this->getDoctrine()->getRepository('CacicCommonBundle:Computador')->findOneBy( array('idSo'=>$so, 'teNodeAddress'=>$te_node_adress) ); |
| 61 | - $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta( $request ); | 64 | + $netmask = TagValueHelper::getValueFromTags( 'IPSubnet', $strNetworkAdapterConfiguration ); |
| 65 | + $ip_computador = $request->get('te_ip_computador'); | ||
| 66 | + $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta( $ip_computador, $netmask ); | ||
| 62 | //$local = $this->getDoctrine()->getRepository('CacicCommonBundle:Local')->findOneBy(array( 'idLocal' => $rede->getIdLocal() )); | 67 | //$local = $this->getDoctrine()->getRepository('CacicCommonBundle:Local')->findOneBy(array( 'idLocal' => $rede->getIdLocal() )); |
| 63 | $strCollectType = OldCacicHelper::deCrypt($request, $request->get('CollectType')); | 68 | $strCollectType = OldCacicHelper::deCrypt($request, $request->get('CollectType')); |
| 64 | 69 | ||
| 65 | // Defino os dois arrays que conterão as configurações para Coletas, Classes e Propriedades | 70 | // Defino os dois arrays que conterão as configurações para Coletas, Classes e Propriedades |
| 66 | $arrClassesNames = array(); | 71 | $arrClassesNames = array(); |
| 67 | - $arrCollectsDefClasses[$strCollectType] = array(); | ||
| 68 | 72 | ||
| 69 | $detalhesClasses = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->listaDetalhesClasseAcoes($strCollectType); | 73 | $detalhesClasses = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->listaDetalhesClasseAcoes($strCollectType); |
| 74 | + $output = $this->arrayClasses($detalhesClasses, $arrClassesNames); | ||
| 70 | 75 | ||
| 71 | - foreach ($detalhesClasses as $detalhe) | ||
| 72 | - { | ||
| 73 | - // Adiciona classe no Array de classes que estão no banco | ||
| 74 | - if (!in_array($detalhe['nmClassName'], $arrClassesNames)) { | ||
| 75 | - array_push($arrClassesNames, $detalhe['nmClassName']); | ||
| 76 | - } | ||
| 77 | - // Primeiro cria array com as informações das propriedades | ||
| 78 | - $property = array( | ||
| 79 | - 'idClassProperty' => $detalhe['idClassProperty'], | ||
| 80 | - 'nmFunctionPreDb' => $detalhe['nmFunctionPreDb'] | ||
| 81 | - ); | ||
| 82 | - | ||
| 83 | - | ||
| 84 | - $nmPropertyName = $detalhe['nmPropertyName']; | ||
| 85 | - $logger->debug("Adicionando propriedade $nmPropertyName no array de propriedades"); | ||
| 86 | - // Aqui o array já existe. Só substituo pelo novo valor | ||
| 87 | - $arrCollectsDefClasses[$strCollectType][$detalhe['nmClassName']][$detalhe['nmPropertyName']] = $property; | 76 | + if ($output) { |
| 77 | + $arrCollectsDefClasses[$strCollectType] = &$output[0]; | ||
| 78 | + $arrClassesNames = $output[1]; | ||
| 79 | + } else { | ||
| 80 | + $arrCollectsDefClasses[$strCollectType] = array(); | ||
| 88 | } | 81 | } |
| 89 | 82 | ||
| 90 | //$teste = print_r($arrCollectsDefClasses, true); | 83 | //$teste = print_r($arrCollectsDefClasses, true); |
| 91 | //$teste = print_r($arrClassesNames, true); | 84 | //$teste = print_r($arrClassesNames, true); |
| 92 | - //error_log("22222222222222222222222222222222222222222222222222222222222222 $teste"); | 85 | + //$logger->debug("22222222222222222222222222222222222222222222222222222222222222 $teste"); |
| 93 | 86 | ||
| 94 | if ($arrCollectsDefClasses[$strCollectType]) | 87 | if ($arrCollectsDefClasses[$strCollectType]) |
| 95 | { | 88 | { |
| 96 | - // Obtenho configuração para notificação de alterações | ||
| 97 | - //$resConfigsLocais = $this->getDoctrine()->getRepository('CacicCommonBundle:ConfiguracaoLocal')->listarNotificacaoPropertyLocal($rede->getIdLocal(), 'te_notificar_mudancas_properties'); | ||
| 98 | - //$resConfigsLocaisEmail = $this->getDoctrine()->getRepository('CacicCommonBundle:ConfiguracaoLocal')->listarNotificacaoEmailLocal($rede->getIdLocal()); | ||
| 99 | - | ||
| 100 | - //$arrClassesAndProperties = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->listaPorPropertyNotificacao( $resConfigsLocais->getVlConfiguracao() ) ; | ||
| 101 | - | ||
| 102 | - //foreach ($arrClassesAndProperties as $arrClassesAndProperty) | ||
| 103 | - // $arrClassesPropertiesToNotificate[$arrClassesAndProperty['nmClassName'] . '.' . $arrClassesAndProperty['nmPropertyName']] = $arrClassesAndProperty['tePropertyDescription']; | ||
| 104 | - | ||
| 105 | - $strInsertedItems_Text = ''; | ||
| 106 | - $strDeletedItems_Text = ''; | ||
| 107 | - $strUpdatedItems_Text = ''; | ||
| 108 | - | ||
| 109 | //error_log("00000000000000000000000000000000000000000000000000000000: $strCollectType"); | 89 | //error_log("00000000000000000000000000000000000000000000000000000000: $strCollectType"); |
| 110 | 90 | ||
| 111 | foreach( $request->request->all() as $strClassName => $strClassValues) | 91 | foreach( $request->request->all() as $strClassName => $strClassValues) |
| 112 | { | 92 | { |
| 113 | //$teste = OldCacicHelper::deCrypt($request, $strClassValues); | 93 | //$teste = OldCacicHelper::deCrypt($request, $strClassValues); |
| 114 | //$logger->debug("444444444444444444444444444444444444444444444444444444444: $strClassName | \n $teste"); | 94 | //$logger->debug("444444444444444444444444444444444444444444444444444444444: $strClassName | \n $teste"); |
| 95 | + //$logger->debug("444444444444444444444444444444444444444444444444444444444: $strClassName"); | ||
| 115 | //error_log("444444444444444444444444444444444444444444444444444444: $strClassName"); | 96 | //error_log("444444444444444444444444444444444444444444444444444444: $strClassName"); |
| 116 | 97 | ||
| 117 | 98 | ||
| @@ -124,192 +105,15 @@ class ColetaController extends Controller | @@ -124,192 +105,15 @@ class ColetaController extends Controller | ||
| 124 | // A propriedade da coleta de software é multi valorada. Preciso tratar diferente | 105 | // A propriedade da coleta de software é multi valorada. Preciso tratar diferente |
| 125 | if ($strClassName == "SoftwareList") { | 106 | if ($strClassName == "SoftwareList") { |
| 126 | 107 | ||
| 127 | - // Primeiro preciso pegar todas as tags que forem software | ||
| 128 | - $arrSoftware = TagValueHelper::getSoftwareTags($strNewClassValues); | ||
| 129 | - | ||
| 130 | - // Agora insere cada registro de software individualmente | ||
| 131 | - foreach ($arrSoftware as $software) { | ||
| 132 | - // Armazeno todas as propriedades dessa classe enviadas pela requisição | ||
| 133 | - $arrTags = TagValueHelper::getTagsFromValues($software); | ||
| 134 | - | ||
| 135 | - // Crio um array multidimensional com as tags e os valores | ||
| 136 | - foreach ($arrTags as $tagNames) { | ||
| 137 | - // Essa função garante que só serão retornados caracteres com UTF8 Válido | ||
| 138 | - $texto = TagValueHelper::UTF8Sanitize(TagValueHelper::getValueFromTags($tagNames, $software)); | ||
| 139 | - $arrTagsNames[$tagNames] = $texto; | ||
| 140 | - } | ||
| 141 | - | ||
| 142 | - // Para software, cada identificador será uma propriedade | ||
| 143 | - $softwareName = $arrTagsNames['IDSoftware']; | ||
| 144 | - | ||
| 145 | - // Remove o IDSoftware do array | ||
| 146 | - unset($arrTagsNames['IDSoftware']); | ||
| 147 | - | ||
| 148 | - // Armazeno o IDSoftware como Propriedade | ||
| 149 | - $idClassProperty = $arrCollectsDefClasses[$strCollectType][$strClassName][$softwareName]['idClassProperty']; | ||
| 150 | - | ||
| 151 | - // Se o IDSoftware não existir, cria | ||
| 152 | - if (empty($idClassProperty)) { | ||
| 153 | - $logger->debug("Software $softwareName não encontrado. Adicionando um novo software"); | ||
| 154 | - // Pega o Id da classe | ||
| 155 | - $idClass = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->findOneBy( array('nmClassName'=>$strClassName) ); | ||
| 156 | - | ||
| 157 | - $property = new ClassProperty(); | ||
| 158 | - $property->setNmPropertyName($softwareName); | ||
| 159 | - $property->setTePropertyDescription($arrTagsNames['DisplayName']); | ||
| 160 | - | ||
| 161 | - // Referência à classe | ||
| 162 | - $property->setIdClass($idClass); | ||
| 163 | - | ||
| 164 | - // Grava a propriedade nova | ||
| 165 | - $this->getDoctrine()->getManager()->persist($property); | ||
| 166 | - $this->getDoctrine()->getManager()->flush(); | ||
| 167 | - | ||
| 168 | - // Retorna o novo ID | ||
| 169 | - $idClassProperty = $property->getIdClassProperty(); | ||
| 170 | - } | ||
| 171 | - | ||
| 172 | - // Chama função que grava a propriedade | ||
| 173 | - $this->gerColsSetProperty('IDSoftware', $software, $idClassProperty, $computador); | ||
| 174 | - | ||
| 175 | - // Agora gravo todas as propriedades para o software na tabela propriedade_software | ||
| 176 | - $propriedadeSoftware = $this->getDoctrine()->getRepository('CacicCommonBundle:PropriedadeSoftware')->findOneBy( array('classProperty'=> $idClassProperty, 'computador' => $computador) ); | ||
| 177 | - $classPropertyObject = $this->getDoctrine()->getRepository('CacicCommonBundle:ClassProperty')->findOneBy( array( 'idClassProperty'=> $idClassProperty ) ); | ||
| 178 | - | ||
| 179 | - if (empty($propriedadeSoftware)) { | ||
| 180 | - | ||
| 181 | - // Se não tiver nome coloco o ID Software no nome | ||
| 182 | - if (empty($arrTagsNames['DisplayName'])) { | ||
| 183 | - $nmSoftware = $softwareName; | ||
| 184 | - } else { | ||
| 185 | - $nmSoftware = $arrTagsNames['DisplayName']; | ||
| 186 | - } | ||
| 187 | - | ||
| 188 | - | ||
| 189 | - $softwareObject = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->findOneBy( array( 'nmSoftware' => $nmSoftware ) ); | ||
| 190 | - if (empty($softwareObject)) { | ||
| 191 | - $softwareObject = new Software(); | ||
| 192 | - // Grava software recém inserido | ||
| 193 | - $this->getDoctrine()->getManager()->persist($softwareObject); | ||
| 194 | - $this->getDoctrine()->getManager()->flush(); | ||
| 195 | - } | ||
| 196 | - | ||
| 197 | - // Depois adiciono as propriedades | ||
| 198 | - $propriedadeSoftware = new PropriedadeSoftware(); | ||
| 199 | - | ||
| 200 | - $propriedadeSoftware->setClassProperty($classPropertyObject); | ||
| 201 | - $propriedadeSoftware->setComputador($computador); | ||
| 202 | - | ||
| 203 | - // Ajusta valores coletados | ||
| 204 | - $propriedadeSoftware->setDisplayName($arrTagsNames['DisplayName']); | ||
| 205 | - $propriedadeSoftware->setDisplayVersion($arrTagsNames['DisplayVersion']); | ||
| 206 | - $propriedadeSoftware->setURLInfoAbout($arrTagsNames['URLInfoAbout']); | ||
| 207 | - $propriedadeSoftware->setSoftware($softwareObject); | ||
| 208 | - | ||
| 209 | - // Grava no banco de dados | ||
| 210 | - $this->getDoctrine()->getManager()->persist($propriedadeSoftware); | ||
| 211 | - $this->getDoctrine()->getManager()->flush(); | ||
| 212 | - } else { | ||
| 213 | - // Adiciona referência à tabela de softwares | ||
| 214 | - $softwareObject = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->find( $propriedadeSoftware->getSoftware()->getIdSoftware() ); | ||
| 215 | - | ||
| 216 | - // Se não tiver nome coloco o ID Software no nome | ||
| 217 | - if (empty($arrTagsNames['DisplayName'])) { | ||
| 218 | - $softwareObject->setNmSoftware($softwareName); | ||
| 219 | - } else { | ||
| 220 | - $softwareObject->setNmSoftware($arrTagsNames['DisplayName']); | ||
| 221 | - } | ||
| 222 | - | ||
| 223 | - // Grava software recém inserido | ||
| 224 | - $this->getDoctrine()->getManager()->persist($softwareObject); | ||
| 225 | - //$this->getDoctrine()->getManager()->flush(); | ||
| 226 | - | ||
| 227 | - // Ajusta valores coletados | ||
| 228 | - $propriedadeSoftware->setDisplayName($arrTagsNames['DisplayName']); | ||
| 229 | - $propriedadeSoftware->setDisplayVersion($arrTagsNames['DisplayVersion']); | ||
| 230 | - $propriedadeSoftware->setURLInfoAbout($arrTagsNames['URLInfoAbout']); | ||
| 231 | - $propriedadeSoftware->setSoftware($softwareObject); | ||
| 232 | - | ||
| 233 | - // Salva valor da coleta | ||
| 234 | - $this->getDoctrine()->getManager()->persist($propriedadeSoftware); | ||
| 235 | - $this->getDoctrine()->getManager()->flush(); | ||
| 236 | - } | ||
| 237 | - | ||
| 238 | - } | 108 | + $this->coletaSoftware($strNewClassValues, $arrCollectsDefClasses, $strCollectType, $strClassName, $computador); |
| 239 | 109 | ||
| 240 | } elseif (!empty($strNewClassValues)) { | 110 | } elseif (!empty($strNewClassValues)) { |
| 241 | - // Armazeno todas as propriedades dessa classe enviadas pela requisição | ||
| 242 | - $arrTagsNames = TagValueHelper::getTagsFromValues($strNewClassValues); | ||
| 243 | - | ||
| 244 | - // Agora gravo todas as propriedades dessa classe na tabela de computadores | ||
| 245 | - foreach ($arrTagsNames as $classPropertyName) { | ||
| 246 | - $logger->debug("Processando a proriedade WMI $classPropertyName para a classe $strClassName"); | ||
| 247 | - // Pega classe | ||
| 248 | - $idClass = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->findOneBy( array('nmClassName'=>$strClassName) ); | ||
| 249 | - | ||
| 250 | - // Caso a propriedade ainda não esteja cadastrada no banco, crio na hora | ||
| 251 | - if (array_key_exists($classPropertyName, $arrCollectsDefClasses[$strCollectType][$strClassName])) { | ||
| 252 | - // Somente armazeno o valor que já existe | ||
| 253 | - $idClassProperty = $arrCollectsDefClasses[$strCollectType][$strClassName][$classPropertyName]['idClassProperty']; | ||
| 254 | - $logger->debug("Propriedade encontrada: $classPropertyName id_class_property = $idClassProperty. Apenas atualizar"); | ||
| 255 | - } else { | ||
| 256 | - // Se não existir cria a propriedade | ||
| 257 | - $logger->info("Criando propriedade $classPropertyName para a classe $strClassName"); | ||
| 258 | - | ||
| 259 | - $classPropertyObject = new ClassProperty(); | ||
| 260 | - $classPropertyObject->setIdClass($idClass); | ||
| 261 | - $classPropertyObject->setNmPropertyName($classPropertyName); | ||
| 262 | - $classPropertyObject->setTePropertyDescription('On the fly created Property'); | ||
| 263 | - | ||
| 264 | - $this->getDoctrine()->getManager()->persist($classPropertyObject); | ||
| 265 | - $this->getDoctrine()->getManager()->flush(); | ||
| 266 | - | ||
| 267 | - // Finalmente adiciono no array de classes e propriedades | ||
| 268 | - $idClassProperty = $classPropertyObject->getIdClassProperty(); | ||
| 269 | - $property = array( | ||
| 270 | - 'idClassProperty' => $idClassProperty, | ||
| 271 | - 'nmFunctionPreDb' => null | ||
| 272 | - ); | ||
| 273 | - $arrCollectsDefClasses[$strCollectType][$className][$classPropertyName] = $property; | ||
| 274 | - } | ||
| 275 | - //error_log("888888888888888888888888888888888888888888888: $strClassName | $idClassProperty | $classPropertyName"); | ||
| 276 | - | ||
| 277 | - // Chama função que grava a propriedade | ||
| 278 | - $this->gerColsSetProperty($classPropertyName, $strNewClassValues, $idClassProperty, $computador); | ||
| 279 | - } | 111 | + |
| 112 | + $this->coletaGeral($strNewClassValues, $arrCollectsDefClasses, $strCollectType, $strClassName, $computador); | ||
| 113 | + | ||
| 280 | } | 114 | } |
| 281 | } | 115 | } |
| 282 | } | 116 | } |
| 283 | - | ||
| 284 | - // Caso a string acima não esteja vazia, monto o email para notificação | ||
| 285 | - // FIXME: Detectar alteração de dispositivos de hardware e notificar o Administrador | ||
| 286 | - if ($strDeletedItems_Text || $strInsertedItems_Text || $strUpdatedItems_Text ) | ||
| 287 | - { | ||
| 288 | - if ($strDeletedItems_Text) | ||
| 289 | - $strDeletedItems_Text = chr(13) . 'Itens Removidos:' . chr(13) . $strDeletedItems_Text . chr(13); | ||
| 290 | - | ||
| 291 | - if ($strInsertedItems_Text) | ||
| 292 | - $strInsertedItems_Text = chr(13) . 'Itens Inseridos:' . chr(13) . $strInsertedItems_Text . chr(13); | ||
| 293 | - | ||
| 294 | - if ($strUpdatedItems_Text) | ||
| 295 | - $strUpdatedItems_Text = chr(13) . 'Itens Alterados:' . chr(13) . $strUpdatedItems_Text . chr(13); | ||
| 296 | - | ||
| 297 | - | ||
| 298 | - $strCorpoMail = ''; | ||
| 299 | - $strCorpoMail .= " Prezado Administrador,\n\n"; | ||
| 300 | - $strCorpoMail .= " uma alteração foi identificada no computador cujos detalhes encontram-se abaixo discriminados:\n\n"; | ||
| 301 | - $strCorpoMail .= " Nome do Host: ". $computador->getNmComputador() ."\n"; | ||
| 302 | - $strCorpoMail .= " Endereço IP....: ".$computador->getTeIpComputador() . "\n"; | ||
| 303 | - $strCorpoMail .= " Local...............: ". $rede['nmLocal']."\n"; | ||
| 304 | - $strCorpoMail .= " Rede................: ". $rede['nmRede'] . ' (' . $rede['teIpRede'] .")\n\n"; | ||
| 305 | - $strCorpoMail .= $strDeletedItems_Text . $strInsertedItems_Text . $strUpdatedItems_Text; | ||
| 306 | - $strCorpoMail .= "\n\nPara visualizar mais informações sobre esse computador, acesse o endereço\nhttp://"; | ||
| 307 | - $strCorpoMail .= CACIC_PATH . '/relatorios/computador/computador.php?id_computador=' . $computador->getIdComputador(); | ||
| 308 | - $strCorpoMail .= "\n\n\n________________________________________________\n"; | ||
| 309 | - $strCorpoMail .= "CACIC - e" . date('d/m/Y H:i') . "h \n"; | ||
| 310 | -// Manda mail para os administradores. | ||
| 311 | - //TODO mail($resConfigsLocais['te_notificar_mudancas_emails'], "[Sistema CACIC] Alteração Detectada - " . $arrCollectsDefClasses[$strCollectType], "$strCorpoMail", "From: cacic@{$_SERVER['SERVER_NAME']}"); | ||
| 312 | - } | ||
| 313 | } | 117 | } |
| 314 | $teste_object = $this->gravaTESTES($grava_teste."\nFinal"); | 118 | $teste_object = $this->gravaTESTES($grava_teste."\nFinal"); |
| 315 | $em = $this->getDoctrine()->getManager(); | 119 | $em = $this->getDoctrine()->getManager(); |
| @@ -319,6 +123,11 @@ class ColetaController extends Controller | @@ -319,6 +123,11 @@ class ColetaController extends Controller | ||
| 319 | $em->flush(); | 123 | $em->flush(); |
| 320 | //$this->getDoctrine()->getManager()->flush(); //persistencia dos dados no BD | 124 | //$this->getDoctrine()->getManager()->flush(); //persistencia dos dados no BD |
| 321 | 125 | ||
| 126 | + $data_fim = new \DateTime('NOW'); | ||
| 127 | + $tempo = (microtime() - $data); | ||
| 128 | + $data_fim = $data_fim->format('d/m/Y H:i:s'); | ||
| 129 | + $logger->debug("%%% Final da operação de coleta: $data_fim. Tempo de execução da coleta: $tempo %%%"); | ||
| 130 | + | ||
| 322 | $response = new Response(); | 131 | $response = new Response(); |
| 323 | $response->headers->set('Content-Type', 'xml'); | 132 | $response->headers->set('Content-Type', 'xml'); |
| 324 | $cacic_helper = new OldCacicHelper( $this->get('kernel') ); | 133 | $cacic_helper = new OldCacicHelper( $this->get('kernel') ); |
| @@ -409,6 +218,7 @@ class ColetaController extends Controller | @@ -409,6 +218,7 @@ class ColetaController extends Controller | ||
| 409 | } else { | 218 | } else { |
| 410 | //error_log("444444444444444444444444444444444444444444444444: Criando histórico"); | 219 | //error_log("444444444444444444444444444444444444444444444444: Criando histórico"); |
| 411 | // Caso exista, registro um histórico e atualiza o valor atual | 220 | // Caso exista, registro um histórico e atualiza o valor atual |
| 221 | + $coletaOld = "Classe WMI: ".$computadorColeta->getClassProperty()->getIdClass()->getNmClassName()." | "."Propriedade: ".$computadorColeta->getClassProperty()->getNmPropertyName()." | Valor: ".$computadorColeta->getTeClassPropertyValue(); | ||
| 412 | $computadorColeta->setComputador( $computador ); | 222 | $computadorColeta->setComputador( $computador ); |
| 413 | // Pega o objeto para gravar | 223 | // Pega o objeto para gravar |
| 414 | $classPropertyObject = $this->getDoctrine()->getRepository('CacicCommonBundle:ClassProperty')->findOneBy( array( 'idClassProperty'=> $idClassProperty ) ); | 224 | $classPropertyObject = $this->getDoctrine()->getRepository('CacicCommonBundle:ClassProperty')->findOneBy( array( 'idClassProperty'=> $idClassProperty ) ); |
| @@ -434,6 +244,10 @@ class ColetaController extends Controller | @@ -434,6 +244,10 @@ class ColetaController extends Controller | ||
| 434 | 244 | ||
| 435 | // Commit | 245 | // Commit |
| 436 | $this->getDoctrine()->getManager()->flush(); | 246 | $this->getDoctrine()->getManager()->flush(); |
| 247 | + | ||
| 248 | + // Notifica alteração | ||
| 249 | + $coletaNew = "Classe WMI: ".$computadorColeta->getClassProperty()->getIdClass()->getNmClassName()." | "."Propriedade: ".$computadorColeta->getClassProperty()->getNmPropertyName()." | Valor: ".$computadorColeta->getTeClassPropertyValue(); | ||
| 250 | + //$this->notificaAlteracao($coletaOld, $coletaNew, $computador); | ||
| 437 | } | 251 | } |
| 438 | } | 252 | } |
| 439 | 253 | ||
| @@ -677,5 +491,263 @@ class ColetaController extends Controller | @@ -677,5 +491,263 @@ class ColetaController extends Controller | ||
| 677 | 491 | ||
| 678 | } | 492 | } |
| 679 | 493 | ||
| 494 | + /** | ||
| 495 | + * Cria array de classes e propriedades para coletar | ||
| 496 | + * | ||
| 497 | + * @param $detalhesClasses | ||
| 498 | + * @return array | ||
| 499 | + */ | ||
| 500 | + | ||
| 501 | + public function arrayClasses($detalhesClasses, $arrClassesNames) { | ||
| 502 | + $logger = $this->get('logger'); | ||
| 503 | + $output = array(); | ||
| 504 | + | ||
| 505 | + foreach ($detalhesClasses as $detalhe) | ||
| 506 | + { | ||
| 507 | + // Adiciona classe no Array de classes que estão no banco | ||
| 508 | + if (!in_array($detalhe['nmClassName'], $arrClassesNames)) { | ||
| 509 | + array_push($arrClassesNames, $detalhe['nmClassName']); | ||
| 510 | + } | ||
| 511 | + // Primeiro cria array com as informações das propriedades | ||
| 512 | + $property = array( | ||
| 513 | + 'idClassProperty' => $detalhe['idClassProperty'], | ||
| 514 | + 'nmFunctionPreDb' => $detalhe['nmFunctionPreDb'] | ||
| 515 | + ); | ||
| 516 | + | ||
| 517 | + | ||
| 518 | + $nmPropertyName = $detalhe['nmPropertyName']; | ||
| 519 | + $logger->debug("Adicionando propriedade $nmPropertyName no array de propriedades"); | ||
| 520 | + // Aqui o array já existe. Só substituo pelo novo valor | ||
| 521 | + $output[0][$detalhe['nmClassName']][$detalhe['nmPropertyName']] = $property; | ||
| 522 | + } | ||
| 523 | + $output[1] = $arrClassesNames; | ||
| 524 | + | ||
| 525 | + return $output; | ||
| 526 | + } | ||
| 527 | + | ||
| 528 | + /** | ||
| 529 | + * Processa parâmetros da coleta de software | ||
| 530 | + * | ||
| 531 | + * @param $strNewClassValues | ||
| 532 | + * @param $arrCollectsDefClasses | ||
| 533 | + * @param $strCollectType | ||
| 534 | + * @param $strClassName | ||
| 535 | + */ | ||
| 536 | + | ||
| 537 | + public function coletaSoftware($strNewClassValues, $arrCollectsDefClasses, $strCollectType, $strClassName, $computador) { | ||
| 538 | + $logger = $this->get('logger'); | ||
| 539 | + | ||
| 540 | + // Primeiro preciso pegar todas as tags que forem software | ||
| 541 | + $arrSoftware = TagValueHelper::getSoftwareTags($strNewClassValues); | ||
| 542 | + | ||
| 543 | + // Agora insere cada registro de software individualmente | ||
| 544 | + foreach ($arrSoftware as $software) { | ||
| 545 | + // Armazeno todas as propriedades dessa classe enviadas pela requisição | ||
| 546 | + $arrTags = TagValueHelper::getTagsFromValues($software); | ||
| 547 | + | ||
| 548 | + // Crio um array multidimensional com as tags e os valores | ||
| 549 | + foreach ($arrTags as $tagNames) { | ||
| 550 | + // Essa função garante que só serão retornados caracteres com UTF8 Válido | ||
| 551 | + $texto = TagValueHelper::UTF8Sanitize(TagValueHelper::getValueFromTags($tagNames, $software)); | ||
| 552 | + $arrTagsNames[$tagNames] = $texto; | ||
| 553 | + } | ||
| 554 | + | ||
| 555 | + // Para software, cada identificador será uma propriedade | ||
| 556 | + $softwareName = $arrTagsNames['IDSoftware']; | ||
| 557 | + | ||
| 558 | + // Remove o IDSoftware do array | ||
| 559 | + unset($arrTagsNames['IDSoftware']); | ||
| 560 | + | ||
| 561 | + // Armazeno o IDSoftware como Propriedade | ||
| 562 | + $idClassProperty = $arrCollectsDefClasses[$strCollectType][$strClassName][$softwareName]['idClassProperty']; | ||
| 563 | + | ||
| 564 | + // Se o IDSoftware não existir, cria | ||
| 565 | + if (empty($idClassProperty)) { | ||
| 566 | + $logger->debug("Software $softwareName não encontrado. Adicionando um novo software"); | ||
| 567 | + // Pega o Id da classe | ||
| 568 | + $idClass = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->findOneBy( array('nmClassName'=>$strClassName) ); | ||
| 569 | + | ||
| 570 | + $property = new ClassProperty(); | ||
| 571 | + $property->setNmPropertyName($softwareName); | ||
| 572 | + $property->setTePropertyDescription($arrTagsNames['DisplayName']); | ||
| 573 | + | ||
| 574 | + // Referência à classe | ||
| 575 | + $property->setIdClass($idClass); | ||
| 576 | + | ||
| 577 | + // Grava a propriedade nova | ||
| 578 | + $this->getDoctrine()->getManager()->persist($property); | ||
| 579 | + $this->getDoctrine()->getManager()->flush(); | ||
| 580 | + | ||
| 581 | + // Retorna o novo ID | ||
| 582 | + $idClassProperty = $property->getIdClassProperty(); | ||
| 583 | + } | ||
| 584 | + | ||
| 585 | + // Chama função que grava a propriedade | ||
| 586 | + $this->gerColsSetProperty('IDSoftware', $software, $idClassProperty, $computador); | ||
| 587 | + | ||
| 588 | + // Agora gravo todas as propriedades para o software na tabela propriedade_software | ||
| 589 | + $propriedadeSoftware = $this->getDoctrine()->getRepository('CacicCommonBundle:PropriedadeSoftware')->findOneBy( array('classProperty'=> $idClassProperty, 'computador' => $computador) ); | ||
| 590 | + $classPropertyObject = $this->getDoctrine()->getRepository('CacicCommonBundle:ClassProperty')->findOneBy( array( 'idClassProperty'=> $idClassProperty ) ); | ||
| 591 | + | ||
| 592 | + if (empty($propriedadeSoftware)) { | ||
| 593 | + | ||
| 594 | + // Se não tiver nome coloco o ID Software no nome | ||
| 595 | + if (empty($arrTagsNames['DisplayName'])) { | ||
| 596 | + $nmSoftware = $softwareName; | ||
| 597 | + } else { | ||
| 598 | + $nmSoftware = $arrTagsNames['DisplayName']; | ||
| 599 | + } | ||
| 600 | + | ||
| 601 | + | ||
| 602 | + $softwareObject = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->findOneBy( array( 'nmSoftware' => $nmSoftware ) ); | ||
| 603 | + if (empty($softwareObject)) { | ||
| 604 | + $softwareObject = new Software(); | ||
| 605 | + // Grava software recém inserido | ||
| 606 | + $this->getDoctrine()->getManager()->persist($softwareObject); | ||
| 607 | + $this->getDoctrine()->getManager()->flush(); | ||
| 608 | + } | ||
| 609 | + | ||
| 610 | + // Depois adiciono as propriedades | ||
| 611 | + $propriedadeSoftware = new PropriedadeSoftware(); | ||
| 612 | + | ||
| 613 | + $propriedadeSoftware->setClassProperty($classPropertyObject); | ||
| 614 | + $propriedadeSoftware->setComputador($computador); | ||
| 615 | + | ||
| 616 | + // Ajusta valores coletados | ||
| 617 | + $propriedadeSoftware->setDisplayName($arrTagsNames['DisplayName']); | ||
| 618 | + $propriedadeSoftware->setDisplayVersion($arrTagsNames['DisplayVersion']); | ||
| 619 | + $propriedadeSoftware->setURLInfoAbout($arrTagsNames['URLInfoAbout']); | ||
| 620 | + $propriedadeSoftware->setSoftware($softwareObject); | ||
| 621 | + | ||
| 622 | + // Grava no banco de dados | ||
| 623 | + $this->getDoctrine()->getManager()->persist($propriedadeSoftware); | ||
| 624 | + $this->getDoctrine()->getManager()->flush(); | ||
| 625 | + } else { | ||
| 626 | + // Adiciona referência à tabela de softwares | ||
| 627 | + $softwareObject = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->find( $propriedadeSoftware->getSoftware()->getIdSoftware() ); | ||
| 628 | + | ||
| 629 | + // Se não tiver nome coloco o ID Software no nome | ||
| 630 | + if (empty($arrTagsNames['DisplayName'])) { | ||
| 631 | + $softwareObject->setNmSoftware($softwareName); | ||
| 632 | + } else { | ||
| 633 | + $softwareObject->setNmSoftware($arrTagsNames['DisplayName']); | ||
| 634 | + } | ||
| 635 | + | ||
| 636 | + // Grava software recém inserido | ||
| 637 | + $this->getDoctrine()->getManager()->persist($softwareObject); | ||
| 638 | + //$this->getDoctrine()->getManager()->flush(); | ||
| 639 | + | ||
| 640 | + // Ajusta valores coletados | ||
| 641 | + $propriedadeSoftware->setDisplayName($arrTagsNames['DisplayName']); | ||
| 642 | + $propriedadeSoftware->setDisplayVersion($arrTagsNames['DisplayVersion']); | ||
| 643 | + $propriedadeSoftware->setURLInfoAbout($arrTagsNames['URLInfoAbout']); | ||
| 644 | + $propriedadeSoftware->setSoftware($softwareObject); | ||
| 645 | + | ||
| 646 | + // Salva valor da coleta | ||
| 647 | + $this->getDoctrine()->getManager()->persist($propriedadeSoftware); | ||
| 648 | + $this->getDoctrine()->getManager()->flush(); | ||
| 649 | + } | ||
| 650 | + | ||
| 651 | + } | ||
| 652 | + } | ||
| 653 | + | ||
| 654 | + /** | ||
| 655 | + * Processa informações de coleta | ||
| 656 | + * | ||
| 657 | + * @param $strNewClassValues | ||
| 658 | + * @param $arrCollectsDefClasses | ||
| 659 | + * @param $strCollectType | ||
| 660 | + * @param $strClassName | ||
| 661 | + * @param $computador | ||
| 662 | + */ | ||
| 663 | + | ||
| 664 | + public function coletaGeral($strNewClassValues, $arrCollectsDefClasses, $strCollectType, $strClassName, $computador) { | ||
| 665 | + $logger = $this->get('logger'); | ||
| 666 | + $logger->debug("Processando classe WMI: $strClassName"); | ||
| 667 | + | ||
| 668 | + // Armazeno todas as propriedades dessa classe enviadas pela requisição | ||
| 669 | + $arrTagsNames = TagValueHelper::getTagsFromValues($strNewClassValues); | ||
| 670 | + | ||
| 671 | + // Agora gravo todas as propriedades dessa classe na tabela de computadores | ||
| 672 | + foreach ($arrTagsNames as $classPropertyName) { | ||
| 673 | + $logger->debug("Processando a proriedade WMI $classPropertyName para a classe $strClassName"); | ||
| 674 | + // Pega classe | ||
| 675 | + $idClass = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->findOneBy( array('nmClassName'=>$strClassName) ); | ||
| 676 | + | ||
| 677 | + // Caso a propriedade ainda não esteja cadastrada no banco, crio na hora | ||
| 678 | + if (array_key_exists($classPropertyName, $arrCollectsDefClasses[$strCollectType][$strClassName])) { | ||
| 679 | + // Somente armazeno o valor que já existe | ||
| 680 | + $idClassProperty = $arrCollectsDefClasses[$strCollectType][$strClassName][$classPropertyName]['idClassProperty']; | ||
| 681 | + $logger->debug("Propriedade encontrada: $classPropertyName id_class_property = $idClassProperty. Apenas atualizar"); | ||
| 682 | + } else { | ||
| 683 | + // Se não existir cria a propriedade | ||
| 684 | + $logger->info("Criando propriedade $classPropertyName para a classe $strClassName"); | ||
| 685 | + | ||
| 686 | + $classPropertyObject = new ClassProperty(); | ||
| 687 | + $classPropertyObject->setIdClass($idClass); | ||
| 688 | + $classPropertyObject->setNmPropertyName($classPropertyName); | ||
| 689 | + $classPropertyObject->setTePropertyDescription('On the fly created Property'); | ||
| 690 | + | ||
| 691 | + $this->getDoctrine()->getManager()->persist($classPropertyObject); | ||
| 692 | + $this->getDoctrine()->getManager()->flush(); | ||
| 693 | + | ||
| 694 | + // Finalmente adiciono no array de classes e propriedades | ||
| 695 | + $idClassProperty = $classPropertyObject->getIdClassProperty(); | ||
| 696 | + $property = array( | ||
| 697 | + 'idClassProperty' => $idClassProperty, | ||
| 698 | + 'nmFunctionPreDb' => null | ||
| 699 | + ); | ||
| 700 | + | ||
| 701 | + $arrCollectsDefClasses[$strCollectType][$strClassName][$classPropertyName] = $property; | ||
| 702 | + } | ||
| 703 | + //error_log("888888888888888888888888888888888888888888888: $strClassName | $idClassProperty | $classPropertyName"); | ||
| 704 | + | ||
| 705 | + // Chama função que grava a propriedade | ||
| 706 | + $this->gerColsSetProperty($classPropertyName, $strNewClassValues, $idClassProperty, $computador); | ||
| 707 | + } | ||
| 708 | + } | ||
| 709 | + | ||
| 710 | + /** | ||
| 711 | + * Envia notificação de alteração para o administrador do sistema | ||
| 712 | + * | ||
| 713 | + * @param $coletaOld | ||
| 714 | + * @param $coletaNew | ||
| 715 | + * @param $computador | ||
| 716 | + */ | ||
| 717 | + | ||
| 718 | + public function notificaAlteracao($coletaOld, $coletaNew, $computador) { | ||
| 719 | + $configuracoes = $this->getDoctrine()->getRepository('CacicCommonBundle:ConfiguracaoLocal')->findBy( array('idLocal' => $computador->getIdRede()->getIdLocal()) ); | ||
| 720 | + $emailNotificacao = $this->container->getParameter('swiftmailer.sender_address'); | ||
| 721 | + $organizacao = 'Administradores Cacic'; | ||
| 722 | + | ||
| 723 | + foreach ($configuracoes as $detalhe) { | ||
| 724 | + if ($detalhe->getIdConfiguracao() == 'te_notificar_mudanca_hardware') { | ||
| 725 | + $emailNotificacao = $detalhe->getVlConfiguracao(); | ||
| 726 | + } | ||
| 727 | + | ||
| 728 | + if ($detalhe->getIdConfiguracao() == 'nm_organizacao') { | ||
| 729 | + $organizacao = $detalhe->getVlConfiguracao(); | ||
| 730 | + } | ||
| 731 | + } | ||
| 732 | + | ||
| 733 | + | ||
| 734 | + $message = \Swift_Message::newInstance() | ||
| 735 | + ->setSubject("Notificação de alteração de configurações: $organizacao") | ||
| 736 | + ->setFrom($this->container->getParameter('swiftmailer.sender_address')) | ||
| 737 | + ->setTo($emailNotificacao) | ||
| 738 | + ->setBody( | ||
| 739 | + $this->renderView( | ||
| 740 | + 'CacicWSBundle:Coleta:alteracaoMail.txt.twig', | ||
| 741 | + array( | ||
| 742 | + 'coletaOld' => $coletaOld, | ||
| 743 | + 'coletaNew' => $coletaNew, | ||
| 744 | + 'computador' => $computador | ||
| 745 | + ) | ||
| 746 | + ) | ||
| 747 | + ) | ||
| 748 | + ; | ||
| 749 | + | ||
| 750 | + $this->get('mailer')->send($message); | ||
| 751 | + } | ||
| 680 | 752 | ||
| 681 | } | 753 | } |
src/Cacic/WSBundle/Helper/OldCacicHelper.php
| @@ -230,4 +230,14 @@ class OldCacicHelper | @@ -230,4 +230,14 @@ class OldCacicHelper | ||
| 230 | return $intPos; | 230 | return $intPos; |
| 231 | } | 231 | } |
| 232 | 232 | ||
| 233 | + public static function udate($format = 'u', $utimestamp = null) { | ||
| 234 | + if (is_null($utimestamp)) | ||
| 235 | + $utimestamp = microtime(true); | ||
| 236 | + | ||
| 237 | + $timestamp = floor($utimestamp); | ||
| 238 | + $milliseconds = round(($utimestamp - $timestamp) * 1000000); | ||
| 239 | + | ||
| 240 | + return date(preg_replace('`(?<!\\\\)u`', $milliseconds, $format), $timestamp); | ||
| 241 | + } | ||
| 242 | + | ||
| 233 | } | 243 | } |
src/Cacic/WSBundle/Resources/views/Coleta/alteracaoMail.txt.twig
0 → 100644
| @@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
| 1 | +Prezado Administrador, | ||
| 2 | + | ||
| 3 | +Uma alteração foi identificada no computador cujos detalhes encontram-se abaixo discriminados: | ||
| 4 | + | ||
| 5 | +Nome do Host........: {{ computador.getNmComputador() }} | ||
| 6 | +Endereço IP.........: {{ computador.getTeIpComputador() }} | ||
| 7 | +Local...............: {{ computador.getIdRede.getIdLocal.getNmLocal() }} | ||
| 8 | +Rede................: {{ computador.getIdRede.getNmRede() }} ({{ computador.getIdRede.getTeIpRede() }}) | ||
| 9 | + | ||
| 10 | +As seguintes alterações foram detectadas: | ||
| 11 | + | ||
| 12 | +Coleta Anterior..: {{ coletaOld }} | ||
| 13 | +Nova Coleta......: {{ coletaNew }} | ||
| 14 | + | ||
| 15 | +Para visualizar mais informações sobre esse computador, acesse o seguinte endereço: | ||
| 16 | +{{ computador.getIdRede.getTeServCacic() }}{{ path('cacic_computador_detalhar') }}/{{ computador.getIdComputador }} | ||
| 17 | +__________________________________________________________________________ | ||
| 18 | +Data de envio da notificação: {{ "now"|date('d/m/Y H:i') }} | ||
| 0 | \ No newline at end of file | 19 | \ No newline at end of file |