View file application/modules/Network/Api/Core.php

File size: 2.89Kb
<?php
/**
 * SocialEngine
 *
 * @category   Application_Core
 * @package    Network
 * @copyright  Copyright 2006-2020 Webligo Developments
 * @license    http://www.socialengine.com/license/
 * @version    $Id: Core.php 9747 2012-07-26 02:08:08Z john $
 * @author     Sami
 * @author     John
 */

/**
 * @category   Application_Core
 * @package    Network
 * @copyright  Copyright 2006-2020 Webligo Developments
 * @license    http://www.socialengine.com/license/
 */
class Network_Api_Core extends Core_Api_Abstract
{
    public function recalculate(User_Model_User $member, $values = null)
    {
        return Engine_Api::_()->getDbtable('networks', 'network')->recalculate($member, $values);
    }

    public function getViewerNetworkPrivacy($item, $owner_id = 'owner_id') {

        $viewer = Engine_Api::_()->user()->getViewer();
        $viewerId = $viewer->getIdentity();

        $privacy = true;
        if($viewer->getIdentity() != $item->$owner_id && !$viewer->isAdmin()) {
            $networks = explode(',', $item->networks);
            if(!empty($item->networks) && engine_count($networks) > 0) {
                $viewerNetworks = Engine_Api::_()->getDbtable('membership', 'network')->getMembershipsOfIds($viewer);
                if(!array_intersect($viewerNetworks, $networks)) {
                    $privacy = false;
                }
            }
        }
        return $privacy;
    }

    public function getNetworkSelect($rName, $select, $owner_id = 'owner_id') {

        $viewer = Engine_Api::_()->user()->getViewer();
        $viewerId = $viewer->getIdentity();

        $networkSqlExecute = false;
        if (!empty($viewerId)) {
            if($viewer->isAdmin())
                return $select;
            $network_table = Engine_Api::_()->getDbTable('membership', 'network');
            $network_select = $network_table->select('resource_id')->where('user_id = ?', $viewerId);
            $network_id_query = $network_table->fetchAll($network_select);
            $network_id_query_count = engine_count($network_id_query);
            $networkSql = '(';
            for ($i = 0; $i < $network_id_query_count; $i++) {
                $networkSql = $networkSql . "CONCAT(',',CONCAT(networks,',')) LIKE '%,". $network_id_query[$i]['resource_id'] .",%' || ";
            }
            $networkSql = trim($networkSql, '|| ') . ')';
            if ($networkSql != '()') {
                $networkSqlExecute = true;
                $networkSql = $networkSql . ' || networks IS NULL || networks = "" || ' . $rName . '.'. $owner_id .' =' . $viewerId;
                $select->where($networkSql);
            }
        }

        if (!$networkSqlExecute) {
            $networkUser = '';
            if ($viewerId)
                $networkUser = ' || ' . $rName . '.'. $owner_id . ' =' . $viewerId . ' ';
            $select->where('networks IS NULL || networks = ""  ' . $networkUser);
        }
        return $select;
    }
}