Îðëà
Îáëàñòè
Êîìïàíèé
Ïîëüçîâàòåëè
Ãàëåðåÿ
Ôèêñèðîâàííûå íîâîñòè
Îðëà
Îòçûâû î ôèðìàõ
Òàðèôû
Ïîëüçîâàòåëè
Îáëàñòè
Áàíêîìàòû
Òîðãîâûå òî÷êè
Äîñêà îáúÿâëåíèé
Êóðñû âàëþò
Ñêèäêè
îðãàíèçàöèè Îðëà
îðãàíèçàöèè îáëàñòè
òîâàðû
ñàéòû
ñàéòû Îðåë
Äàííûå
Ðàçäåëû
Ïîèñê
Ïîèñê çàïðîñû
Ñòàòèñòèêà
Ïîêàçû êàòàëîãà îðãàíèçàöèé
Ñòàòèñòèêà êëèåíòû
Ïîëüçîâàòåëè
Ñàéòû
Óïðàâëåíèå ñàéòîì
Àíêåòà
Àïòåêè
Àôèøà
Àôèøà íîâàÿ
Áàííåðû
Áèçíåñ >
Âèêòîðèíà
Ãîëîñîâàíèå
Ãîñòü íà ñàéòå
Èñòîðèè
Êàëåíäàðü ñîáûòèé
Êàòàëîãè >
Êîíêóðñ êðàñîòû
Êîíêóðñ àóäèî
Êîíñóëüòàöèè
Ìåíþ
Íîâîå íà ñàéòå
Íîâîñòè >
Îðãàíèçàöèè >
Ïðîãðàììà ÒÂ
Ïóáëèêàöèè
Ðàçäåëû ñàéòà
Ðàññûëêà
Ðåñòîðàíû
Ñåêðåò ôèðìû >
Ñåðâèñû >
Ññûëêè
Òåñòû
Ôàéëîâûé ìåíåäæåð
Ôîðóì
Ôîòîãàëåðåÿ
Îáðàòíàÿ ñâÿçü
Íåäâèæèìîñòü
Íîâûé ãîä
Òåêñòû
Ïîëüçîâàòåëè
Þðèäè÷åñêèé ðåéòèíã
Îòçûâû íà òîâàðû
Áàí ïîëüçîâàòåëåé
Æàëîáû
Íîâûå òåñòû
Êîðîíàâèðóñ
Ôàéëîâûé ìåíåäæåð
Èìÿ ôàéëà
VkCommentObserver.php
Ñîäåðæèìîå
<?php namespace app\core\social\vk\observer; use app\comments\forms\AddCommentForm; use app\core\helpers\Date; use app\core\social\vk\comments\CommentSaverInterface; use app\core\social\vk\comments\ExistsVkCommentRepository; use app\core\social\vk\comments\ExistsVkCommentRepositoryInterface; use app\core\social\vk\VkWallCommentsApi; use app\users\external\VkUser; use app\users\external\VkUserInterface; /** * Предназначение �того кла��а наблюдать за изменени�ми комментариев в �оциальной �ети вконтакте и загружать комментарии * из �оциальной �ети в комментарии под ново�т�ми на �айте. * * Class VkCommentObserver * @package app\news\vk */ class VkCommentObserver { /** * С помощью �кземпл�ра �того кла��а мы будем загружать комментарии из �оц. �ети вконтакте * @var VkWallCommentsApi */ private $api; /** * Спомощью �того кла��а мы можем проверить, е�ть ли такой комментарий на �айте, * а также �в�зать комментарии из вк � комментари�ми на �айте. * * Обратите внимание, что �тот �кземпл�р кла��а лишь �в�зывает уже добавленный комментарий на �айте � комментарием в вк, * но не �оздает его. * * @var ExistsVkCommentRepositoryInterface */ private $existsCommentsRepository; /** * Через �тот кла�� будут �охран�ть�� комментарии на �айте. * @var CommentSaverInterface */ private $saver; /** * Через �тот кла�� мы будем �оздавать пользователей, * е�ли пользователь на �айте не �уще�твует * @var VkUserInterface */ private $vkUser; public function __construct( VkWallCommentsApi $api, ExistsVkCommentRepositoryInterface $existsCommentsRepository, CommentSaverInterface $saver, VkUserInterface $vkUser) { $this->api = $api; $this->existsCommentsRepository = $existsCommentsRepository; $this->saver = $saver; $this->vkUser = $vkUser; } /** * Функци� возвращает �кземпл�р кла��а VkCommentObserver � уже на�троенными зави�имо�т�ми. * * @param CommentSaverInterface $saver * @return VkCommentObserver */ public static function instance(CommentSaverInterface $saver) { return new static(VkWallCommentsApi::instance(), new ExistsVkCommentRepository(), $saver, new VkUser()); } protected function getUserId($comment) { // проверим, е�ть ли такой пользователь на �айте if (VkUser::isExistUser($comment->user->id) == false) { // пользовател� нет, дл� начала �оздадим его в бд. try { return $this->vkUser->createUserFromVkObject($comment->user); } catch (\Exception $e) { // �е удало�ь �оздать пользовател�, пропу�тим добавление комментари�. return 0; } } else { // пользователь е�ть, тогда возьем его из бд return VkUser::getUserIdByExternalId($comment->user->id); } } /** * С помощью �того метода мы прове�ти наблюдение за по�том и �охранить комментарий из вк в базу данных. * @param VkPostRelation $postRelation */ public function observe(VkPostRelation $postRelation) { /* * stdClass Object ( [id] => 122 [from_id] => 5964344 [date] => 1548923739 [text] => что угодно [user] => stdClass Object ( [id] => 5964344 [first_name] => Ирина [last_name] => Крахмалева [sex] => 1 [screen_name] => id5964344 [photo_50] => https://sun1-9.userapi.com/c830108/v830108911/1b6bf4/09urv3Ak6AM.jpg?ava=1 [photo_100] => https://sun1-4.userapi.com/c830108/v830108911/1b6bf3/Wl6POTdOL_Y.jpg?ava=1 [online] => 0 ) ) */ // е�ли данные в observer пришли не правильные, пропу�тим их if ($postRelation->getVkGroupId() == -1 || $postRelation->getEntityId() == 0 || $postRelation->getVkPostId() == 0) { return; } // получим комментари из вк по переданному по�ту $comments = $this->api ->setGroupId($postRelation->getVkGroupId()) ->setPostId($postRelation->getVkPostId()) ->comments(); // пройдем�� по комментари�м из вк и загрузим их на �айт foreach ($comments as $comment) { // пропу�тим те данные, которые переданы в неправильном формате. if (isset($comment->user) == false || isset($comment->id) == false || isset($comment->text) == false) { continue; } // комментарий уже добавлен, не нужно его заново добавл�ть. if ($this->existsCommentsRepository->exist($postRelation, $comment->id)) { continue; } if (empty($comment->text)) { continue; } // функци� возвращает идентификатор пользовател� � �того �айта // е�ли пользовател� нет, функци� �оздает его и возвращает идентификатор // Обратите внимание, функци� возвращает идентификатор пользовател� на �айте, // а не идентификатор пользовател� из вк $userId = $this->getUserId($comment); if ($userId <= 0) { continue; } $commentId = $this->saver->save($postRelation, $userId, $comment); if ($commentId > 0) { $this->existsCommentsRepository->save($postRelation, $commentId, $comment->id); } } } }
/app/core/social/vk/observer/
Èìÿ
Äàòà
Ðàçìåð
..
2019-02-06
VkCommentObserver.php
2019-02-01
7 êá.
VkObserverError.php
2019-02-01
1 êá.
VkObserverErrorInterface.php
2019-02-01
144 áàéò
VkObserverRepositoryInterface.php
2019-02-01
138 áàéò
VkPostRelation.php
2019-02-01
1 êá.
/app/core/social/vk/observer
Çàãðóçèòü ôàéëû
Ôàéë 1
Ôàéë 2
Ôàéë 3