diff --git a/app/AppKernel.php b/app/AppKernel.php
index 02c35a6..8e15930 100644
--- a/app/AppKernel.php
+++ b/app/AppKernel.php
@@ -16,6 +16,7 @@ class AppKernel extends Kernel
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
+ new Symfony\Bundle\WebServerBundle\WebServerBundle(),
new JMS\SerializerBundle\JMSSerializerBundle(),
new Csa\Bundle\GuzzleBundle\CsaGuzzleBundle(),
new Ob\HighchartsBundle\ObHighchartsBundle(),
@@ -40,6 +41,6 @@ class AppKernel extends Kernel
public function registerContainerConfiguration(LoaderInterface $loader)
{
- $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
+ $loader->load($this->getProjectDir().'/app/config/config_'.$this->getEnvironment().'.yml');
}
}
diff --git a/app/config/config.yml b/app/config/config.yml
index 7aa85e9..3b8eaa3 100644
--- a/app/config/config.yml
+++ b/app/config/config.yml
@@ -18,7 +18,7 @@ framework:
#serializer: { enable_annotations: true }
secret: "%secret%"
router:
- resource: "%kernel.root_dir%/config/routing.yml"
+ resource: "%kernel.project_dir%/app/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
@@ -27,7 +27,6 @@ framework:
engines: ['twig']
default_locale: "%locale%"
trusted_hosts: ~
- trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
@@ -67,7 +66,7 @@ doctrine:
DAY: Skobkin\Bundle\PointToolsBundle\DQL\Day
doctrine_migrations:
- dir_name: "%kernel.root_dir%/DoctrineMigrations"
+ dir_name: "%kernel.project_dir%/app/DoctrineMigrations"
namespace: Application\Migrations
table_name: migration_versions
name: Application Migrations
diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml
index d9ff145..d5f0878 100644
--- a/app/config/config_dev.yml
+++ b/app/config/config_dev.yml
@@ -3,7 +3,7 @@ imports:
framework:
router:
- resource: "%kernel.root_dir%/config/routing_dev.yml"
+ resource: "%kernel.project_dir%/app/config/routing_dev.yml"
strict_requirements: true
profiler: { only_exceptions: false }
@@ -18,12 +18,12 @@ monolog:
path: "%kernel.logs_dir%/%kernel.environment%.log"
max_files: 2
level: debug
- channels: [!event]
+ channels: ['!event']
console:
type: console
verbosity_levels:
VERBOSITY_NORMAL: WARNING
- channels: [!event, !doctrine]
+ channels: ['!event', '!doctrine']
# uncomment to get logging in your browser
# you may have to allow bigger header sizes in your Web server configuration
#firephp:
diff --git a/app/config/config_test.yml b/app/config/config_test.yml
index 565af15..aa5d973 100644
--- a/app/config/config_test.yml
+++ b/app/config/config_test.yml
@@ -5,10 +5,10 @@ imports:
doctrine:
dbal:
# todo move to new environment variables: https://symfony.com/blog/new-in-symfony-3-2-runtime-environment-variables
- dbname: "%test_database_name%"
- port: "%test_database_port%"
- user: "%test_database_user%"
- password: "%test_database_password%"
+ dbname: "%env(SYMFONY__TEST_DATABASE_NAME)%"
+ port: "%env(SYMFONY__TEST_DATABASE_PORT)%"
+ user: "%env(SYMFONY__TEST_DATABASE_USER)%"
+ password: "%env(SYMFONY__TEST_DATABASE_PASSWORD)%"
framework:
test: ~
diff --git a/app/config/services.yml b/app/config/services.yml
index 5c76fc5..6a36aa3 100644
--- a/app/config/services.yml
+++ b/app/config/services.yml
@@ -1,9 +1,200 @@
-# Learn more about services, parameters and containers at
-# http://symfony.com/doc/current/book/service_container.html
parameters:
-# parameter_name: value
services:
-# service_name:
-# class: AppBundle\Directory\ClassName
-# arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
+ _defaults:
+ autowire: true
+ autoconfigure: true
+ public: false
+
+ Skobkin\Bundle\PointToolsBundle\:
+ resource: '../../src/Skobkin/Bundle/PointToolsBundle/*'
+ exclude: '../../src/Skobkin/Bundle/PointToolsBundle/{DataFixtures,DependencyInjection,DQL,DTO,Entity,Exception,Repository,Twig}'
+
+ # HTTP clients
+ # Default
+ GuzzleHttp\ClientInterface:
+ alias: app.http.point_client
+
+ # HTTP client for Telegram
+ app.http.telegram_client:
+ class: GuzzleHttp\Client
+ arguments: [{ timeout: 3.0 }]
+ tags:
+ - { name: csa_guzzle.client }
+
+ # HTTP client for Point API
+ app.http.point_client:
+ class: GuzzleHttp\Client
+ arguments: [ { base_uri: '%point_base_url%', timeout: 5.0 } ]
+ tags:
+ - { name: csa_guzzle.client }
+
+
+ # Point API clients
+ # User
+ Skobkin\Bundle\PointToolsBundle\Service\Api\UserApi:
+ tags:
+ - { name: monolog.logger, channel: point_user_api }
+ # Post
+ Skobkin\Bundle\PointToolsBundle\Service\Api\PostApi:
+ tags:
+ - { name: monolog.logger, channel: point_post_api }
+
+
+ # Point subscription manager
+ Skobkin\Bundle\PointToolsBundle\Service\SubscriptionsManager:
+ # TODO deal with autowire for EventDispatcherInterface
+ tags:
+ - { name: monolog.logger, channel: subscribers_update }
+
+ # Controllers
+ Skobkin\Bundle\PointToolsBundle\Controller\:
+ resource: '../../src/Skobkin/Bundle/PointToolsBundle/Controller'
+ public: true
+ tags: ['controller.service_arguments']
+
+ Skobkin\Bundle\PointToolsBundle\Controller\MainController:
+ arguments:
+ $appUserId: '%point_id%'
+ $appUserLogin: '%point_login%'
+
+ Skobkin\Bundle\PointToolsBundle\Controller\Api\CrawlerController:
+ arguments:
+ $crawlerToken: '%crawler_token%'
+
+ Skobkin\Bundle\PointToolsBundle\Controller\Telegram\WebHookController:
+ arguments:
+ $telegramToken: '%telegram_token%'
+ $debug: '%kernel.debug%'
+
+
+ # Console commands
+ # @todo https://github.com/symfony/symfony/blob/3.4/UPGRADE-3.4.md#httpkernel
+ # Subsribers update
+ Skobkin\Bundle\PointToolsBundle\Command\UpdateSubscriptionsCommand:
+ arguments:
+ $apiDelay: '%point_api_delay%'
+ $appUserId: '%point_id%'
+ tags:
+ - { name: console.command }
+ - { name: monolog.logger, channel: subscribers_update }
+ # Privacy update
+ Skobkin\Bundle\PointToolsBundle\Command\UpdateUsersPrivacyCommand:
+ arguments:
+ $apiDelay: '%point_api_delay%'
+ $appUserId: '%point_id%'
+ tags:
+ - { name: console.command }
+ - { name: monolog.logger, channel: privacy_update }
+ # Restore users removed by error
+ Skobkin\Bundle\PointToolsBundle\Command\RestoreRemovedUsersCommand:
+ arguments:
+ $apiDelay: '%point_api_delay%'
+ tags:
+ - { name: console.command }
+ # Webhook management
+ Skobkin\Bundle\PointToolsBundle\Command\TelegramWebHookCommand:
+ arguments:
+ $telegramToken: '%telegram_token%'
+ $telegramWebhookMaxConnections: '%telegram_max_connections%'
+ tags: [{ name: console.command }]
+ # Send message
+ Skobkin\Bundle\PointToolsBundle\Command\TelegramSendMessageCommand:
+ arguments:
+ $logChatId: '%telegram_log_chat_id%'
+ tags: [{ name: console.command }]
+
+
+ # Entity repositories as services
+ # User
+ Skobkin\Bundle\PointToolsBundle\Repository\UserRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\User']
+ # Subscription
+ Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Subscription']
+ # Subscription record/event
+ Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\SubscriptionEvent']
+
+ # Subscription record/event
+ Skobkin\Bundle\PointToolsBundle\Repository\UserRenameEventRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\UserRenameEvent']
+ # Post repository
+ Skobkin\Bundle\PointToolsBundle\Repository\Blogs\PostRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Post']
+ # Comment repository
+ Skobkin\Bundle\PointToolsBundle\Repository\Blogs\CommentRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Comment']
+ # Tag repository
+ Skobkin\Bundle\PointToolsBundle\Repository\Blogs\TagRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Tag']
+ # File repository
+ Skobkin\Bundle\PointToolsBundle\Repository\Blogs\FileRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\File']
+ # Telegram Account repository
+ Skobkin\Bundle\PointToolsBundle\Repository\Telegram\AccountRepository:
+ factory: 'doctrine:getRepository'
+ arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Telegram\Account']
+
+ # Custom Markdown parser
+ app.point.markdown_parser:
+ class: Skobkin\Bundle\PointToolsBundle\Service\Markdown\PointParser
+ arguments: [[], '@router']
+ tags:
+ - { name: markdown.parser }
+
+
+ # Event listeners
+ # User name changed in Doctrine
+ Skobkin\Bundle\PointToolsBundle\EventListener\UsersUpdatedSubscriber:
+ tags:
+ - { name: doctrine.event_subscriber, connection: default }
+ # User renaming
+ Skobkin\Bundle\PointToolsBundle\EventListener\UsersRenamedListener:
+ tags:
+ - { name: kernel.event_listener, event: app.users.renamed }
+ # User subscribers updated
+ Skobkin\Bundle\PointToolsBundle\EventListener\UserSubscribersUpdatedListener:
+ tags:
+ - { name: kernel.event_listener, event: app.user.subscribers_updated }
+
+
+ # Twig extensions
+ Skobkin\Bundle\PointToolsBundle\Twig\PointUrlExtension:
+ arguments:
+ $pointDomain: '%point_domain%'
+ $pointScheme: '%point_scheme%'
+ $pointBaseUrl: '%point_base_url%'
+
+ # Telegram services
+ # Bot API client
+ unreal4u\TelegramAPI\TgLog:
+ arguments:
+ $client: '@app.http.telegram_client'
+ $botToken: '%telegram_token%'
+ # Logger API client
+ app.telegram.logger_client:
+ class: unreal4u\TelegramAPI\TgLog
+ arguments:
+ $botToken: '%telegram_token%'
+ $logger: null
+ $client: '@app.http.telegram_client'
+
+ # Monolog handler
+ unreal4u\MonologHandler:
+ arguments:
+ $chatId: '%telegram_log_chat_id%'
+ $level: 'error'
+
+ # Private message processor
+ Skobkin\Bundle\PointToolsBundle\Service\Telegram\PrivateMessageProcessor:
+ arguments:
+ $appUserId: '%point_id%'
diff --git a/app/crontab b/app/crontab
index f4f29a6..f79f4b6 100644
--- a/app/crontab
+++ b/app/crontab
@@ -1,10 +1,10 @@
-# Point-Tools
-# Subscriptions
# Primary subscribers
-*/10 * * * * flock -n /tmp/point_tools_sub_update.lock timeout 300 /usr/bin/php /var/www/point-tools/current/app/console point:update:subscriptions --env=prod
-# App users
-0 0 * * * flock -n /tmp/point_tools_sub_update_all.lock timeout 3600 /usr/bin/php /var/www/point-tools/current/app/console point:update:subscriptions --all-users --env=prod
+*/10 * * * * flock -n /tmp/point_tools_sub_update.lock timeout 300 /usr/bin/php /var/www/point.skobk.in/current/app/console point:update:subscriptions --env=prod
+# All users
+0 0 * * * flock -n /tmp/point_tools_sub_update_all.lock timeout 3600 /usr/bin/php /var/www/point.skobk.in/current/app/console point:update:subscriptions --all-users --env=prod
+# Privacy
+0 1 * * * flock -n /tmp/point_tools_privacy_update_all.lock timeout 3600 /usr/bin/php /var/www/point.skobk.in/current/app/console point:update:privacy --all-users --env=prod
# Other
# Restore users deleted by mistake
-0 0 */7 * * flock -n /tmp/point_tools_restore_users.lock timeout 300 /usr/bin/php /var/www/point-tools/current/app/console point:users:restore --env=prod
+0 0 */7 * * flock -n /tmp/point_tools_restore_users.lock timeout 300 /usr/bin/php /var/www/point.skobk.in/current/app/console point:users:restore --env=prod
diff --git a/composer.json b/composer.json
index cf8531b..c07a4d1 100644
--- a/composer.json
+++ b/composer.json
@@ -8,29 +8,32 @@
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"autoload-dev": {
- "psr-4": { "Tests\\": "tests/" }
+ "psr-4": { "Tests\\": "tests/" },
+ "files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ]
},
"require": {
- "php": ">=7.0.0",
- "symfony/symfony": "3.2.*",
+ "php": ">=7.1.0",
+ "symfony/symfony": "3.4.x-dev",
"doctrine/orm": "^2.5",
"doctrine/annotations": "^1.3.0",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"doctrine/doctrine-migrations-bundle": "^1.0",
+ "twig/twig": "^2.0",
"twig/extensions": "~1.0",
- "symfony/swiftmailer-bundle": "^2.3.10",
- "symfony/monolog-bundle": "^3.0.2",
- "sensio/distribution-bundle": "^5.0",
- "sensio/framework-extra-bundle": "^3.0.2",
+ "symfony/swiftmailer-bundle": "^2.6.4",
+ "symfony/monolog-bundle": "^3.1.0",
+ "sensio/distribution-bundle": "^5.0.19",
+ "sensio/framework-extra-bundle": "^5.0.0",
"incenteev/composer-parameter-handler": "^2.0",
"ob/highcharts-bundle": "^1.2",
"jms/serializer-bundle": "^1.1",
"knplabs/knp-markdown-bundle": "^1.4",
"knplabs/knp-paginator-bundle": "^2.5",
"unreal4u/telegram-api": "^2.2",
- "csa/guzzle-bundle": "^2.1",
- "unreal4u/monolog-telegram": "^0.2.0"
+ "csa/guzzle-bundle": "3.0.x-dev",
+ "unreal4u/monolog-telegram": "^0.2.0",
+ "symfony/web-server-bundle": "^3.3"
},
"require-dev": {
"sensio/generator-bundle": "^3.0",
@@ -60,12 +63,13 @@
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
+ "symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
- "dev-master": "3.2-dev"
+ "dev-master": "3.4-dev"
}
}
}
diff --git a/composer.lock b/composer.lock
index a48366a..cef67f8 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "88274224cc9dfe36d847acf69d5924d8",
+ "content-hash": "71a9b3759d77d9b4770ae1aedcda61c6",
"packages": [
{
"name": "composer/ca-bundle",
@@ -67,24 +67,24 @@
},
{
"name": "csa/guzzle-bundle",
- "version": "v2.2.1",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/csarrazi/CsaGuzzleBundle.git",
- "reference": "bbe54641ad6171dc562034f2824f7c18cec80ca4"
+ "reference": "6b10e6f318ea6a20fa32cfcda471bd0bbebcdb96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/csarrazi/CsaGuzzleBundle/zipball/bbe54641ad6171dc562034f2824f7c18cec80ca4",
- "reference": "bbe54641ad6171dc562034f2824f7c18cec80ca4",
+ "url": "https://api.github.com/repos/csarrazi/CsaGuzzleBundle/zipball/6b10e6f318ea6a20fa32cfcda471bd0bbebcdb96",
+ "reference": "6b10e6f318ea6a20fa32cfcda471bd0bbebcdb96",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "^6.1",
- "php": ">=5.5.0",
- "symfony/dependency-injection": "^2.7|^3.0",
- "symfony/filesystem": "^2.7|^3.0",
- "symfony/framework-bundle": "^2.7|^3.0",
+ "php": ">=5.6.0",
+ "symfony/dependency-injection": "^2.7|^3.0|^4.0",
+ "symfony/filesystem": "^2.7|^3.0|^4.0",
+ "symfony/framework-bundle": "^2.7|^3.0|^4.0",
"twig/twig": "^1.12|^2.0"
},
"require-dev": {
@@ -92,8 +92,9 @@
"namshi/cuzzle": "^2.0",
"phpunit/phpunit": "^4.8",
"psr/cache": "^1.0",
- "symfony/phpunit-bridge": "^2.7|^3.0",
- "symfony/web-profiler-bundle": "^2.3|^3.0"
+ "symfony/phpunit-bridge": "^2.7|^3.0|^4.0",
+ "symfony/stopwatch": "^2.7|^3.0|^4.0",
+ "symfony/web-profiler-bundle": "^2.3|^3.0|^4.0"
},
"suggest": {
"doctrine/cache": "Allows caching of responses",
@@ -124,7 +125,7 @@
}
],
"description": "A bundle integrating GuzzleHttp >= 4.0",
- "time": "2017-03-27T07:49:26+00:00"
+ "time": "2017-10-29T11:18:46+00:00"
},
{
"name": "doctrine/annotations",
@@ -652,31 +653,31 @@
},
{
"name": "doctrine/doctrine-migrations-bundle",
- "version": "v1.2.1",
+ "version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
- "reference": "6276139e0b913a4e5120fc36bb5b0eae8ac549bc"
+ "reference": "a9e506369f931351a2a6dd2aef588a822802b1b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/6276139e0b913a4e5120fc36bb5b0eae8ac549bc",
- "reference": "6276139e0b913a4e5120fc36bb5b0eae8ac549bc",
+ "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/a9e506369f931351a2a6dd2aef588a822802b1b7",
+ "reference": "a9e506369f931351a2a6dd2aef588a822802b1b7",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "~1.0",
"doctrine/migrations": "^1.1",
"php": ">=5.4.0",
- "symfony/framework-bundle": "~2.3|~3.0"
+ "symfony/framework-bundle": "~2.7|~3.3|~4.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.8"
+ "phpunit/phpunit": "^4.8.36"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
- "dev-master": "1.2-dev"
+ "dev-master": "1.3-dev"
}
},
"autoload": {
@@ -709,7 +710,7 @@
"migrations",
"schema"
],
- "time": "2016-12-05T18:36:37+00:00"
+ "time": "2017-11-01T09:13:26+00:00"
},
{
"name": "doctrine/inflector",
@@ -1036,6 +1037,60 @@
],
"time": "2017-10-23T18:21:04+00:00"
},
+ {
+ "name": "fig/link-util",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/link-util.git",
+ "reference": "1a07821801a148be4add11ab0603e4af55a72fac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac",
+ "reference": "1a07821801a148be4add11ab0603e4af55a72fac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0",
+ "psr/link": "~1.0@dev"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.1",
+ "squizlabs/php_codesniffer": "^2.3.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fig\\Link\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common utility implementations for HTTP links",
+ "keywords": [
+ "http",
+ "http-link",
+ "link",
+ "psr",
+ "psr-13",
+ "rest"
+ ],
+ "time": "2016-10-17T18:31:11+00:00"
+ },
{
"name": "guzzlehttp/guzzle",
"version": "6.3.0",
@@ -2249,6 +2304,55 @@
],
"time": "2016-08-06T20:24:11+00:00"
},
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
{
"name": "psr/http-message",
"version": "1.0.1",
@@ -2299,6 +2403,55 @@
],
"time": "2016-08-06T14:39:51+00:00"
},
+ {
+ "name": "psr/link",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/link.git",
+ "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562",
+ "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Link\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for HTTP links",
+ "keywords": [
+ "http",
+ "http-link",
+ "link",
+ "psr",
+ "psr-13",
+ "rest"
+ ],
+ "time": "2016-10-28T16:06:13+00:00"
+ },
{
"name": "psr/log",
"version": "1.0.2",
@@ -2346,6 +2499,54 @@
],
"time": "2016-10-10T12:19:37+00:00"
},
+ {
+ "name": "psr/simple-cache",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24",
+ "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "time": "2017-01-02T13:31:39+00:00"
+ },
{
"name": "sensio/distribution-bundle",
"version": "v5.0.21",
@@ -2400,38 +2601,37 @@
},
{
"name": "sensio/framework-extra-bundle",
- "version": "v3.0.28",
+ "version": "v5.0.1",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
- "reference": "65eadf9e3fd5c47eee7986b306a5aed8affe6496"
+ "reference": "9e3fa14aa959f703961bc9e4ab00110d617bcfdd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/65eadf9e3fd5c47eee7986b306a5aed8affe6496",
- "reference": "65eadf9e3fd5c47eee7986b306a5aed8affe6496",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/9e3fa14aa959f703961bc9e4ab00110d617bcfdd",
+ "reference": "9e3fa14aa959f703961bc9e4ab00110d617bcfdd",
"shasum": ""
},
"require": {
- "doctrine/common": "~2.2",
- "symfony/dependency-injection": "~2.3|~3.0",
- "symfony/framework-bundle": "~2.3|~3.0|~4.0"
+ "doctrine/common": "^2.2",
+ "symfony/config": "^3.3|^4.0",
+ "symfony/dependency-injection": "^3.3|^4.0",
+ "symfony/framework-bundle": "^3.3|^4.0",
+ "symfony/http-kernel": "^3.3|^4.0"
},
"require-dev": {
- "doctrine/doctrine-bundle": "~1.5",
- "doctrine/orm": "~2.4,>=2.4.5",
- "symfony/asset": "~2.7|~3.0|~4.0",
- "symfony/browser-kit": "~2.3|~3.0|~4.0",
- "symfony/dom-crawler": "~2.3|~3.0|~4.0",
- "symfony/expression-language": "~2.4|~3.0|~4.0",
- "symfony/finder": "~2.3|~3.0|~4.0",
- "symfony/phpunit-bridge": "~3.2|~4.0",
- "symfony/psr-http-message-bridge": "^0.3|^1.0",
- "symfony/security-bundle": "~2.4|~3.0|~4.0",
- "symfony/templating": "~2.3|~3.0|~4.0",
- "symfony/translation": "~2.3|~3.0|~4.0",
- "symfony/twig-bundle": "~2.3|~3.0|~4.0",
- "symfony/yaml": "~2.3|~3.0|~4.0",
+ "doctrine/doctrine-bundle": "^1.6",
+ "doctrine/orm": "^2.5",
+ "symfony/browser-kit": "^3.3|^4.0",
+ "symfony/dom-crawler": "^3.3|^4.0",
+ "symfony/expression-language": "^3.3|^4.0",
+ "symfony/finder": "^3.3|^4.0",
+ "symfony/phpunit-bridge": "^3.3|^4.0",
+ "symfony/psr-http-message-bridge": "^0.3",
+ "symfony/security-bundle": "^3.3|^4.0",
+ "symfony/twig-bundle": "^3.3|^4.0",
+ "symfony/yaml": "^3.3|^4.0",
"twig/twig": "~1.12|~2.0",
"zendframework/zend-diactoros": "^1.3"
},
@@ -2443,7 +2643,7 @@
"type": "symfony-bundle",
"extra": {
"branch-alias": {
- "dev-master": "3.0.x-dev"
+ "dev-master": "4.0.x-dev"
}
},
"autoload": {
@@ -2466,7 +2666,7 @@
"annotations",
"controllers"
],
- "time": "2017-10-12T17:37:20+00:00"
+ "time": "2017-10-12T17:37:44+00:00"
},
{
"name": "sensiolabs/security-checker",
@@ -2627,6 +2827,62 @@
],
"time": "2017-09-26T03:17:02+00:00"
},
+ {
+ "name": "symfony/polyfill-apcu",
+ "version": "v1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-apcu.git",
+ "reference": "04f62674339602def515bff4bc6901fc1d4951e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/04f62674339602def515bff4bc6901fc1d4951e8",
+ "reference": "04f62674339602def515bff4bc6901fc1d4951e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Apcu\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "apcu",
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2017-10-11T12:05:26+00:00"
+ },
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.6.0",
@@ -2972,38 +3228,46 @@
},
{
"name": "symfony/symfony",
- "version": "v3.2.13",
+ "version": "3.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/symfony.git",
- "reference": "e1aabd6f50fb4586b330f9ac54b4bcdf7352a0f8"
+ "reference": "e973c247c8acd032a5ee72418452c3a255d5e321"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/symfony/zipball/e1aabd6f50fb4586b330f9ac54b4bcdf7352a0f8",
- "reference": "e1aabd6f50fb4586b330f9ac54b4bcdf7352a0f8",
+ "url": "https://api.github.com/repos/symfony/symfony/zipball/e973c247c8acd032a5ee72418452c3a255d5e321",
+ "reference": "e973c247c8acd032a5ee72418452c3a255d5e321",
"shasum": ""
},
"require": {
"doctrine/common": "~2.4",
"ext-xml": "*",
- "php": ">=5.5.9",
+ "fig/link-util": "^1.0",
+ "php": "^5.5.9|>=7.0.8",
"psr/cache": "~1.0",
+ "psr/container": "^1.0",
+ "psr/link": "^1.0",
"psr/log": "~1.0",
+ "psr/simple-cache": "^1.0",
+ "symfony/polyfill-apcu": "~1.1",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php56": "~1.0",
- "symfony/polyfill-php70": "~1.0",
+ "symfony/polyfill-php70": "~1.6",
"symfony/polyfill-util": "~1.0",
- "twig/twig": "~1.34|~2.4"
+ "twig/twig": "^1.35|^2.4.4"
},
"conflict": {
- "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0",
- "phpdocumentor/type-resolver": "<0.2.0",
+ "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
+ "phpdocumentor/type-resolver": "<0.2.1",
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"provide": {
- "psr/cache-implementation": "1.0"
+ "psr/cache-implementation": "1.0",
+ "psr/container-implementation": "1.0",
+ "psr/log-implementation": "1.0",
+ "psr/simple-cache-implementation": "1.0"
},
"replace": {
"symfony/asset": "self.version",
@@ -3018,6 +3282,7 @@
"symfony/dependency-injection": "self.version",
"symfony/doctrine-bridge": "self.version",
"symfony/dom-crawler": "self.version",
+ "symfony/dotenv": "self.version",
"symfony/event-dispatcher": "self.version",
"symfony/expression-language": "self.version",
"symfony/filesystem": "self.version",
@@ -3029,6 +3294,7 @@
"symfony/inflector": "self.version",
"symfony/intl": "self.version",
"symfony/ldap": "self.version",
+ "symfony/lock": "self.version",
"symfony/monolog-bridge": "self.version",
"symfony/options-resolver": "self.version",
"symfony/process": "self.version",
@@ -3050,12 +3316,15 @@
"symfony/twig-bundle": "self.version",
"symfony/validator": "self.version",
"symfony/var-dumper": "self.version",
+ "symfony/web-link": "self.version",
"symfony/web-profiler-bundle": "self.version",
+ "symfony/web-server-bundle": "self.version",
"symfony/workflow": "self.version",
"symfony/yaml": "self.version"
},
"require-dev": {
"cache/integration-tests": "dev-master",
+ "doctrine/annotations": "~1.0",
"doctrine/cache": "~1.6",
"doctrine/data-fixtures": "1.0.*",
"doctrine/dbal": "~2.4",
@@ -3064,17 +3333,15 @@
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
"monolog/monolog": "~1.11",
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
- "phpdocumentor/reflection-docblock": "^3.0",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0",
"predis/predis": "~1.0",
- "sensio/framework-extra-bundle": "^3.0.2",
"symfony/phpunit-bridge": "~3.2",
- "symfony/polyfill-apcu": "~1.1",
"symfony/security-acl": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.2-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -3112,7 +3379,7 @@
"keywords": [
"framework"
],
- "time": "2017-08-01T09:40:44+00:00"
+ "time": "2017-11-03T14:14:19+00:00"
},
{
"name": "twig/extensions",
@@ -3713,22 +3980,22 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "3.1.1",
+ "version": "4.1.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
+ "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
- "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2d3d238c433cf69caeb4842e97a3223a116f94b2",
+ "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2",
"shasum": ""
},
"require": {
- "php": ">=5.5",
+ "php": "^7.0",
"phpdocumentor/reflection-common": "^1.0@dev",
- "phpdocumentor/type-resolver": "^0.2.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
"webmozart/assert": "^1.0"
},
"require-dev": {
@@ -3754,24 +4021,24 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2016-09-30T07:12:33+00:00"
+ "time": "2017-08-30T18:51:59+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "0.2.1",
+ "version": "0.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
- "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
"shasum": ""
},
"require": {
- "php": ">=5.5",
+ "php": "^5.5 || ^7.0",
"phpdocumentor/reflection-common": "^1.0"
},
"require-dev": {
@@ -3801,7 +4068,7 @@
"email": "me@mikevanriel.com"
}
],
- "time": "2016-11-25T06:54:22+00:00"
+ "time": "2017-07-14T14:27:02+00:00"
},
{
"name": "phpspec/prophecy",
@@ -4938,11 +5205,14 @@
],
"aliases": [],
"minimum-stability": "stable",
- "stability-flags": [],
+ "stability-flags": {
+ "symfony/symfony": 20,
+ "csa/guzzle-bundle": 20
+ },
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": ">=7.0.0"
+ "php": ">=7.1.0"
},
"platform-dev": []
}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index c68d857..33daeb3 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -5,11 +5,12 @@
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
backupGlobals="false"
colors="true"
- bootstrap="app/autoload.php"
+ bootstrap="vendor/autoload.php"
+ convertNoticesToExceptions="false"
>
-
+
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Command/ImportUsersCommand.php b/src/Skobkin/Bundle/PointToolsBundle/Command/ImportUsersCommand.php
index a5bd800..1f76a38 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Command/ImportUsersCommand.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Command/ImportUsersCommand.php
@@ -2,11 +2,10 @@
namespace Skobkin\Bundle\PointToolsBundle\Command;
+use Doctrine\ORM\{EntityManager, EntityManagerInterface};
use Skobkin\Bundle\PointToolsBundle\Entity\User;
-use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\{InputInterface, InputArgument, InputOption};
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Filesystem\Filesystem;
@@ -19,8 +18,18 @@ use Symfony\Component\Filesystem\Filesystem;
* WHERE u.id <> (-1)
* ) TO '/tmp/point_users.csv' WITH HEADER DELIMITER '|' CSV;
*/
-class ImportUsersCommand extends ContainerAwareCommand
+class ImportUsersCommand extends Command
{
+ /** @var EntityManager */
+ private $em;
+
+ public function __construct(EntityManagerInterface $em)
+ {
+ $this->em = $em;
+
+ parent::__construct();
+ }
+
protected function configure()
{
$this
@@ -48,7 +57,6 @@ class ImportUsersCommand extends ContainerAwareCommand
protected function execute(InputInterface $input, OutputInterface $output)
{
- $em = $this->getContainer()->get('doctrine.orm.entity_manager');
$fs = new Filesystem();
$fileName = $input->getArgument('file');
@@ -80,9 +88,9 @@ class ImportUsersCommand extends ContainerAwareCommand
$user = new User($row[0], $createdAt, $row[1], $row[2]);
if (!$input->getOption('check-only')) {
- $em->persist($user);
- $em->flush($user);
- $em->detach($user);
+ $this->em->persist($user);
+ $this->em->flush($user);
+ $this->em->detach($user);
}
if (OutputInterface::VERBOSITY_VERBOSE === $output->getVerbosity()) {
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Command/RestoreRemovedUsersCommand.php b/src/Skobkin/Bundle/PointToolsBundle/Command/RestoreRemovedUsersCommand.php
index 07e0d2e..2a82868 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Command/RestoreRemovedUsersCommand.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Command/RestoreRemovedUsersCommand.php
@@ -14,31 +14,22 @@ use Symfony\Component\Console\Output\OutputInterface;
class RestoreRemovedUsersCommand extends Command
{
- /**
- * @var LoggerInterface
- */
+ /** @var LoggerInterface */
private $logger;
- /**
- * @var EntityManagerInterface
- */
+
+ /** @var EntityManagerInterface */
private $em;
- /**
- * @var UserRepository
- */
+ /** @var UserRepository */
private $userRepo;
- /**
- * @var UserApi
- */
+ /** @var UserApi */
private $userApi;
- /**
- * @var int
- */
+ /** @var int */
private $delay;
- public function __construct(LoggerInterface $logger, EntityManagerInterface $em, UserRepository $userRepo, UserApi $userApi, int $delay)
+ public function __construct(LoggerInterface $logger, EntityManagerInterface $em, UserRepository $userRepo, UserApi $userApi, int $apiDelay)
{
parent::__construct();
@@ -46,7 +37,7 @@ class RestoreRemovedUsersCommand extends Command
$this->em = $em;
$this->userRepo = $userRepo;
$this->userApi = $userApi;
- $this->delay = $delay;
+ $this->delay = $apiDelay;
}
/**
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramSendMessageCommand.php b/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramSendMessageCommand.php
index 9e8ccb5..562cbac 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramSendMessageCommand.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramSendMessageCommand.php
@@ -3,35 +3,24 @@
namespace Skobkin\Bundle\PointToolsBundle\Command;
use Skobkin\Bundle\PointToolsBundle\Service\Telegram\MessageSender;
-use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\{InputArgument, InputInterface, InputOption};
use Symfony\Component\Console\Output\OutputInterface;
-class TelegramSendMessageCommand extends ContainerAwareCommand
+class TelegramSendMessageCommand extends Command
{
- /**
- * @var MessageSender
- */
+ /** @var MessageSender */
private $messenger;
- /**
- * @var int
- */
+ /** @var int */
private $logChatId;
- public function setMessenger(MessageSender $messenger): void
+ public function __construct(MessageSender $messenger, int $logChatId)
{
$this->messenger = $messenger;
- }
-
- /**
- * @param int $logChatId
- */
- public function setLogChatId(int $logChatId): void
- {
$this->logChatId = $logChatId;
+
+ parent::__construct();
}
/**
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramWebHookCommand.php b/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramWebHookCommand.php
index 7945873..794edd2 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramWebHookCommand.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Command/TelegramWebHookCommand.php
@@ -2,63 +2,42 @@
namespace Skobkin\Bundle\PointToolsBundle\Command;
-use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
-use Symfony\Bundle\FrameworkBundle\Routing\Router;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\{InputArgument, InputInterface};
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-use unreal4u\TelegramAPI\Telegram\Methods\DeleteWebhook;
-use unreal4u\TelegramAPI\Telegram\Methods\SetWebhook;
+use unreal4u\TelegramAPI\Telegram\Methods\{DeleteWebhook, SetWebhook};
use unreal4u\TelegramAPI\TgLog;
/**
* Sets or deletes Telegram bot Web-Hook
* @see https://core.telegram.org/bots/api#setwebhook
*/
-class TelegramWebHookCommand extends ContainerAwareCommand
+class TelegramWebHookCommand extends Command
{
private const MODE_SET = 'set';
private const MODE_DELETE = 'delete';
- /**
- * @var TgLog
- */
+ /** @var TgLog */
private $client;
- /**
- * @var Router
- */
+ /** @var UrlGeneratorInterface */
private $router;
- /**
- * @var string
- */
+ /** @var string */
private $token;
- /**
- * @var int
- */
+ /** @var int */
private $maxConnections;
- public function setClient(TgLog $client): void
+ public function __construct(TgLog $client, UrlGeneratorInterface $router, string $telegramToken, int $telegramWebhookMaxConnections)
{
+ parent::__construct();
+
$this->client = $client;
- }
-
- public function setRouter(Router $router): void
- {
$this->router = $router;
- }
-
- public function setToken(string $token): void
- {
- $this->token = $token;
- }
-
- public function setMaxConnections(int $maxConnections)
- {
- $this->maxConnections = $maxConnections;
+ $this->token = $telegramToken;
+ $this->maxConnections = $telegramWebhookMaxConnections;
}
/**
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateSubscriptionsCommand.php b/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateSubscriptionsCommand.php
index ad1458a..f90555b 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateSubscriptionsCommand.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateSubscriptionsCommand.php
@@ -8,7 +8,7 @@ use Skobkin\Bundle\PointToolsBundle\Entity\{Subscription, User};
use Skobkin\Bundle\PointToolsBundle\Exception\Api\UserNotFoundException;
use Skobkin\Bundle\PointToolsBundle\Repository\UserRepository;
use Skobkin\Bundle\PointToolsBundle\Service\{SubscriptionsManager, Api\UserApi};
-use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
+use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\{InputInterface, InputOption};
use Symfony\Component\Console\Output\OutputInterface;
@@ -16,51 +16,33 @@ use Symfony\Component\Console\Output\OutputInterface;
/**
* @todo https://symfony.com/doc/current/console/lockable_trait.html
*/
-class UpdateSubscriptionsCommand extends ContainerAwareCommand
+class UpdateSubscriptionsCommand extends Command
{
- /**
- * @var EntityManagerInterface
- */
+ /** @var EntityManagerInterface */
private $em;
- /**
- * @var LoggerInterface
- */
+ /** @var LoggerInterface */
private $logger;
- /**
- * @var UserRepository
- */
+ /** @var UserRepository */
private $userRepo;
- /**
- * @var InputInterface
- */
+ /** @var InputInterface */
private $input;
- /**
- * @var UserApi
- */
+ /** @var UserApi */
private $api;
- /**
- * @var int
- */
+ /** @var int */
private $apiDelay = 500000;
- /**
- * @var int
- */
+ /** @var int */
private $appUserId;
- /**
- * @var SubscriptionsManager
- */
+ /** @var SubscriptionsManager */
private $subscriptionManager;
- /**
- * @var ProgressBar
- */
+ /** @var ProgressBar */
private $progress;
public function __construct(
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateUsersPrivacyCommand.php b/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateUsersPrivacyCommand.php
index 1410aba..7ea7b62 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateUsersPrivacyCommand.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Command/UpdateUsersPrivacyCommand.php
@@ -8,12 +8,12 @@ use Skobkin\Bundle\PointToolsBundle\Entity\{Subscription, User};
use Skobkin\Bundle\PointToolsBundle\Exception\Api\{ForbiddenException, UserNotFoundException};
use Skobkin\Bundle\PointToolsBundle\Repository\UserRepository;
use Skobkin\Bundle\PointToolsBundle\Service\Api\UserApi;
-use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
+use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\{InputInterface, InputOption};
use Symfony\Component\Console\Output\OutputInterface;
-class UpdateUsersPrivacyCommand extends ContainerAwareCommand
+class UpdateUsersPrivacyCommand extends Command
{
/** @var EntityManagerInterface */
private $em;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/AbstractApiController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/AbstractApiController.php
index fef7b9b..e132080 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/AbstractApiController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/AbstractApiController.php
@@ -2,10 +2,10 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller\Api;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
-class AbstractApiController extends Controller
+class AbstractApiController extends AbstractController
{
protected function createSuccessResponse($data, int $code = 200): Response
{
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/CrawlerController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/CrawlerController.php
index c1f9906..bf6dd03 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/CrawlerController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/Api/CrawlerController.php
@@ -2,33 +2,37 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller\Api;
+use Doctrine\ORM\EntityManagerInterface;
+use JMS\Serializer\SerializerInterface;
use Skobkin\Bundle\PointToolsBundle\DTO\Api\PostsPage;
use Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs\PostFactory;
use Symfony\Component\HttpFoundation\{Request, Response};
class CrawlerController extends AbstractApiController
{
- public function receiveAllPageAction(Request $request): Response
+ /** @var string */
+ private $crawlerToken;
+
+ public function __construct(string $crawlerToken)
+ {
+ $this->crawlerToken = $crawlerToken;
+ }
+
+ public function receiveAllPageAction(Request $request, SerializerInterface $serializer, PostFactory $postFactory, EntityManagerInterface $em): Response
{
$remoteToken = $request->request->get('token');
- $localToken = $this->getParameter('crawler_token');
- if (!$localToken || ($localToken !== $remoteToken)) {
+ if (!$this->crawlerToken || ($this->crawlerToken !== $remoteToken)) {
return $this->createErrorResponse('Token error. Please check it in crawler and API parameters.', Response::HTTP_FORBIDDEN);
}
$json = $request->request->get('json');
- $serializer = $this->get('jms_serializer');
-
$page = $serializer->deserialize($json, PostsPage::class, 'json');
-
- /** @var PostFactory $factory */
- $factory = $this->get('app.point.post_factory');
- $continue = $factory->createFromPageDTO($page);
+ $continue = $postFactory->createFromPageDTO($page);
- $this->getDoctrine()->getManager()->flush();
+ $em->flush();
return $this->createSuccessResponse([
'continue' => $continue,
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/ApiController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/ApiController.php
index 77d8502..9af3b96 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/ApiController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/ApiController.php
@@ -3,21 +3,21 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
-use Skobkin\Bundle\PointToolsBundle\Entity\SubscriptionEvent;
-use Skobkin\Bundle\PointToolsBundle\Entity\User;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Skobkin\Bundle\PointToolsBundle\Entity\{SubscriptionEvent, User};
+use Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository;
+use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
-class ApiController extends Controller
+class ApiController
{
/**
* Returns last user subscribers log
*
* @ParamConverter("user", class="SkobkinPointToolsBundle:User")
*/
- public function lastUserSubscribersByIdAction(User $user): Response
+ public function lastUserSubscribersByIdAction(User $user, SubscriptionEventRepository $subscriptionEventRepository): Response
{
- $qb = $this->getDoctrine()->getRepository('SkobkinPointToolsBundle:SubscriptionEvent')->createQueryBuilder('se');
+ $qb = $subscriptionEventRepository->createQueryBuilder('se');
$qb
->select(['se', 'sub'])
->innerJoin('se.subscriber', 'sub')
@@ -38,6 +38,6 @@ class ApiController extends Controller
];
}
- return $this->json($data);
+ return new JsonResponse($data);
}
}
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/EventsController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/EventsController.php
index c5f0777..c715117 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/EventsController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/EventsController.php
@@ -2,23 +2,17 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller;
-use Doctrine\ORM\EntityManager;
-use Doctrine\ORM\QueryBuilder;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
+use Knp\Component\Pager\Paginator;
+use Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\HttpFoundation\{Request, Response};
-class EventsController extends Controller
+class EventsController extends AbstractController
{
- public function lastAction(Request $request): Response
+ public function lastAction(Request $request, SubscriptionEventRepository $eventRepository, Paginator $paginator): Response
{
- /** @var EntityManager $em */
- $em = $this->getDoctrine()->getManager();
-
- $paginator = $this->get('knp_paginator');
-
$eventsPagination = $paginator->paginate(
- $em->getRepository('SkobkinPointToolsBundle:SubscriptionEvent')->createLastSubscriptionEventsQuery(),
+ $eventRepository->createLastSubscriptionEventsQuery(),
$request->query->getInt('page', 1),
20
);
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php
index 07340bc..a6c5cfc 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/MainController.php
@@ -4,18 +4,33 @@ namespace Skobkin\Bundle\PointToolsBundle\Controller;
use Doctrine\ORM\EntityManager;
use Skobkin\Bundle\PointToolsBundle\Form\UserSearchType;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Skobkin\Bundle\PointToolsBundle\Repository\{SubscriptionEventRepository, SubscriptionRepository, UserRepository};
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\FormError;
-use Symfony\Component\HttpFoundation\JsonResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\{JsonResponse, Request, Response};
-class MainController extends Controller
+class MainController extends AbstractController
{
const AJAX_AUTOCOMPLETE_SIZE = 10;
- public function indexAction(Request $request): Response
+ /** @var int */
+ private $appUserId;
+
+ /** @var string */
+ private $appUserLogin;
+
+ public function __construct(int $appUserId, string $appUserLogin)
{
+ $this->appUserId = $appUserId;
+ $this->appUserLogin = $appUserLogin;
+ }
+
+ public function indexAction(
+ Request $request,
+ UserRepository $userRepository,
+ SubscriptionRepository $subscriptionRepository,
+ SubscriptionEventRepository $subscriptionEventRepository
+ ): Response {
/** @var EntityManager $em */
$em = $this->getDoctrine()->getManager();
@@ -32,7 +47,7 @@ class MainController extends Controller
if ($form->isSubmitted() && $form->isValid()) {
$login = $form->get('login')->getData();
- if (null !== $user = $em->getRepository('SkobkinPointToolsBundle:User')->findOneBy(['login' => $login])) {
+ if (null !== $user = $userRepository->findOneBy(['login' => $login])) {
return $this->redirectToRoute('user_show', ['login' => $login]);
}
@@ -42,10 +57,10 @@ class MainController extends Controller
return $this->render('SkobkinPointToolsBundle:Main:index.html.twig', [
'form' => $form->createView(),
'autocomplete_size' => self::AJAX_AUTOCOMPLETE_SIZE,
- 'users_count' => $em->getRepository('SkobkinPointToolsBundle:User')->getUsersCount(),
- 'subscribers_count' => $em->getRepository('SkobkinPointToolsBundle:Subscription')->getUserSubscribersCountById($this->getParameter('point_id')),
- 'events_count' => $em->getRepository('SkobkinPointToolsBundle:SubscriptionEvent')->getLastDayEventsCount(),
- 'service_login' => $this->getParameter('point_login'),
+ 'users_count' => $userRepository->getUsersCount(),
+ 'subscribers_count' => $subscriptionRepository->getUserSubscribersCountById($this->appUserId),
+ 'events_count' => $subscriptionEventRepository->getLastDayEventsCount(),
+ 'service_login' => $this->appUserLogin,
]);
}
@@ -56,13 +71,13 @@ class MainController extends Controller
*
* @return JsonResponse
*/
- public function searchUserAjaxAction(string $login): Response
+ public function searchUserAjaxAction(string $login, UserRepository $userRepository): Response
{
$em = $this->getDoctrine()->getManager();
$result = [];
- foreach ($em->getRepository('SkobkinPointToolsBundle:User')->findUsersLikeLogin($login, self::AJAX_AUTOCOMPLETE_SIZE) as $user) {
+ foreach ($userRepository->findUsersLikeLogin($login, self::AJAX_AUTOCOMPLETE_SIZE) as $user) {
$result[] = [
'login' => $user->getLogin(),
'name' => $user->getName(),
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/PostController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/PostController.php
index 2617387..2022d2e 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/PostController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/PostController.php
@@ -3,21 +3,22 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller;
use Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Post;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Skobkin\Bundle\PointToolsBundle\Repository\Blogs\PostRepository;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\HttpFoundation\Response;
-class PostController extends Controller
+class PostController extends AbstractController
{
/**
* @ParamConverter("post", class="SkobkinPointToolsBundle:Blogs\Post")
*
* @return Response
*/
- public function showAction(Post $post): Response
+ public function showAction(Post $post, PostRepository $postRepository): Response
{
return $this->render('SkobkinPointToolsBundle:Post:show.html.twig', [
- 'post' => $this->getDoctrine()->getRepository('SkobkinPointToolsBundle:Blogs\Post')->getPostWithComments($post->getId()),
+ 'post' => $postRepository->getPostWithComments($post->getId()),
]);
}
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/PublicFeedController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/PublicFeedController.php
index b858f65..0295fb6 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/PublicFeedController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/PublicFeedController.php
@@ -2,21 +2,17 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller;
-use Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Post;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Knp\Component\Pager\Paginator;
+use Skobkin\Bundle\PointToolsBundle\Repository\Blogs\PostRepository;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
-class PublicFeedController extends Controller
+class PublicFeedController extends AbstractController
{
private const POSTS_PER_PAGE = 20;
- public function indexAction(Request $request)
+ public function indexAction(Request $request, PostRepository $postRepository, Paginator $paginator)
{
- // @todo autowire
- $postRepository = $this->getDoctrine()->getRepository(Post::class);
-
- $paginator = $this->get('knp_paginator');
-
$postsPagination = $paginator->paginate(
$postRepository->createPublicFeedPostsQuery(),
$request->query->getInt('page', 1),
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/Telegram/WebHookController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/Telegram/WebHookController.php
index 4e2f1a2..10d03be 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/Telegram/WebHookController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/Telegram/WebHookController.php
@@ -2,25 +2,35 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller\Telegram;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
-use Symfony\Component\HttpFoundation\JsonResponse;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
+use Skobkin\Bundle\PointToolsBundle\Service\Telegram\IncomingUpdateDispatcher;
+use Symfony\Bridge\Monolog\Logger;
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\HttpFoundation\{JsonResponse, Request, Response};
use unreal4u\TelegramAPI\Telegram\Types\Update;
/**
* {@inheritdoc}
*/
-class WebHookController extends Controller
+class WebHookController extends AbstractController
{
- public function receiveUpdateAction(Request $request, string $token): Response
+ /** @var string */
+ private $telegramToken;
+
+ /** @var bool */
+ private $debug;
+
+ public function __construct(string $telegramToken, bool $debug)
{
- if ($token !== $savedToken = $this->getParameter('telegram_token')) {
+ $this->telegramToken = $telegramToken;
+ $this->debug = $debug;
+ }
+
+ public function receiveUpdateAction(Request $request, string $token, IncomingUpdateDispatcher $updateDispatcher, Logger $logger): Response
+ {
+ if ($token !== $savedToken = $this->telegramToken) {
throw $this->createNotFoundException();
}
- $logger = $this->get('logger');
-
$content = json_decode($request->getContent(), true);
$update = new Update(
@@ -29,9 +39,9 @@ class WebHookController extends Controller
);
try {
- $this->get('app.telegram.update_dispatcher')->process($update);
+ $updateDispatcher->process($update);
} catch (\Exception $e) {
- if ($this->getParameter('kernel.debug')) {
+ if ($this->debug) {
throw $e;
}
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php b/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php
index a3704e5..3948946 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Controller/UserController.php
@@ -2,52 +2,61 @@
namespace Skobkin\Bundle\PointToolsBundle\Controller;
-use Doctrine\ORM\EntityManager;
+use Knp\Component\Pager\Paginator;
use Skobkin\Bundle\PointToolsBundle\DTO\{DailyEvents, TopUserDTO};
use Skobkin\Bundle\PointToolsBundle\Entity\User;
-use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Skobkin\Bundle\PointToolsBundle\Repository\{SubscriptionEventRepository, UserRenameEventRepository, UserRepository};
+use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Ob\HighchartsBundle\Highcharts\Highchart;
use Symfony\Component\HttpFoundation\{Request, Response};
+use Symfony\Component\Translation\TranslatorInterface;
-class UserController extends Controller
+class UserController extends AbstractController
{
+ /** @var TranslatorInterface */
+ private $translator;
+
+ public function __construct(TranslatorInterface $translator)
+ {
+ $this->translator = $translator;
+ }
+
/**
* @param string $login
*/
- public function showAction(Request $request, string $login): Response
- {
- /** @var EntityManager $em */
- $em = $this->getDoctrine()->getManager();
-
+ public function showAction(
+ Request $request,
+ string $login,
+ SubscriptionEventRepository $subscriptionEventRepository,
+ UserRepository $userRepository,
+ UserRenameEventRepository $renameEventRepository,
+ Paginator $paginator
+ ): Response {
/** @var User $user */
- $user = $em->getRepository('SkobkinPointToolsBundle:User')->findUserByLogin($login);
+ $user = $userRepository->findUserByLogin($login);
if (!$user) {
throw $this->createNotFoundException('User ' . $login . ' not found.');
}
- $paginator = $this->get('knp_paginator');
-
$subscriberEventsPagination = $paginator->paginate(
- $em->getRepository('SkobkinPointToolsBundle:SubscriptionEvent')->createUserLastSubscribersEventsQuery($user),
+ $subscriptionEventRepository->createUserLastSubscribersEventsQuery($user),
$request->query->getInt('page', 1),
10
);
return $this->render('SkobkinPointToolsBundle:User:show.html.twig', [
'user' => $user,
- 'subscribers' => $em->getRepository('SkobkinPointToolsBundle:User')->findUserSubscribersById($user->getId()),
+ 'subscribers' => $userRepository->findUserSubscribersById($user->getId()),
'subscriptions_log' => $subscriberEventsPagination,
- 'rename_log' => $em->getRepository('SkobkinPointToolsBundle:UserRenameEvent')->findBy(['user' => $user], ['date' => 'DESC'], 10),
+ 'rename_log' => $renameEventRepository->findBy(['user' => $user], ['date' => 'DESC'], 10),
]);
}
- public function topAction(): Response
+ public function topAction(UserRepository $userRepository, SubscriptionEventRepository $subscriptionEventRepository): Response
{
- $userRepo = $this->getDoctrine()->getManager()->getRepository('SkobkinPointToolsBundle:User');
- $subscriptionsRecordsRepo = $this->getDoctrine()->getManager()->getRepository('SkobkinPointToolsBundle:SubscriptionEvent');
- $topUsers = $userRepo->getTopUsers();
- $eventsByDay = $subscriptionsRecordsRepo->getLastEventsByDay();
+ $topUsers = $userRepository->getTopUsers();
+ $eventsByDay = $subscriptionEventRepository->getLastEventsByDay();
return $this->render('@SkobkinPointTools/User/top.html.twig', [
'events_dynamic_chat' => $this->createEventsDynamicChart($eventsByDay),
@@ -89,8 +98,6 @@ class UserController extends Controller
private function createChart(string $blockId, string $type, array $data, string $bottomLabel, string $amountLabel): Highchart
{
- $translator = $this->get('translator');
-
$chartData = [
'keys' => [],
'values' => [],
@@ -104,7 +111,7 @@ class UserController extends Controller
// Chart
$series = [[
- 'name' => $translator->trans($amountLabel),
+ 'name' => $this->translator->trans($amountLabel),
'data' => $chartData['values'],
]];
@@ -112,10 +119,10 @@ class UserController extends Controller
$ob = new Highchart();
$ob->chart->renderTo($blockId);
$ob->chart->type($type);
- $ob->title->text($translator->trans($bottomLabel));
+ $ob->title->text($this->translator->trans($bottomLabel));
$ob->xAxis->title(['text' => null]);
$ob->xAxis->categories($chartData['keys']);
- $ob->yAxis->title(['text' => $translator->trans($amountLabel)]);
+ $ob->yAxis->title(['text' => $this->translator->trans($amountLabel)]);
$ob->plotOptions->bar([
'dataLabels' => [
'enabled' => true
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Entity/Telegram/Account.php b/src/Skobkin/Bundle/PointToolsBundle/Entity/Telegram/Account.php
index d4762be..410b66f 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Entity/Telegram/Account.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Entity/Telegram/Account.php
@@ -142,11 +142,12 @@ class Account
return $this->firstName;
}
- public function setFirstName(string $firstName): Account
+ public function updateFromMessageData(string $firstName, ?string $lastName, ?string $username, int $chatId): void
{
$this->firstName = $firstName;
-
- return $this;
+ $this->lastName = $lastName;
+ $this->username = $username;
+ $this->chatId = $chatId;
}
public function getLastName(): ?string
@@ -154,32 +155,11 @@ class Account
return $this->lastName;
}
- public function setLastName(?string $lastName = null): Account
- {
- $this->lastName = $lastName;
-
- return $this;
- }
-
public function getUsername(): string
{
return $this->username;
}
- public function setUsername(string $username = null): Account
- {
- $this->username = $username;
-
- return $this;
- }
-
- public function setChatId(int $chatId): self
- {
- $this->chatId = $chatId;
-
- return $this;
- }
-
public function getChatId(): int
{
return $this->chatId;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Entity/User.php b/src/Skobkin/Bundle/PointToolsBundle/Entity/User.php
index 9a9fa04..1b7dc0a 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Entity/User.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Entity/User.php
@@ -157,7 +157,7 @@ class User
/**
* @return Subscription[]|ArrayCollection
*/
- public function getSubscribers(): ArrayCollection
+ public function getSubscribers(): iterable
{
return $this->subscribers;
}
@@ -165,7 +165,7 @@ class User
/**
* @return Subscription[]|ArrayCollection
*/
- public function getSubscriptions(): ArrayCollection
+ public function getSubscriptions(): iterable
{
return $this->subscriptions;
}
@@ -180,7 +180,7 @@ class User
/**
* @return SubscriptionEvent[]|ArrayCollection
*/
- public function getNewSubscriberEvents(): ArrayCollection
+ public function getNewSubscriberEvents(): iterable
{
return $this->newSubscriberEvents;
}
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRenameEvent.php b/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRenameEvent.php
index 1d8e94e..fdc5f89 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRenameEvent.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Entity/UserRenameEvent.php
@@ -9,7 +9,7 @@ use Doctrine\ORM\Mapping as ORM;
* @ORM\Index(name="idx_rename_log_date", columns={"date"}),
* @ORM\Index(name="idx_rename_log_old_login", columns={"old_login"})
* })
- * @ORM\Entity(readOnly=true)
+ * @ORM\Entity(repositoryClass="Skobkin\Bundle\PointToolsBundle\Repository\UserRenameEventRepository", readOnly=true)
*/
class UserRenameEvent
{
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Repository/UserRenameEventRepository.php b/src/Skobkin/Bundle/PointToolsBundle/Repository/UserRenameEventRepository.php
new file mode 100644
index 0000000..812c644
--- /dev/null
+++ b/src/Skobkin/Bundle/PointToolsBundle/Repository/UserRenameEventRepository.php
@@ -0,0 +1,14 @@
+getEntityManager()->persist($event);
+ }
+}
\ No newline at end of file
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Resources/config/services.yml b/src/Skobkin/Bundle/PointToolsBundle/Resources/config/services.yml
index deb75da..0baad47 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Resources/config/services.yml
+++ b/src/Skobkin/Bundle/PointToolsBundle/Resources/config/services.yml
@@ -1,275 +1 @@
services:
- # HTTP client for Telegram
- app.http.telegram_client:
- class: GuzzleHttp\Client
- arguments: [{ timeout: 3.0 }]
- tags:
- - { name: csa_guzzle.client }
-
- # HTTP client for Point API
- app.http.point_client:
- class: GuzzleHttp\Client
- autowiring_types: GuzzleHttp\ClientInterface
- arguments: [ { base_uri: '%point_base_url%', timeout: 5.0 } ]
- tags:
- - { name: csa_guzzle.client }
-
-
- # Point API clients
- # Abstract API client with common dependency
- app.point.abstract_api:
- abstract: true
- autowire: true
- # User
- app.point.api_user:
- class: Skobkin\Bundle\PointToolsBundle\Service\Api\UserApi
- parent: app.point.abstract_api
- autowire: true
- tags:
- - { name: monolog.logger, channel: point_user_api }
- # Post
- app.point.api_post:
- class: Skobkin\Bundle\PointToolsBundle\Service\Api\PostApi
- parent: app.point.abstract_api
- autowire: true
- tags:
- - { name: monolog.logger, channel: point_post_api }
-
-
- # Point subscription manager
- app.point.subscriptions_manager:
- class: Skobkin\Bundle\PointToolsBundle\Service\SubscriptionsManager
- # TODO deal with autowire for EventDispatcherInterface
- arguments:
- - '@event_dispatcher'
- - '@logger'
- - '@app.point.subscription_repository'
- - '@app.point.subscription_record_repository'
- tags:
- - { name: monolog.logger, channel: subscribers_update }
-
-
- # Console commands
- # Subsribers update
- app.point.update_subscribers_command:
- class: Skobkin\Bundle\PointToolsBundle\Command\UpdateSubscriptionsCommand
- arguments:
- - '@doctrine.orm.entity_manager'
- - '@logger'
- - '@app.point.user_repository'
- - '@app.point.api_user'
- - '@app.point.subscriptions_manager'
- - '%point_api_delay%'
- - '%point_id%'
- tags:
- - { name: console.command }
- - { name: monolog.logger, channel: subscribers_update }
- # Privacy update
- app.point.update_privacy_command:
- class: Skobkin\Bundle\PointToolsBundle\Command\UpdateUsersPrivacyCommand
- #autowire: []
- arguments:
- - '@doctrine.orm.entity_manager'
- - '@logger'
- - '@app.point.user_repository'
- - '@app.point.api_user'
- - '%point_api_delay%'
- - '%point_id%'
- tags:
- - { name: console.command }
- - { name: monolog.logger, channel: privacy_update }
- # Restore users removed by error
- app.point.restore_users:
- class: Skobkin\Bundle\PointToolsBundle\Command\RestoreRemovedUsersCommand
- arguments:
- - '@logger'
- - '@doctrine.orm.entity_manager'
- - '@app.point.user_repository'
- - '@app.point.api_user'
- - '%point_api_delay%'
- tags:
- - { name: console.command }
- # Webhook management
- app.telegram.webhook_command:
- class: Skobkin\Bundle\PointToolsBundle\Command\TelegramWebHookCommand
- #autowire: []
- calls:
- - [setClient, ['@app.telegram.bot_client']]
- - [setRouter, ['@router']]
- - [setToken, ['%telegram_token%']]
- tags: [{ name: console.command }]
- # Send message
- app.telegram.send_message:
- class: Skobkin\Bundle\PointToolsBundle\Command\TelegramSendMessageCommand
- #autowire: []
- calls:
- - [setMessenger, ['@app.telegram.message_sender']]
- - [setLogChatId, ['%telegram_log_chat_id%']]
- tags: [{ name: console.command }]
-
-
- # Entity repositories as services
- # User
- app.point.user_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\UserRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\User']
- # Subscription
- app.point.subscription_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Subscription']
- # Subscription record/event
- app.point.subscription_record_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\SubscriptionEvent']
- # Post repository
- app.point.post_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\Blogs\PostRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Post']
- # Comment repository
- app.point.comment_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\Blogs\CommentRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Comment']
- # Tag repository
- app.point.tag_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\Blogs\TagRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Tag']
- # File repository
- app.point.file_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\Blogs\FileRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Blogs\File']
- # Telegram Account repository
- app.point.telegram_account_repository:
- class: Skobkin\Bundle\PointToolsBundle\Repository\Telegram\AccountRepository
- factory: 'doctrine:getRepository'
- arguments: ['Skobkin\Bundle\PointToolsBundle\Entity\Telegram\Account']
-
-
- # Factories
- # Abstract factory
- app.point.abstract_factory:
- abstract: true
- autowire: true
- # User
- app.point.user_factory:
- class: Skobkin\Bundle\PointToolsBundle\Service\Factory\UserFactory
- parent: app.point.abstract_factory
- autowire: true
- # Comment
- app.point.comment_factory:
- class: Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs\CommentFactory
- parent: app.point.abstract_factory
- autowire: true
- # Tag
- app.point.tag_factory:
- class: Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs\TagFactory
- parent: app.point.abstract_factory
- autowire: true
- # File
- app.point.file_factory:
- class: Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs\FileFactory
- parent: app.point.abstract_factory
- autowire: true
- # Post
- app.point.post_factory:
- class: Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs\PostFactory
- parent: app.point.abstract_factory
- autowire: true
- # Telegram account
- app.telegram.telegram_account_factory:
- class: Skobkin\Bundle\PointToolsBundle\Service\Factory\Telegram\AccountFactory
- parent: app.point.abstract_factory
- autowire: true
-
-
- # Custom Markdown parser
- app.point.markdown_parser:
- class: Skobkin\Bundle\PointToolsBundle\Service\Markdown\PointParser
- arguments: [[], '@router']
- tags:
- - { name: markdown.parser }
-
-
- # Event listeners
- # User name changed in Doctrine
- app.event_listener.users_updated:
- class: Skobkin\Bundle\PointToolsBundle\EventListener\UsersUpdatedSubscriber
- arguments: ['@event_dispatcher']
- tags:
- - { name: doctrine.event_subscriber, connection: default }
- # User renaming
- app.event_listener.users_renamed_notifier:
- class: Skobkin\Bundle\PointToolsBundle\EventListener\UsersRenamedListener
- autowire: true
- tags:
- - { name: kernel.event_listener, event: app.users.renamed }
- # User subscribers updated
- app.event_listener.user_subscribers_updated:
- class: Skobkin\Bundle\PointToolsBundle\EventListener\UserSubscribersUpdatedListener
- autowire: true
- tags:
- - { name: kernel.event_listener, event: app.user.subscribers_updated }
-
-
- # Twig extensions
- app.twig.point_users_extension:
- class: Skobkin\Bundle\PointToolsBundle\Twig\PointUrlExtension
- public: false
- arguments:
- - '%point_domain%'
- - '%point_scheme%'
- - '%point_base_url%'
- tags:
- - { name: twig.extension }
-
-
- # Telegram services
- # Bot API client
- app.telegram.bot_client:
- class: unreal4u\TelegramAPI\TgLog
- autowiring_types: unreal4u\TelegramAPI\TgLog
- arguments: ['%telegram_token%', '@logger', '@app.http.telegram_client']
- # Logger API client
- app.telegram.logger_client:
- class: unreal4u\TelegramAPI\TgLog
- arguments: ['%telegram_token%', null, '@app.http.telegram_client']
-
- # Monolog handler
- app.log.telegram_handler:
- class: unreal4u\MonologHandler
- arguments:
- - '@app.telegram.logger_client'
- - '%telegram_log_chat_id%'
- - 'error'
-
- # User notifier
- app.telegram.notifier:
- class: Skobkin\Bundle\PointToolsBundle\Service\Telegram\Notifier
- autowire: true
-
- # Message sender
- app.telegram.message_sender:
- class: Skobkin\Bundle\PointToolsBundle\Service\Telegram\MessageSender
- autowire: true
- # Common incoming message processor
- app.telegram.update_dispatcher:
- class: Skobkin\Bundle\PointToolsBundle\Service\Telegram\IncomingUpdateDispatcher
- autowire: true
- # InlineQuery processor
- app.telegram.inline_query_processor:
- class: Skobkin\Bundle\PointToolsBundle\Service\Telegram\InlineQueryProcessor
- lazy: true
- autowire: true
- # Private message processor
- app.telegram.private_message_processor:
- class: Skobkin\Bundle\PointToolsBundle\Service\Telegram\PrivateMessageProcessor
- lazy: true
- autowire: true
- calls:
- - [setPointUserId, ['%point_id%']]
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Api/AbstractApi.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Api/AbstractApi.php
index 73dc076..10be5a7 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Api/AbstractApi.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Api/AbstractApi.php
@@ -4,7 +4,9 @@ namespace Skobkin\Bundle\PointToolsBundle\Service\Api;
use GuzzleHttp\ClientInterface;
use GuzzleHttp\Exception\TransferException;
-use JMS\Serializer\{DeserializationContext, Serializer};
+use JMS\Serializer\{
+ DeserializationContext, SerializerInterface
+};
use Psr\Http\Message\{ResponseInterface, StreamInterface};
use Psr\Log\LoggerInterface;
use Skobkin\Bundle\PointToolsBundle\Exception\Api\{ForbiddenException, NetworkException, NotFoundException, ServerProblemException, UnauthorizedException};
@@ -18,7 +20,7 @@ class AbstractApi
protected $client;
/**
- * @var Serializer
+ * @var SerializerInterface
*/
protected $serializer;
@@ -38,7 +40,7 @@ class AbstractApi
protected $csRfToken;
- public function __construct(ClientInterface $httpClient, Serializer $serializer, LoggerInterface $logger)
+ public function __construct(ClientInterface $httpClient, SerializerInterface $serializer, LoggerInterface $logger)
{
$this->client = $httpClient;
$this->serializer = $serializer;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Api/PostApi.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Api/PostApi.php
index 69b5812..e9875a4 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Api/PostApi.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Api/PostApi.php
@@ -3,7 +3,7 @@
namespace Skobkin\Bundle\PointToolsBundle\Service\Api;
use GuzzleHttp\ClientInterface;
-use JMS\Serializer\Serializer;
+use JMS\Serializer\SerializerInterface;
use Psr\Log\LoggerInterface;
use Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs\PostFactory;
@@ -18,7 +18,7 @@ class PostApi extends AbstractApi
private $postFactory;
- public function __construct(ClientInterface $httpClient, Serializer $serializer, LoggerInterface $logger, PostFactory $postFactory)
+ public function __construct(ClientInterface $httpClient, SerializerInterface $serializer, LoggerInterface $logger, PostFactory $postFactory)
{
parent::__construct($httpClient, $serializer, $logger);
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Api/UserApi.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Api/UserApi.php
index 7bf6404..fc265e0 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Api/UserApi.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Api/UserApi.php
@@ -3,7 +3,9 @@
namespace Skobkin\Bundle\PointToolsBundle\Service\Api;
use GuzzleHttp\ClientInterface;
-use JMS\Serializer\{DeserializationContext, Serializer};
+use JMS\Serializer\{
+ DeserializationContext, SerializerInterface
+};
use Psr\Log\LoggerInterface;
use Skobkin\Bundle\PointToolsBundle\DTO\Api\{Auth, User as UserDTO};
use Skobkin\Bundle\PointToolsBundle\Entity\User;
@@ -22,7 +24,7 @@ class UserApi extends AbstractApi
*/
private $userFactory;
- public function __construct(ClientInterface $httpClient, Serializer $serializer, LoggerInterface $logger, UserFactory $userFactory)
+ public function __construct(ClientInterface $httpClient, SerializerInterface $serializer, LoggerInterface $logger, UserFactory $userFactory)
{
parent::__construct($httpClient, $serializer, $logger);
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/CommentFactory.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/CommentFactory.php
index f15e753..8223692 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/CommentFactory.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/CommentFactory.php
@@ -3,26 +3,18 @@
namespace Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs;
use Psr\Log\LoggerInterface;
-use Skobkin\Bundle\PointToolsBundle\Repository\Blogs\CommentRepository;
-use Skobkin\Bundle\PointToolsBundle\Repository\Blogs\PostRepository;
-use Skobkin\Bundle\PointToolsBundle\Service\Factory\AbstractFactory;
-use Skobkin\Bundle\PointToolsBundle\Service\Factory\UserFactory;
+use Skobkin\Bundle\PointToolsBundle\Repository\Blogs\{CommentRepository, PostRepository};
+use Skobkin\Bundle\PointToolsBundle\Service\Factory\{AbstractFactory, UserFactory};
class CommentFactory extends AbstractFactory
{
- /**
- * @var CommentRepository
- */
+ /** @var CommentRepository */
private $commentRepository;
- /**
- * @var PostRepository
- */
+ /** @var PostRepository */
private $postRepository;
- /**
- * @var UserFactory
- */
+ /** @var UserFactory */
private $userFactory;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/FileFactory.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/FileFactory.php
index 60fff56..83170e3 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/FileFactory.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/FileFactory.php
@@ -10,9 +10,7 @@ use Skobkin\Bundle\PointToolsBundle\Service\Factory\AbstractFactory;
class FileFactory extends AbstractFactory
{
- /**
- * @var FileRepository
- */
+ /** @var FileRepository */
private $fileRepository;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/PostFactory.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/PostFactory.php
index 8ecbc67..ef6e5f4 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/PostFactory.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/PostFactory.php
@@ -4,48 +4,30 @@ namespace Skobkin\Bundle\PointToolsBundle\Service\Factory\Blogs;
use Doctrine\ORM\EntityManagerInterface;
use Psr\Log\LoggerInterface;
-use Skobkin\Bundle\PointToolsBundle\DTO\Api\MetaPost;
-use Skobkin\Bundle\PointToolsBundle\DTO\Api\Post as PostDTO;
-use Skobkin\Bundle\PointToolsBundle\DTO\Api\PostsPage;
-use Skobkin\Bundle\PointToolsBundle\Entity\Blogs\Post;
-use Skobkin\Bundle\PointToolsBundle\Entity\Blogs\PostTag;
-use Skobkin\Bundle\PointToolsBundle\Entity\User;
-use Skobkin\Bundle\PointToolsBundle\Exception\Factory\Blog\InvalidDataException;
+use Skobkin\Bundle\PointToolsBundle\DTO\Api\{MetaPost, Post as PostDTO, PostsPage};
+use Skobkin\Bundle\PointToolsBundle\Entity\{Blogs\Post, Blogs\PostTag, User};
+use Skobkin\Bundle\PointToolsBundle\Exception\{Api\InvalidResponseException, Factory\Blog\InvalidDataException};
use Skobkin\Bundle\PointToolsBundle\Repository\Blogs\PostRepository;
-use Skobkin\Bundle\PointToolsBundle\Exception\Api\InvalidResponseException;
-use Skobkin\Bundle\PointToolsBundle\Service\Factory\AbstractFactory;
-use Skobkin\Bundle\PointToolsBundle\Service\Factory\UserFactory;
+use Skobkin\Bundle\PointToolsBundle\Service\Factory\{AbstractFactory, UserFactory};
class PostFactory extends AbstractFactory
{
- /**
- * @var EntityManagerInterface
- */
+ /** @var EntityManagerInterface */
private $em;
- /**
- * @var PostRepository
- */
+ /** @var PostRepository */
private $postRepository;
- /**
- * @var UserFactory
- */
+ /** @var UserFactory */
private $userFactory;
- /**
- * @var FileFactory
- */
+ /** @var FileFactory */
private $fileFactory;
- /**
- * @var CommentFactory
- */
+ /** @var CommentFactory */
private $commentFactory;
- /**
- * @var TagFactory
- */
+ /** @var TagFactory */
private $tagFactory;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/TagFactory.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/TagFactory.php
index 6b40b32..8cd8b76 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/TagFactory.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Blogs/TagFactory.php
@@ -9,9 +9,7 @@ use Skobkin\Bundle\PointToolsBundle\Service\Factory\AbstractFactory;
class TagFactory extends AbstractFactory
{
- /**
- * @var TagRepository
- */
+ /** @var TagRepository */
private $tagRepository;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Telegram/AccountFactory.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Telegram/AccountFactory.php
index e0334ae..2cf3b20 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Telegram/AccountFactory.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Factory/Telegram/AccountFactory.php
@@ -10,9 +10,7 @@ use unreal4u\TelegramAPI\Telegram\Types\Message;
class AccountFactory extends AbstractFactory
{
- /**
- * @var AccountRepository
- */
+ /** @var AccountRepository */
private $accountRepo;
@@ -30,12 +28,12 @@ class AccountFactory extends AbstractFactory
}
// Setting/updating account data
- $account
- ->setFirstName($message->from->first_name)
- ->setLastName($message->from->last_name)
- ->setUsername($message->from->username)
- ->setChatId($message->chat->id)
- ;
+ $account->updateFromMessageData(
+ $message->from->first_name,
+ $message->from->last_name,
+ $message->from->username,
+ $message->chat->id
+ );
return $account;
}
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/SubscriptionsManager.php b/src/Skobkin/Bundle/PointToolsBundle/Service/SubscriptionsManager.php
index fc839ea..6d47687 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/SubscriptionsManager.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/SubscriptionsManager.php
@@ -3,34 +3,23 @@
namespace Skobkin\Bundle\PointToolsBundle\Service;
use Psr\Log\LoggerInterface;
-use Skobkin\Bundle\PointToolsBundle\Entity\Subscription;
-use Skobkin\Bundle\PointToolsBundle\Entity\SubscriptionEvent;
-use Skobkin\Bundle\PointToolsBundle\Entity\User;
+use Skobkin\Bundle\PointToolsBundle\Entity\{Subscription, SubscriptionEvent, User};
use Skobkin\Bundle\PointToolsBundle\Event\UserSubscribersUpdatedEvent;
-use Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository;
-use Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionRepository;
+use Skobkin\Bundle\PointToolsBundle\Repository\{SubscriptionEventRepository, SubscriptionRepository};
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class SubscriptionsManager
{
- /**
- * @var SubscriptionRepository
- */
+ /** @var SubscriptionRepository */
private $subscriptionRepo;
- /**
- * @var SubscriptionEventRepository
- */
+ /** @var SubscriptionEventRepository */
private $subscriptionRecordRepo;
- /**
- * @var EventDispatcherInterface
- */
+ /** @var EventDispatcherInterface */
private $eventDispatcher;
- /**
- * @var LoggerInterface
- */
+ /** @var LoggerInterface */
private $logger;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/IncomingUpdateDispatcher.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/IncomingUpdateDispatcher.php
index 5a03c99..6db6912 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/IncomingUpdateDispatcher.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/IncomingUpdateDispatcher.php
@@ -12,14 +12,10 @@ class IncomingUpdateDispatcher
const CHAT_TYPE_PRIVATE = 'private';
const CHAT_TYPE_GROUP = 'group';
- /**
- * @var InlineQueryProcessor
- */
+ /** @var InlineQueryProcessor */
private $inlineQueryProcessor;
- /**
- * @var PrivateMessageProcessor
- */
+ /** @var PrivateMessageProcessor */
private $privateMessageProcessor;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/InlineQueryProcessor.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/InlineQueryProcessor.php
index 741d883..dbc80d6 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/InlineQueryProcessor.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/InlineQueryProcessor.php
@@ -10,14 +10,10 @@ use unreal4u\TelegramAPI\TgLog;
class InlineQueryProcessor
{
- /**
- * @var UserRepository
- */
+ /** @var UserRepository */
private $userRepo;
- /**
- * @var TgLog
- */
+ /** @var TgLog */
private $client;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/MessageSender.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/MessageSender.php
index f887f85..26bff84 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/MessageSender.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/MessageSender.php
@@ -17,14 +17,10 @@ class MessageSender
public const PARSE_MARKDOWN = 'Markdown';
public const PARSE_HTML5 = 'HTML';
- /**
- * @var TgLog
- */
+ /** @var TgLog */
private $client;
- /**
- * @var \Twig_Environment
- */
+ /** @var \Twig_Environment */
private $twig;
/**
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/Notifier.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/Notifier.php
index c294486..1edf63e 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/Notifier.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/Notifier.php
@@ -10,14 +10,10 @@ use Skobkin\Bundle\PointToolsBundle\Repository\Telegram\AccountRepository;
*/
class Notifier
{
- /**
- * @var AccountRepository
- */
+ /** @var AccountRepository */
private $accountsRepo;
- /**
- * @var MessageSender
- */
+ /** @var MessageSender */
private $messenger;
diff --git a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/PrivateMessageProcessor.php b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/PrivateMessageProcessor.php
index af81b7e..342f19b 100644
--- a/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/PrivateMessageProcessor.php
+++ b/src/Skobkin/Bundle/PointToolsBundle/Service/Telegram/PrivateMessageProcessor.php
@@ -3,67 +3,41 @@
namespace Skobkin\Bundle\PointToolsBundle\Service\Telegram;
use Doctrine\ORM\EntityManagerInterface;
-use Skobkin\Bundle\PointToolsBundle\Entity\Telegram\Account;
-use Skobkin\Bundle\PointToolsBundle\Entity\User;
+use Skobkin\Bundle\PointToolsBundle\Entity\{Telegram\Account, User};
use Skobkin\Bundle\PointToolsBundle\Exception\Telegram\CommandProcessingException;
-use Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository;
-use Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionRepository;
-use Skobkin\Bundle\PointToolsBundle\Repository\Telegram\AccountRepository;
-use Skobkin\Bundle\PointToolsBundle\Repository\UserRepository;
+use Skobkin\Bundle\PointToolsBundle\Repository\{SubscriptionEventRepository, SubscriptionRepository, Telegram\AccountRepository, UserRepository};
use Skobkin\Bundle\PointToolsBundle\Service\Factory\Telegram\AccountFactory;
use Skobkin\Bundle\PointToolsBundle\Service\Api\UserApi;
-use unreal4u\TelegramAPI\Telegram\Types\Message;
-use unreal4u\TelegramAPI\Telegram\Types\ReplyKeyboardMarkup;
-use unreal4u\TelegramAPI\Telegram\Types\ReplyKeyboardRemove;
+use unreal4u\TelegramAPI\Telegram\Types\{Message, ReplyKeyboardMarkup, ReplyKeyboardRemove};
-/**
- * Processes all private messages
- */
+/** Processes all private messages */
class PrivateMessageProcessor
{
- /**
- * @var MessageSender
- */
+ /** @var MessageSender */
private $messenger;
- /**
- * @var UserApi
- */
+ /** @var UserApi */
private $userApi;
- /**
- * @var AccountFactory
- */
+ /** @var AccountFactory */
private $accountFactory;
- /**
- * @var EntityManagerInterface
- */
+ /** @var EntityManagerInterface */
private $em;
- /**
- * @var UserRepository
- */
+ /** @var UserRepository */
private $userRepo;
- /**
- * @var AccountRepository
- */
+ /** @var AccountRepository */
private $accountRepo;
- /**
- * @var SubscriptionRepository
- */
+ /** @var SubscriptionRepository */
private $subscriptionRepo;
- /**
- * @var SubscriptionEventRepository
- */
+ /** @var SubscriptionEventRepository */
private $subscriptionEventRepo;
- /**
- * @var int
- */
+ /** @var int */
private $pointUserId;
@@ -75,7 +49,8 @@ class PrivateMessageProcessor
SubscriptionEventRepository $subscriptionRecordRepository,
MessageSender $messageSender,
UserApi $userApi,
- AccountFactory $accountFactory
+ AccountFactory $accountFactory,
+ int $appUserId
) {
$this->em = $em;
$this->userRepo = $userRepository;
@@ -85,11 +60,7 @@ class PrivateMessageProcessor
$this->messenger = $messageSender;
$this->userApi = $userApi;
$this->accountFactory = $accountFactory;
- }
-
- public function setPointUserId(int $pointUserId)
- {
- $this->pointUserId = $pointUserId;
+ $this->pointUserId = $appUserId;
}
public function process(Message $message): void