Rev 6614 | Rev 6849 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
declare(strict_types=1);
namespace LeadersLinked\Controller;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Log\LoggerInterface;
use Laminas\View\Model\ViewModel;
use Laminas\View\Model\JsonModel;
use LeadersLinked\Mapper\PostMapper;
use LeadersLinked\Mapper\FeedMapper;
use LeadersLinked\Model\ContentReaction;
use LeadersLinked\Model\Feed;
use LeadersLinked\Mapper\LocationMapper;
use LeadersLinked\Mapper\UserMapper;
use LeadersLinked\Mapper\NotificationMapper;
use LeadersLinked\Mapper\UserProfileMapper;
use LeadersLinked\Mapper\ProfileVisitMapper;
use LeadersLinked\Mapper\ConnectionMapper;
use LeadersLinked\Form\Feed\CreateForm;
use LeadersLinked\Form\Feed\ShareForm;
use LeadersLinked\Model\Network;
use LeadersLinked\Library\Functions;
use LeadersLinked\Mapper\CompanyMapper;
use LeadersLinked\Mapper\CompanyServiceMapper;
class DashboardController extends AbstractActionController
{
/**
*
* @var AdapterInterface
*/
private $adapter;
/**
*
* @var AbstractAdapter
*/
private $cache;
/**
*
* @var LoggerInterface
*/
private $logger;
/**
*
* @param AdapterInterface $adapter
* @param AbstractAdapter $cache
* @param LoggerInterface $logger
* @param array $config
*/
public function __construct($adapter, $cache , $logger, $config)
{
$this->adapter = $adapter;
$this->cache = $cache;
$this->logger = $logger;
$this->config = $config;
}
public function indexAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
$currentNetwork = $currentNetworkPlugin->getNetwork();
$userMapper = UserMapper::getInstance($this->adapter);
$user = $userMapper->fetchOne($currentUser->id);
$request = $this->getRequest();
if($request->isGet()) {
$headers = $request->getHeaders();
$isJson = false;
if($headers->has('Accept')) {
$accept = $headers->get('Accept');
$prioritized = $accept->getPrioritized();
foreach($prioritized as $key => $value) {
$raw = trim($value->getRaw());
if(!$isJson) {
$isJson = strpos($raw, 'json');
}
}
}
if($isJson) {
$acl = $this->getEvent()->getViewModel()->getVariable('acl');
$feed_uuid = $this->params()->fromRoute('feed');
if($feed_uuid) {
$feedMapper = FeedMapper::getInstance($this->adapter);
$feed = $feedMapper->fetchOneByUuidAnyStatus($feed_uuid);
} else {
$feed = '';
}
$profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
//$visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
$visits = $profileVisitMapper->getTotalByVisitedIdGroupVisitorId($currentUser->id);
if($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER) {
$connectionMapper = ConnectionMapper::getInstance($this->adapter);
$connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
} else {
if($currentNetwork->default == Network::DEFAULT_YES) {
$connections = $userMapper->fetchCountActiveByDefaultNetworkId($currentNetwork->id);
} else {
$connections = $userMapper->fetchCountActiveByOtherNetworkId($currentNetwork->id);
}
}
if($user->location_id) {
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($user->location_id);
$country = $location->country;
} else {
$country = '';
}
$image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
if($user->location_id) {
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($user->location_id);
$country = $location->country;
} else {
$country = '';
}
$userProfileMapper = UserProfileMapper::getInstance($this->adapter);
$userProfile = $userProfileMapper->fetchOnePublicByUserId($currentUser->id);
if($feed) {
$routeTimeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user', 'feed' => $feed->uuid]);
} else {
$routeTimeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user']);
}
$allowDailyPulse = $acl->isAllowed($currentUser->usertype_id, 'daily-pulse') ? 1 : 0;
if ($allowDailyPulse) {
$routeDailyPulse = $this->url()->fromRoute('daily-pulse');
} else {
$routeDailyPulse = '';
}
return new JsonModel([
'user_uuid' => $user->uuid,
'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
'fullname' => trim($user->first_name . ' ' . $user->last_name),
'description' => empty($userProfile->description) ? '' : trim($userProfile->description) ,
'country' => $country,
'visits' => $visits,
'connections' => $connections,
'image_size' => $image_size,
'feed' => '',
'routeTimeline' => $routeTimeline,
'routeDailyPulse' => $routeDailyPulse,
'moodle_name' => $currentNetwork->moodle_name ? $currentNetwork->moodle_name : '',
'moodle_image' => $this->url()->fromRoute('storage-network', ['type' => 'moodle']),
'microlearning_appstore' => $currentNetwork->microlearning_appstore ? $currentNetwork->microlearning_appstore : '' ,
'microlearning_playstore' => $currentNetwork->microlearning_playstore ? $currentNetwork->microlearning_playstore : '',
]);
} else {
$feed_uuid = $this->params()->fromRoute('feed');
if($feed_uuid) {
$feedMapper = FeedMapper::getInstance($this->adapter);
$feed = $feedMapper->fetchOneByUuidAnyStatus($feed_uuid);
} else {
$feed = '';
}
$profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
// $visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
$visits = $profileVisitMapper->getTotalByVisitedIdGroupVisitorId($currentUser->id);
if($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER) {
$connectionMapper = ConnectionMapper::getInstance($this->adapter);
$connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
} else {
if($currentNetwork->default == Network::DEFAULT_YES) {
$connections = $userMapper->fetchCountActiveByDefaultNetworkId($currentNetwork->id);
} else {
$connections = $userMapper->fetchCountActiveByOtherNetworkId($currentNetwork->id);
}
$connections--;
}
if($user->location_id) {
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($user->location_id);
$country = $location->country;
} else {
$country = '';
}
$userProfileMapper = UserProfileMapper::getInstance($this->adapter);
$userProfile = $userProfileMapper->fetchOnePublicByUserId($currentUser->id);
$imageSize = $this->config['leaderslinked.image_sizes.feed_image_upload'];
$formFeed = new CreateForm();
$formShare = new ShareForm();
if($feed) {
$routeTimeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user', 'feed' => $feed->uuid]);
} else {
$routeTimeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user']);
}
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setVariables([
'user_uuid' => $user->uuid,
'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
'fullname' => trim($user->first_name . ' ' . $user->last_name),
'description' => empty($userProfile->description) ? '' : trim($userProfile->description) ,
'country' => $country,
'visits' => $visits,
'connections' => $connections,
'feed' => '',
'routeTimeline' => $routeTimeline,
'formFeed' => $formFeed,
'formShare' => $formShare,
'imageSize' => $imageSize,
'moodle_name' => $currentNetwork->moodle_name,
'moodle_image' => $this->url()->fromRoute('storage-network', ['type' => 'moodle']),
'microlearning_appstore' => $currentNetwork->microlearning_appstore,
'microlearning_playstore' => $currentNetwork->microlearning_playstore,
]);
$viewModel->setTemplate('leaders-linked/dashboard/index.phtml');
return $viewModel ;
}
}
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
public function dashboard2Action()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$userMapper = UserMapper::getInstance($this->adapter);
$user = $userMapper->fetchOne($currentUser->id);
$request = $this->getRequest();
if($request->isGet()) {
$headers = $request->getHeaders();
$isJson = false;
if($headers->has('Accept')) {
$accept = $headers->get('Accept');
$prioritized = $accept->getPrioritized();
foreach($prioritized as $key => $value) {
$raw = trim($value->getRaw());
if(!$isJson) {
$isJson = strpos($raw, 'json');
}
}
}
if($isJson) {
$profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
$visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
$connectionMapper = ConnectionMapper::getInstance($this->adapter);
$connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
if($user->location_id) {
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($user->location_id);
$country = $location->country;
} else {
$country = '';
}
$image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
return new JsonModel([
'user_uuid' => $user->uuid,
'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
'fullname' => trim($user->first_name . ' ' . $user->last_name),
'country' => $country,
'visits' => $visits,
'connections' => $connections,
'image_size' => $image_size,
]);
} else {
$feed_uuid = $this->params()->fromRoute('feed');
if($feed_uuid) {
$feedMapper = FeedMapper::getInstance($this->adapter);
$feed = $feedMapper->fetchOneByUuid($feed_uuid);
if($feed && $feed->type == Feed::TYPE_UPDATE && $feed->user_id == $currentUser->id && $feed->status == Feed::STATUS_PUBLISHED) {
$notificationMapper = NotificationMapper::getInstance($this->adapter);
$notificationMapper->markAllNotificationsAsReadByUserIdAndFeedId($currentUser->id, $feed->id);
} else {
$feed_uuid = '';
}
} else {
$feed_uuid = '';
}
$profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
$visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
$connectionMapper = ConnectionMapper::getInstance($this->adapter);
$connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
if($user->location_id) {
$locationMapper = LocationMapper::getInstance($this->adapter);
$location = $locationMapper->fetchOne($user->location_id);
$country = $location->country;
} else {
$country = '';
}
$userProfileMapper = UserProfileMapper::getInstance($this->adapter);
$userProfile = $userProfileMapper->fetchOnePublicByUserId($currentUser->id);
$image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
$formFeed = new CreateForm();
$formShare = new ShareForm();
$this->layout()->setTemplate('layout/layout.phtml');
$viewModel = new ViewModel();
$viewModel->setVariables([
'user_uuid' => $user->uuid,
'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
'fullname' => trim($user->first_name . ' ' . $user->last_name),
'description' => empty($userProfile->description) ? '' : trim($userProfile->description) ,
'country' => $country,
'visits' => $visits,
'connections' => $connections,
'feed' => $feed_uuid,
'formFeed' => $formFeed,
'formShare' => $formShare,
'image_size' => $image_size,
]);
$viewModel->setTemplate('leaders-linked/dashboard/dashboard2.phtml');
return $viewModel ;
}
}
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
}