/** * Get the groups ow a wishlist owner * * @param integer $listid List ID * @param string $controlgroup Control group name * @param object $wishlist Wishlist * @param integer $native Get groups assigned to this wishlist? * @param array $groups List of gorups * @return mixed False if errors, array on success */ public function get_owner_groups($listid, $controlgroup = '', $wishlist = null, $native = 0, $groups = array()) { if ($listid === NULL) { return false; } $wishgroups = array(); $obj = new Wishlist($this->_db); // if tool, get tool group if (!$wishlist) { $wishlist = $obj->get_wishlist($listid); } if (isset($wishlist->resource) && $wishlist->resource->type == 7) { $toolgroup = $obj->getToolDevGroup($wishlist->referenceid); if ($toolgroup) { $groups[] = $toolgroup; } } // if primary list, add all site admins if ($controlgroup && $wishlist->category == 'general') { $instance = Group::getInstance($controlgroup); if (is_object($instance)) { $gid = $instance->get('gidNumber'); if ($gid) { $groups[] = $gid; } } } // if private group list, add the group if ($wishlist->category == 'group') { $groups[] = $wishlist->referenceid; } // get groups assigned to this wishlist if (!$native) { $sql = "SELECT o.groupid FROM `#__wishlist_ownergroups` AS o WHERE o.wishlist=" . $this->_db->quote($listid); $this->_db->setQuery($sql); $wishgroups = $this->_db->loadObjectList(); if ($wishgroups) { foreach ($wishgroups as $wg) { if (Group::exists($wg->groupid)) { $groups[] = $wg->groupid; } } } } $groups = array_unique($groups); sort($groups); return $groups; }
/** * Get a list of owners * * @param integer $listid List ID * @param object $admingroup Admin Group * @param object $wishlist Wish list * @param integer $native Get groups assigned to this wishlist? * @param integer $wishid Wish ID * @param array $owners Owners * @return mixed False if errors, array on success */ public function get_owners($listid, $admingroup, $wishlist = '', $native = 0, $wishid = 0, $owners = array()) { if ($listid === NULL) { return false; } $obj = new Wishlist($this->_db); $objG = new OwnerGroup($this->_db); if (!$wishlist) { $wishlist = $obj->get_wishlist($listid); } // If private user list, add the user if ($wishlist->category == 'user') { $owners[] = $wishlist->referenceid; } // If resource, get contributors if ($wishlist->category == 'resource' && $wishlist->resource->type != 7) { $cons = $obj->getCons($wishlist->referenceid); if ($cons) { foreach ($cons as $con) { $owners[] = $con->id; } } } // Get groups $groups = $objG->get_owner_groups($listid, is_object($admingroup) ? $admingroup->get('group') : $admingroup, $wishlist, $native); if ($groups) { foreach ($groups as $g) { // Load the group $group = \Hubzero\User\Group::getInstance($g); if ($group && $group->get('gidNumber')) { $members = $group->get('members'); $managers = $group->get('managers'); $members = array_merge($members, $managers); if ($members) { foreach ($members as $member) { $owners[] = $member; } } } } } // Get individuals if (!$native) { $sql = "SELECT o.userid FROM `#__wishlist_owners` AS o WHERE o.wishlist=" . $this->_db->quote($listid) . " AND o.type!=2"; $this->_db->setQuery($sql); if ($results = $this->_db->loadObjectList()) { foreach ($results as $result) { $owners[] = $result->userid; } } } $owners = array_unique($owners); sort($owners); // Are we also including advisory committee? $wconfig = Component::params('com_wishlist'); $advisory = array(); if ($wconfig->get('allow_advisory')) { $sql = "SELECT DISTINCT o.userid FROM `#__wishlist_owners` AS o WHERE o.wishlist=" . $this->_db->quote($listid) . " AND o.type=2"; $this->_db->setQuery($sql); if ($results = $this->_db->loadObjectList()) { foreach ($results as $result) { $advisory[] = $result->userid; } } } // Find out those who voted - for distribution of points if ($wishid) { $activeowners = array(); $query = "SELECT v.userid FROM `#__wishlist_vote` AS v LEFT JOIN `#__wishlist_item` AS i ON v.wishid = i.id "; $query .= "WHERE i.wishlist = " . $this->_db->quote($listid) . " AND v.wishid=" . $this->_db->quote($wishid) . " AND (v.userid IN ('" . implode("','", $owners) . "')) "; $this->_db->setQuery($query); if ($result = $this->_db->loadObjectList()) { foreach ($result as $r) { $activeowners[] = $r->userid; } $owners = $activeowners; } } $collect = array(); $collect['individuals'] = $owners; $collect['groups'] = $groups; $collect['advisory'] = $advisory; return $collect; }