Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 6749 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

<?php

declare(strict_types=1);

namespace LeadersLinked\Helper;

use Laminas\View\Helper\AbstractHelper;
use Laminas\Db\Adapter\AdapterInterface;

use Laminas\Log\LoggerInterface;
use Laminas\Authentication\AuthenticationService;
use LeadersLinked\Mapper\UserMapper;
use LeadersLinked\Library\Functions;
use LeadersLinked\Plugin\CurrentUserPlugin;
use Laminas\Paginator\Adapter\DbSelect;
use LeadersLinked\Mapper\QueryMapper;
use LeadersLinked\Mapper\ProfileVisitMapper;
use LeadersLinked\Model\User;
use Laminas\Db\Sql\Expression;

class PeopleViewedProfileHelper extends AbstractHelper
{
    
    /**
     *
     * @var AdapterInterface
     */
    private $adapter;
    
    
    /**
     *
     * @param AdapterInterface $adapter
     */
    public function __construct($adapter)
    {
        $this->adapter      = $adapter;
    }
    
    public function __invoke($user_profile_id)
    {   
        $items = [];
        
        $mapper = QueryMapper::getInstance($this->adapter);
        $select = $mapper->getSql()->select(ProfileVisitMapper::_TABLE);
        $select->columns(['user_id' => new Expression('DISTINCT(visitor_id)')]);
        $select->where->equalTo('user_profile_id', $user_profile_id);
        $records = $mapper->fetchAll($select);
        
        if($records) {
            $user_ids = [];
            foreach($records as $record)
            {
                array_push($user_ids, $record['user_id']);
            }
            
            $mapper = QueryMapper::getInstance($this->adapter);
            $select = $mapper->getSql()->select( UserMapper::_TABLE);
            $select->columns(['id', 'uuid', 'first_name', 'last_name', 'image']);
            $select->where->in('id', $user_ids);
            $select->where->equalTo('status',User::STATUS_ACTIVE);
            $select->order(['last_name ASC', 'first_name ASC']);
            
            //echo $select->getSqlString($this->adapter->platform); exit;
    
            $items = $mapper->fetchAll($select);
        }
        
        
        
        return $this->getView()->render('helpers/people-viewed-profile.phtml', ['items' => $items]);
    }
}