AutorÃa | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Helper;use Laminas\View\Helper\AbstractHelper;use Laminas\Db\Adapter\AdapterInterface;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Mapper\QueryMapper;use LeadersLinked\Model\GroupMember;use LeadersLinked\Mapper\GroupMemberMapper;use LeadersLinked\Mapper\GroupMapper;use Laminas\Db\Sql\Expression;use LeadersLinked\Mapper\UserExperienceMapper;use LeadersLinked\Model\UserExperience;use LeadersLinked\Mapper\ConnectionMapper;use LeadersLinked\Model\Group;class GroupsSuggestionHelper extends AbstractHelper{/**** @var AdapterInterface*/private $adapter;/**** @param AdapterInterface $adapter*/public function __construct($adapter){$this->adapter = $adapter;}public function __invoke($user_id){$userExperienceMapper = UserExperienceMapper::getInstance($this->adapter);$userExperiences = $userExperienceMapper->fetchAllByUserId($user_id);$industry_ids = [];foreach($userExperiences as $userExperience){if($userExperience->is_current == UserExperience::IS_CURRENT_YES) {if(!in_array($userExperience->industry_id, $industry_ids)) {array_push($industry_ids, $userExperience->industry_id);}}}if($industry_ids) {$connectionMapper = ConnectionMapper::getInstance($this->adapter);$connections = $connectionMapper->fetchAllConnectionsByUserReturnIds($user_id);$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select();$select->columns(['id', 'name','image','status','privacy']);$select->from(['g' => GroupMapper::_TABLE]);$select->join(['gm' => GroupMemberMapper::_TABLE], 'g.id = gm.group_id', ['user_id']);$select->where->equalTo('privacy', Group::PRIVACY_IS_PUBLIC);$select->where->equalTo('status', Group::STATUS_ACTIVE);$select->where->NEST->in('industry_id', $industry_ids)->or->in('user_id', $connections)->UNNEST;$select->order('name');$items = $queryMapper->fetchAll($select);}return $this->getView()->render('helpers/groups-suggestions.phtml', ['groups' => $items]);}}