Rev 3453 | Rev 3768 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(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\Model\Page;use LeadersLinked\Mapper\NotificationMapper;use LeadersLinked\Mapper\CompanyMapper;use LeadersLinked\Mapper\CompanyUserMapper;use LeadersLinked\Model\Company;use LeadersLinked\Mapper\PageMapper;use LeadersLinked\Mapper\MessageMapper;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Mapper\UserProfileMapper;use LeadersLinked\Mapper\CompanyUserRoleMapper;use LeadersLinked\Model\Role;use LeadersLinked\Library\Functions;use LeadersLinked\Mapper\ConnectionMapper;use LeadersLinked\Mapper\LocationMapper;use LeadersLinked\Mapper\PostMapper;use LeadersLinked\Mapper\ProfileVisitMapper;use LeadersLinked\Model\Post;use LeadersLinked\Mapper\UtilMapper;use LeadersLinked\Mapper\FeedMapper;use LeadersLinked\Model\Feed;use LeadersLinked\Model\User;use LeadersLinked\Model\Connection;use LeadersLinked\Mapper\NetworkMapper;class HomeController extends AbstractActionController{/**** @var AdapterInterface*/private $adapter;/**** @var AbstractAdapter*/private $cache;/**** @var LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @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');if ($currentUserPlugin->hasIdentity()) {return $this->redirect()->toRoute('dashboard');} else {return $this->redirect()->toRoute('signin');}}public function privacyPolicyAction(){$pageCode = Page::PAGE_CODE_PRIVACY_POLICY;$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');$currentNetwork = $currentNetworkPlugin->getNetwork();$pageMapper = PageMapper::getInstance($this->adapter);$page = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $currentNetwork->id);if(!$page) {$networkMapper = NetworkMapper::getInstance($this->adapter);$network = $networkMapper->fetchOneByDefault();$pageDefault = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $network->id);if($pageDefault) {$page = new Page();$page->network_id = $currentNetwork->id;$page->code = $pageDefault->code;$page->content = $pageDefault->content;$page->fixed = $pageDefault->fixed;$page->page_default_id = $pageDefault->id;$page->title = $pageDefault->title;$page->status = $pageDefault->status;$page->type = $pageDefault->type;$page->url = $pageDefault->url;$pageMapper->insert($page);}}$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/home/privacy-policy.phtml');$viewModel->setVariable('page', $page);return $viewModel;}public function cookiesAction(){$pageCode = Page::PAGE_CODE_COOKIES;$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');$currentNetwork = $currentNetworkPlugin->getNetwork();$pageMapper = PageMapper::getInstance($this->adapter);$page = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $currentNetwork->id);if(!$page) {$networkMapper = NetworkMapper::getInstance($this->adapter);$network = $networkMapper->fetchOneByDefault();$pageDefault = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $network->id);if($pageDefault) {$page = new Page();$page->network_id = $currentNetwork->id;$page->code = $pageDefault->code;$page->content = $pageDefault->content;$page->fixed = $pageDefault->fixed;$page->page_default_id = $pageDefault->id;$page->title = $pageDefault->title;$page->status = $pageDefault->status;$page->type = $pageDefault->type;$page->url = $pageDefault->url;$pageMapper->insert($page);}}$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/home/cookies.phtml');$viewModel->setVariable('page', $page);return $viewModel;}public function professionalismPolicyAction(){$pageCode = Page::PAGE_CODE_PROFESSIONALISM_POLICY;$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');$currentNetwork = $currentNetworkPlugin->getNetwork();$pageMapper = PageMapper::getInstance($this->adapter);$page = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $currentNetwork->id);if(!$page) {$networkMapper = NetworkMapper::getInstance($this->adapter);$network = $networkMapper->fetchOneByDefault();$pageDefault = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $network->id);if($pageDefault) {$page = new Page();$page->network_id = $currentNetwork->id;$page->code = $pageDefault->code;$page->content = $pageDefault->content;$page->fixed = $pageDefault->fixed;$page->page_default_id = $pageDefault->id;$page->title = $pageDefault->title;$page->status = $pageDefault->status;$page->type = $pageDefault->type;$page->url = $pageDefault->url;$pageMapper->insert($page);}}$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/home/professionalism-policy');$viewModel->setVariable('page', $page);return $viewModel;}public function termsAndConditionsAction(){$pageCode = Page::PAGE_CODE_TERMS_AND_CONDITIONS;$currentNetworkPlugin = $this->plugin('currentNetworkPlugin');$currentNetwork = $currentNetworkPlugin->getNetwork();$pageMapper = PageMapper::getInstance($this->adapter);$page = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $currentNetwork->id);if(!$page) {$networkMapper = NetworkMapper::getInstance($this->adapter);$network = $networkMapper->fetchOneByDefault();$pageDefault = $pageMapper->fetchOneByCodeAndNetworkId($pageCode, $network->id);if($pageDefault) {$page = new Page();$page->network_id = $currentNetwork->id;$page->code = $pageDefault->code;$page->content = $pageDefault->content;$page->fixed = $pageDefault->fixed;$page->page_default_id = $pageDefault->id;$page->title = $pageDefault->title;$page->status = $pageDefault->status;$page->type = $pageDefault->type;$page->url = $pageDefault->url;$pageMapper->insert($page);}}$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/home/terms-and-conditions.phtml');$viewModel->setVariable('page', $page);return $viewModel;}public function checkSessionAction(){$request = $this->getRequest();if ($request->isGet()) {$currentUserPlugin = $this->plugin('currentUserPlugin');if (!$currentUserPlugin->hasIdentity()) {$flashMessenger = $this->plugin('FlashMessenger');$flashMessenger->addErrorMessage('ERROR_SESSION_NOT_FOUND');$response = ['success' => false,'data' => ['message' => 'ERROR_SESSION_NOT_FOUND','url' => $this->url()->fromRoute('signout')]];return new JsonModel($response);}$currentUser = $currentUserPlugin->getUser();if ($currentUser->last_activity_on) {$last_activity_on = strtotime($currentUser->last_activity_on);} else {$last_activity_on = strtotime('-1 day');}$expiry_time = $last_activity_on + $this->config['leaderslinked.security.last_activity_expired'];if (time() > $expiry_time) {//$flashMessenger = $this->plugin('FlashMessenger');//$flashMessenger->addErrorMessage('ERROR_SESSION_EXPIRED');$response = ['success' => false,'data' => ['message' => 'ERROR_SESSION_EXPIRED','url' => $this->url()->fromRoute('signout')]];} else {$notificationMapper = NotificationMapper::getInstance($this->adapter);$total_notifications = $notificationMapper->fetchUnreadNotificationsCount($currentUser->id);$messageMapper = MessageMapper::getInstance($this->adapter);$total_messages = $messageMapper->fetchCountUnreadMessagesReceiverId($currentUser->id);$response = ['success' => true,'data' => ['total_notifications' => $total_notifications,'total_messages' => $total_messages]];}} else {$response = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($response);}public function postAction(){$request = $this->getRequest();if ($request->isGet()) {$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$id = $this->params()->fromRoute('id');$postMapper = PostMapper::getInstance($this->adapter);$post = $postMapper->fetchOneByUuid($id);if (!$post || $post->status != Post::STATUS_ACTIVE) {$flashMessenger = $this->plugin('FlashMessenger');if (!$id) {$flashMessenger->addErrorMessage('ERROR_POST_NOT_AVAILABLE');return $this->redirect()->toRoute('dashboard');}}$timestamp = time();list($usec, $sec) = explode(' ', microtime());$seed = intval($sec + ((float) $usec * 100000));mt_srand($seed, MT_RAND_MT19937);$rand = mt_rand();$password = md5('user-' . $currentUser->uuid . '-post-' . $post->uuid . '-timestamp-' . $timestamp . '-rand-' . $rand . '-share-key-' . $currentUser->share_key) ;$share_params = ['type' => 'post','code' => $post->uuid,'user' => $currentUser->uuid,'timestamp' => $timestamp,'rand' => $rand,'password' => $password,];$share_external_url = $this->url()->fromRoute('share',$share_params , ['force_canonical' => true]);$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/home/post.phtml');$viewModel->setVariables(['post' => $post,'id' => $post->id,'uuid' => $post->uuid,'title' => $post->title,'description' => $post->description,'url' => $post->url,'date' => $post->date,'status' => $post->status,'image' => $post->image,'file' => $post->file,'added_on' => $post->added_on,'share_external_url' => $share_external_url,]);return $viewModel;} else {$response = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($response);}}public function shareAction(){$request = $this->getRequest();if ($request->isGet()) {$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$code = $this->params()->fromRoute('code');$type = $this->params()->fromRoute('type');$user = $this->params()->fromRoute('user');$timestamp = intval($this->params()->fromRoute('timestamp'), 10);$rand = intval($this->params()->fromRoute('rand'), 10);$password = $this->params()->fromRoute('password');$checkpassword = '';$userCheck = '';if($user && $timestamp > 0 && $rand > 0 && $password) {$userMapper = UserMapper::getInstance($this->adapter);$userCheck = $userMapper->fetchOneByUuid($user);if($userCheck) {$checkpassword = md5('user-' . $userCheck->uuid . '-'.$type.'-' . $code . '-timestamp-' . $timestamp . '-rand-' . $rand . '-share-key-' . $userCheck->share_key) ;}}if(empty($password) || $password != $checkpassword) {$data = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($data);}if(strpos(strtolower($_SERVER['REQUEST_SCHEME']), 'https') === false) {$base_share = 'http://' . $_SERVER['HTTP_HOST'];} else {$base_share = 'https://' . $_SERVER['HTTP_HOST'];}/*echo '<pre>';print_r($_SERVER);echo '</pre>';*/$share_url = $base_share . $_SERVER['REQUEST_URI'];$share_image = $base_share . '/images/ll-logo.png';$share_title = '';$share_description = '';if($type == 'feed' && $code ) {$feedMapper = FeedMapper::getInstance($this->adapter);$feed = $feedMapper->fetchOneByUuid($code);if($feed && $feed->status == Feed::STATUS_PUBLISHED) {$share_title = $feed->title ? $feed->title : $feed->description;if($feed->posted_or_shared == Feed::SHARED) {$feed = $feedMapper->fetchOneAnyStatus($feed->shared_feed_id);if($feed->title) {$share_title = $share_title . ' - ' .$feed->title;}}$share_description = $feed->description;$image_name = '';if($feed->file_type == Feed::FILE_TYPE_IMAGE) {$image_name = $feed->file_name;} else if($feed->file_image_preview) {$image_name = $feed->file_image_preview;}if( $image_name ) {$source = $this->config['leaderslinked.fullpath.feed'] . $feed->uuid . DIRECTORY_SEPARATOR . $image_name;$target_path = 'public' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'feed'. DIRECTORY_SEPARATOR . $feed->uuid;if(!file_exists($target_path)) {mkdir($target_path, 0755, true);}$target = $target_path . DIRECTORY_SEPARATOR . $image_name;if(!file_exists($target)) {copy($source, $target);$share_image = $base_share . '/images/feed/' . $feed->uuid . '/' . $image_name;} else {$share_image = $base_share . '/images/feed/' . $feed->uuid . '/' . $image_name;}}} else {if($currentUserPlugin->hasIdentity()) {$this->layout()->setTemplate('layout/layout.phtml');} else {$this->layout()->setTemplate('layout/share.phtml');}$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/error/404.phtml');return $viewModel;}} else if ($type == 'post' && $code) {$postMapper = PostMapper::getInstance($this->adapter);$post = $postMapper->fetchOneByUuid($code);if($post && $post->status == Post::STATUS_ACTIVE) {$share_title = $post->title;$share_description = $post->description;if($post->image) {$source = $this->config['leaderslinked.fullpath.post'] . $post->uuid . DIRECTORY_SEPARATOR . $post->image;$target_path = 'public' . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'post'. DIRECTORY_SEPARATOR . $post->uuid;if(!file_exists($target_path)) {mkdir($target_path, 0755, true);}$target = $target_path . DIRECTORY_SEPARATOR . $post->image;if(!file_exists($target)) {copy($source, $target);$share_image = $base_share . '/images/post/' . $post->uuid . '/' . $post->image;} else {$share_image = $base_share . '/images/post/' . $post->uuid . '/' . $post->image;}}} else {if($currentUserPlugin->hasIdentity()) {$this->layout()->setTemplate('layout/layout.phtml');} else {$this->layout()->setTemplate('layout/share.phtml');}$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/error/404.phtml');return $viewModel;}}/*echo '<pre>';print_r([ 'share_image' => $share_image,'share_url' => $share_url,'share_title' => strip_tags($share_title),'share_description' => strip_tags($share_description)]); echo '</pre>';exit;*/if($currentUserPlugin->hasIdentity()) {$currentUser = $currentUserPlugin->getUser();if($userCheck && $userCheck->status == User::STATUS_ACTIVE && $userCheck->id != $currentUser->id ) {$connectionMapper = ConnectionMapper::getInstance($this->adapter);$connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $userCheck->id);if($connection) {if($connection->status != Connection::STATUS_ACCEPTED) {$connectionMapper->approve($connection);}} else {$connection = new Connection();$connection->request_from = $currentUser->id;$connection->request_to = $userCheck->id;$connection->status = Connection::STATUS_ACCEPTED;$connectionMapper->insert($connection);}}$this->layout()->setTemplate('layout/layout.phtml');} else {$this->cache->addItem('user_share_invitation', $user);$this->layout()->setTemplate('layout/share.phtml');}$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/home/share.phtml');$viewModel->setVariables(['share_image' => $share_image,'share_url' => $share_url,'share_title' => strip_tags($share_title),'share_description' => strip_tags($share_description),]);return $viewModel;} else {$response = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($response);}}}