protected function column_col3() { // get translation module $layoutkit = $this->layoutkit; $words = $layoutkit->getWords(); $model = $this->getModel(); $members = $this->group->getMembers(); $newmembers = $this->group->getMembers('WantToBeIn'); ?> <div id="groups"> <div class="subcolumns"> <h3><?php echo $words->get('GroupsAdministrateMembers'); ?> </h3> <div class="c50l"> <div class="subcl"> <h4>Current Members</h4> <table id='current_members'> <tr> <th colspan="2">Username</th> <th>Action</th> </tr> <?php foreach ($members as $member) { ?> <tr> <td><?php echo MOD_layoutbits::linkWithPicture($member->Username); ?> </td> <td><a href="#" class="username"><?php echo $member->Username; ?> </a></td> <td><?php echo $this->member->getPKValue() == $member->getPKValue() ? '' : "<a class='ban' href='groups/{$this->group->getPKValue()}/banmember/{$member->getPKValue()}'>Ban?</a> / <a class='kick' href='groups/{$this->group->getPKValue()}/kickmember/{$member->getPKValue()}'>Kick?</a>"; ?> </td> </tr> <?php } ?> </table> <script type='text/javascript'> var memberlinks = $('current_members').getElementsByTagName('a'); for (var i=0; i<memberlinks.length; i++) { $(memberlinks[i]).observe('click', function(e){ if (!confirm('Are you sure you want to ban this member?')) { Event.stop(e); } }); } </script> </div> <!-- subcl --> </div> <!-- c62l --> <?php if ($this->group->Type != 'Public') { ?> <div class="c50r"> <div class="subcl"> <h4>Prospective Members</h4> <table id='possible_members'> <tr> <th colspan="2">Username</th> <th>Action</th> </tr> <?php foreach ($newmembers as $member) { ?> <tr> <td><?php echo MOD_layoutbits::linkWithPicture($member->Username); ?> </td> <td><a href="#" class="username"><?php echo $member->Username; ?> </a></td> <td><?php echo $this->member->getPKValue() == $member->getPKValue() ? '' : "<a class='accept' href='groups/{$this->group->getPKValue()}/acceptmember/{$member->getPKValue()}'>Accept?</a>"; ?> </td> </tr> <?php } ?> </table> </div> <!-- subcl --> </div> <!-- c50r --> <?php } ?> </div> <!-- subcolums --> </div> <?php }
/** * * Runs a members search with passed restrictions and returns * a list of matches * * @param array $vars: input variables to be passed back (passed by reference) * @param string $tablelist: list of tables to query * @param string $where: WHERE condition * @param string $orderBy: ORDER BY for query * @param string $start: first match to show (from pagination) * @param string $limit: ORDER BY for query * * @return array list of matches (member records) * * @TODO: Optimise queries (jsfan) */ private function doSearch(&$vars, $tablelist, $where, $orderBy, $start = 0, $limit = 100) { $TMember = array(); // This query only fetch indexes (because SQL_CALC_FOUND_ROWS can be a pain) $str = 'SELECT SQL_CALC_FOUND_ROWS DISTINCT members.id AS IdMember, Username, geonames_cache.name AS CityName, geonames_countries.name AS CountryName, IF(members.ProfileSummary != 0, 1, 0) AS HasSummary, IF(DATEDIFF(NOW(), members.LastLogin) < 300, 1, 0) AS HasLoggedIn FROM (' . $tablelist . ') ' . $where . ' ' . $orderBy . ' LIMIT ' . $start . ',' . $limit; $qry = $this->dao->query($str); $result = $this->dao->query("SELECT FOUND_ROWS() as cnt"); $row = $result->fetch(PDB::FETCH_OBJ); $rCount = $row->cnt; $vars['rCount'] = $rCount; while ($rr = $qry->fetch(PDB::FETCH_OBJ)) { $sData = 'SELECT m.created, m.BirthDate, m.HideBirthDate, m.Accomodation, m.ProfileSummary, m.Gender, m.HideGender, date_format(m.LastLogin,\'%Y-%m-%d\') AS LastLogin, gc.latitude AS Latitude, gc.longitude AS Longitude FROM members AS m, geonames_cache AS gc, addresses AS a WHERE a.IdCity = gc.geonameid AND m.id = ' . $rr->IdMember . ' AND m.id = a.IdMember'; $qryData = $this->dao->query($sData); $rData = $qryData->fetch(PDB::FETCH_OBJ); $rr->created = $rData->created; $rr->BirthDate = $rData->BirthDate; $rr->HideBirthDate = $rData->HideBirthDate; $rr->Accomodation = $rData->Accomodation; $rr->ProfileSummary = $this->ellipsis($this->FindTrad($rData->ProfileSummary, true), 200); $rr->Gender = $rData->Gender; $rr->HideGender = $rData->HideGender; $rr->LastLogin = $rData->LastLogin; $rr->Latitude = $rData->Latitude; $rr->Longitude = $rData->Longitude; $sData = "\n SELECT\n COUNT(*) as NbComment\n FROM\n comments,\n members\n WHERE\n comments.IdToMember =" . $rr->IdMember . "\n AND\n members.id = comments.IdFromMember\n AND\n members.status IN ('Active')\n "; $qryData = $this->dao->query($sData); $rData = $qryData->fetch(PDB::FETCH_OBJ); $rr->NbComment = $rData->NbComment; $query = $this->dao->query('SELECT SQL_CACHE * FROM membersphotos WHERE IdMember=". $rr->IdMember . " AND SortOrder=0'); $photo = $query->fetch(PDB::FETCH_OBJ); if (isset($photo->FilePath)) { $rr->photo = $photo->FilePath; } else { $rr->photo = $this->DummyPict($rr->Gender, $rr->HideGender); } $rr->photo = MOD_layoutbits::linkWithPicture($rr->Username, $rr->photo, 'map_style'); if ($rr->HideBirthDate == "No") { $rr->Age = floor($this->fage_value($rr->BirthDate)); } else { $rr->Age = "Hidden"; } // push found record to list of members to be output array_push($TMember, $rr); } return $TMember; }
protected function column_col3() { // get translation module $layoutkit = $this->layoutkit; $words = $layoutkit->getWords(); $model = $this->getModel(); $members = $this->group->getMembers(); $need_approval = $this->group->getMembers('WantToBeIn'); $invited = $this->group->getMembers('Invited'); ?> <div id="groups"> <div class="subcolumns"> <h3><?php echo $words->get('GroupsAdministrateMembers'); ?> </h3> <div class="c50l"> <div class="subcl"> <h4><?php echo $words->get('GroupsCurrentMembers'); ?> </h4> <?php $this->pager_widget->render(); ?> <table id='current_members'> <tr> <th colspan="2"><?php echo $words->get('Username'); ?> </th> <th><?php echo $words->get('Action'); ?> </th> </tr> <?php $purifier = MOD_htmlpure::getBasicHtmlPurifier(); $count = 0; foreach ($this->pager_widget->getActiveSubset($this->group->getMembers('In', $this->pager_widget->getActiveStart(), $this->pager_widget->getActiveLength())) as $member) { ?> <tr> <td><?php echo MOD_layoutbits::linkWithPicture($member->Username); ?> </td> <td><a href="members/<?php echo $member->Username; ?> " class="username"><?php echo $member->Username; ?> </a></td> <td> <?php $groupid = $this->group->getPKValue(); $memberid = $member->getPKValue(); $BWAdmin = $this->isBWAdmin; if ($this->member->getPKValue() == $memberid && !$BWAdmin) { echo "<a class='resignAdmin' href='groups/{$groupid}/resignAdmin'>{$words->getSilent('resignAsAdmin')}</a>"; } elseif ($this->member->getPKValue() == $memberid && $BWAdmin) { echo "SuperAdminPower!"; } else { if ($this->group->isGroupOwner($member) && !$BWAdmin) { echo $words->getSilent('MemberIsAdmin'); } elseif ($this->group->isGroupOwner($member) && $BWAdmin) { echo $words->getSilent('MemberIsAdmin'); echo " / <a class='ban' href='groups/{$groupid}/banmember/{$memberid}'>{$words->getSilent('GroupsBanMember')}</a>"; echo " / <a class='kick' href='groups/{$groupid}/kickmember/{$memberid}'>{$words->getSilent('GroupsKickMember')}</a>"; } else { echo "<a class='addAdmin' href='groups/{$groupid}/addAdmin/{$memberid}'>{$words->getSilent('GroupsAddAdmin')}</a>"; echo " / <a class='ban' href='groups/{$groupid}/banmember/{$memberid}'>{$words->getSilent('GroupsBanMember')}</a>"; echo " / <a class='kick' href='groups/{$groupid}/kickmember/{$memberid}'>{$words->getSilent('GroupsKickMember')}</a>"; } } ?> </td> </tr> <?php $count++; } echo "</table>"; $this->pager_widget->render(); ?> <script type='text/javascript'> var memberban = $('current_members').getElementsBySelector('a.ban'); var memberkick = $('current_members').getElementsBySelector('a.kick'); var memberasadmin = $('current_members').getElementsBySelector('a.addAdmin'); var resignasadmin = $('current_members').getElementsBySelector('a.resignAdmin'); memberban.each(function(elem){ elem.observe('click', function(e){ if (!confirm('<?php echo $this->javascript_escape($words->getSilent('GroupsConfirmMemberBan')); ?> ')) { Event.stop(e); } }) }); memberkick.each(function(elem){ elem.observe('click', function(e){ if (!confirm('<?php echo $this->javascript_escape($words->getSilent('GroupsConfirmMemberKick')); ?> ')) { Event.stop(e); } }) }); memberasadmin.each(function(elem){ elem.observe('click', function(e){ if (!confirm('<?php echo $this->javascript_escape($words->getSilent('GroupsConfirmMemberAsAdmin')); ?> ')) { Event.stop(e); } }) }); resignasadmin.each(function(elem){ elem.observe('click', function(e){ if (!confirm('<?php echo $this->javascript_escape($words->getSilent('GroupsConfirmResignAsAdmin')); ?> ')) { Event.stop(e); } }) }); </script> <?php echo $words->flushBuffer(); ?> </div> <!-- subcl --> </div> <!-- c62l --> <div class="c50r"> <?php if ($this->group->Type != 'Public') { ?> <div class="subcl"> <h4><?php echo $words->get('GroupsProspectiveMembers'); ?> </h4> <table id='possible_members'> <tr> <th colspan="2"><?php echo $words->get('Username'); ?> </th> <th><?php echo $words->get('Action'); ?> </th> </tr> <?php foreach ($need_approval as $member) { ?> <tr> <td><?php echo MOD_layoutbits::linkWithPicture($member->Username); ?> </td> <td><a href="members/<?php echo $member->Username; ?> " class="username"><?php echo $member->Username; ?> </a></td> <td><?php echo $this->member->getPKValue() == $member->getPKValue() ? '' : "<a class='accept' href='groups/{$this->group->getPKValue()}/acceptmember/{$member->getPKValue()}'>" . $words->get('GroupsAcceptMember') . "</a><br>\n <a class='kick' href='groups/{$this->group->getPKValue()}/declinemember/{$member->getPKValue()}'>" . $words->get('GroupsDeclineMember') . "</a><br>\n <a class='ban' href='groups/{$this->group->getPKValue()}/banmember/{$member->getPKValue()}'>" . $words->get('GroupsBanMember') . "</a>"; ?> </td> </tr> <?php } ?> </table> </div> <!-- subcl --> <?php } ?> <div class='subcl'> <h4><?php echo $words->get('GroupsInvitedMembers'); ?> </h4> <table id='invited_members'> <tr> <th colspan="2"><?php echo $words->get('Username'); ?> </th> </tr> <?php if ($invited) { ?> <?php foreach ($invited as $member) { ?> <tr> <td><?php echo MOD_layoutbits::linkWithPicture($member->Username); ?> </td> <td><a href="members/<?php echo $member->Username; ?> " class="username"><?php echo $member->Username; ?> </a></td> </tr> <?php } } ?> </table> </div> <div class='subcl'> <h4><?php echo $words->get('GroupsInviteMember'); ?> </h4> <div id='search_result' style='display: none;padding: 3px; margin-bottom: 3px'></div> <form method='get' action='groups/<?php echo $this->group->getPKValue(); ?> /invitemembers/search' id='invite_form'> <input type='text' value='<?php echo $words->getSilent('GroupsEnterUsername'); ?> ' name='username' id='search_username'/><input type='submit' value='<?php echo $words->getSilent('Search'); ?> ' id='search_username_submit'/> </form> <?php echo $words->flushBuffer(); ?> </div> <script type='text/javascript'> var possiblemembers = $('possible_members'); if (possiblemembers) { var newmemberban = $('possible_members').getElementsBySelector('a.ban'); var newmemberkick = $('possible_members').getElementsBySelector('a.kick'); newmemberban.each(function (elem) { elem.observe('click', function (e) { if (!confirm('<?php echo $this->javascript_escape($words->getSilent('GroupsConfirmMemberBan')); ?> ')) { Event.stop(e); } }) }); newmemberkick.each(function (elem) { elem.observe('click', function (e) { if (!confirm('<?php echo $this->javascript_escape($words->getSilent('GroupsConfirmMemberDecline')); ?> ')) { Event.stop(e); } }) }); } var search_handler = { display_result: function(member_object){ var search_div = $('search_result'); search_div.innerHTML = ''; search_div.style.border = '1px solid black'; search_div.style.display = 'block'; search_div.style.backgroundColor = '#ffffff'; var counter = 0; for (var m in member_object) { var a = document.createElement('a'); a.href = ''; a.id = 'invite_member_' + member_object[m]; a.title = '<?php echo $this->javascript_escape($words->get('GroupsClickToSendInvite')); ?> ' + m; a.appendChild(document.createTextNode('<?php echo $this->javascript_escape($words->getSilent('GroupsInvite')); ?> ' + m)); $(a).observe('click',function(e){ e = e || window.event; search_handler.add_invite(e); Event.stop(e); }); search_div.appendChild(a); search_div.appendChild(document.createElement('br')); counter++; } if (counter == 0) { search_div.appendChild(document.createTextNode('<?php echo $this->javascript_escape($words->getSilent('GroupsCouldNotFindMembers')); ?> ')); } }, add_invite: function(e){ var it = e.target || e.srcElement; var id = it.id.substr(14); var ajax = new Ajax.Request('groups/<?php echo $this->group->getPKValue(); ?> /invitememberajax/' + id, { method: 'get', onSuccess: function(transport){ if (transport.responseText == 'success') { search_handler.add_invite_callback(it); } else { alert('<?php echo $this->javascript_escape($words->getSilent('GroupsCouldNotInvite')); ?> '); } }, onFailure: function(transport){ alert('<?php echo $this->javascript_escape($words->getSilent('GroupsInviteFailedTechError')); ?> '); } }); }, add_invite_callback: function(it){ var invited = it.firstChild.data.substr(7); var tr = document.createElement('tr'); var td = document.createElement('td'); td.appendChild(document.createTextNode(invited + '<?php echo $this->javascript_escape($words->getSilent('GroupsHasBeenInvited')); ?> ')); td.setAttribute('colspan', 2); tr.appendChild(td); $('invited_members').tBodies[0].appendChild(tr); $(it).remove(); } }; $('search_username').observe('focus', function(e){ if ($('search_username').value == '<?php echo $this->javascript_escape($words->getSilent('GroupsEnterUsername')); ?> ') { $('search_username').value = ''; } }); $('invite_form').observe('submit', function(e){ e = e || window.event; var ajax = new Ajax.Request('groups/<?php echo $this->group->getPKValue(); ?> /membersearchajax/' + $('search_username').value, { method: 'get', onSuccess: function(transport){ var result = ((transport.responseText != '[]') ? transport.responseText.evalJSON() : {}); search_handler.display_result(result); }, onFailure: function(transport){ alert('<?php echo $this->javascript_escape($words->getSilent('GroupsInviteFailedTechError')); ?> '); } }); Event.stop(e) }); </script> <?php echo $words->flushBuffer(); ?> </div> <!-- c50r --> </div> <!-- subcolums --> </div> <?php }