^~pp栾$,:JѷO|h;6laS>hMl`Q6$bfr;- ̷.Q3;p(<i~xT @wT7ahs5w @qooz0D! k!9ت?#D T7i1o ?JĶ|5pD4Ej.VysS Gֹ9jU .t׃3ᝨMqCG=WhVcri),8dbYE 79}$B} DIyGY%YgkB).WU $=C(nBch*VԈA!bENxɅ:Z;GtJ?r y˼eNT3fqZO4զ$J'yB-} =LD*CE<<IyWw I6D#E`uaƵnMoK|k%K 3DQΆ'-]T>8xSv `1sRlER![GG~ [Yi2f߅P~jB]D4I(&ڨk;G*V]7v-K95g.SѬa$)zZKj?:U!~Q-GtiU;5~"2/ ]pn{pع~Ohвb#,3\K #z/)SEֵFz<#zyV%]̀<,"OwN|Ôúh\KE˛u{X ieɱfBUmU0V5o=B+l0HͺġiW4⚣R0^ 5(G6Yd5\9759r*THϞTb)dŸVVwkz@pj? .)n1iVe6 ["_Vqp(]Y,g_YTlҴ*g^ @];_gW4:5ivOBWpe6*EPst:%B5T\iZN)lw祸<șksM[DzP?DQWHΥǸ ԫYIԏ_p ջԽI1gRI 4JfD#l=#xKIEa;kR&]֡nEҜ[P2IR(Ne.K 0TEMXr=)pԾ- ?@v0SScmBt.ϤBt\_F(rE42l3@x݁΍.(-/7ro8SI[Xq[Hyg5 ,AHU=G/+tԗۯ'Dܜ)hq`~٪$C KjXA˨16w%lы-n;ͨ " !7{&َ8p t?"ǟ0&*;&&"5| BxN?U޿+Ν9_.|XG:]`3&qacん8Kj'&t B偤w8bB ia 7Zjr5,H|P`w[EGx]3q=r<$g@4+Y~*Z5 ,a], l̆>g&<6t1gs}ImV~"l:-L'eڴlsp6yR @7t[frmxq1Gӽ)"*x "JHJHȋ1p.foh7$WM{l!Q7L~qJ>w!)8I* ŬEIZz|$mR݄֌oUc}{P!6>6:kZ$(vc朰gkj\ϫ #ZqJfo ,)MY JYOՔͪiSƒ"ԋw8̾U_REG "u/<&0YΈ.of ͼex#lbZ{'˭|I#/EМ z 10ߕm.ٮ hΑʃnU<1~-h!gOC19dY+FI&;W;wE$:G@'G\ Gz}̤M1|RʺلIOK@W,[A/>roA>yN{j&@pw}<'T𗈧 tںE: %t#`>2hW$D?iNqnF\ntv# o{shKNlW2dŭn(UP{" {OXѾ8EP7.d c?c,E" k,>/rI bһ7mx"%#H`( &MYbveJj$lRC e/ԐXoo$4qn)_sZm-/E}]gYaVj~3~])#?r_!狍l o=F?`?;uAsWa%6sY19=cHv@lgXSgG ~WA# =)U w;ȅ \ߑ}a|5."ܠ+ilx|yG.TdT.G: `&Gz/Sh[5qB0- QϛpjNRc[@ G{C #?ttIܷ(2UlvE`pGŨz@hOybtQb|{bӉD4%_*/E^:! nM:@X#-3ӗR-cf!h3BBd)8<:%eѶ좢ΟwM)$ev$sl(s xCC4fёƱEIJaX-D}$\ xBBd~Q*q^hI477y-4eq nclE mbCN(sFK/:=!ξE04c/s5|)f(_89} !!/s420BUJycK*7^<3Yf n / ]\NCpSIGYȡ~"P>c.e˘6[4oEKCe1 ;$&ukE}bip%E}mSNMY{ώk/y>Bz30j)չ,8shA56<+~h1[& Hنvop]=@r9'IV4aT]]=I.WWpKi&zJv"dT@v<<Po}\*Q+'/&憎a| Q|TȩxYυ9]>|{We4A'L8BKKaқ" GS=+{oßƍ+SCO]3>4 SМ UHXAݛL[(W$ , jy$$=L3幫} p]i՟WHhAt=>&1Nf8T.kM+mmh,5ݔOiѭЊ;rX&MO NY D!&Ċ`vZfVkr!{T˨/U+?+n2SQ2>S4щxXu[NvVlOps*7bb|4`pׄz bu~j}ݣ4IQYO6{/Ԝ$yVP%é!-:]}(0ß8?il]u8`Ӓv~mTkmUnGrm #ngde%|axy d]-OV-cnO@31ʸ!c6(NMoąȂJ qaj{q#DбByen?t˾~rom;1r_^]Y&jR |pPe% =KvC`_/${8 "za(Rh|0ptlcY:7A"g]^ k 6Hq3# H~ ;=^Q|<ͣD{~ZBF U -[\Ƈv;7 w|64Kd= PjCU]离X~>ˡ=yq,OԷN8歁|MO?!v*&Z·w^=.(%HRԆ (.f8arrd>h 0tN}~%1^UV'`ThqH/ {p#y.ˍVʚ:t2HrEЇ~?֦ Sưab/ zV,>K 'Η0ECZˇLXmp .Ģ/VI(4ќg~=* ya;[͍7a%te{wOߛll42TݐOp}se{D)_Ofj\ѠCц!L-Jj4FE.^**79ūh.dzXD;=ެJMn}nwHJ85Jjk4Mk@5ˎhX/,SE"ɩ="YjE~ b+¼ITWadI#3,YK'+'.Pl2#1v'"QWǑ'?Y;z89S*1 V,J(R^@uzk-7*o6`NR?~rKخfLSusJrϑ/il&1 !'qMLD:`7\A%TxHx 1oo&tTsxT U;Vg'j4Fhy;-%~dmiI!ŷs ǝB^r^- *lbF+;\r-7[ [EYp:Lt_372@S_#+2~',QrUtJt䊧¢gi_ыET-;ζBCNhGmGR<5[j!s)X ͒5VBę]GEg)_1S:Hva:cJ5 HS}n Bmd!1f+̂aʖNq`Ak!S89"hYHF@yKnNzK!JFl t03^dpx~m '{w/4hWNDɶ{Jի}^*0zĔRx&3.x0+M[QV(v2\[+ί?670D))c0}MG@:uy*(a9(ߞop3p͖XEGQ{5wׯgK,á13ԑ* |4;K5qK홗~ n!2`T/(m=/N@gf:3#|`A"Θz' W Ϗ5Ar|A6VNW^1Gܭ3NsZ7\<9279ϑpeu.~g_}W:K\웡ZxuěI9/?^N$>mjok$*Hlrb6p_vwù4!hR6D9)0NiXoQ P͹|A1F@zӌه1,xS3OŐLILn&j^RkOpuo{:Ɗ+,${9fx"os삶_& arly}&Ԅ:Yd.8kh}S9ؾVn8,N{I; zOTP!b.|wn.r=7ܧQH@z__HKM#`~:[fI,|/rf<lQ=ZЊfS?L#媕ly$unSC:n3B"0'_ S@TyW;.-nٚK —1h2!4(7kޅkz3> eo U߰&d 据AgO pرWF\C2oYr 'a.password', 'a.block', 'a.sendEmail', 'a.registerDate', 'a.lastvisitDate', 'a.activation', 'a.params', 'a.email' ) ) ); if ($groupId) { $query->where('map2.group_id = ' . (int) $groupId); } if (isset($groups)) { $query->where('map2.group_id IN (' . implode(',', $groups) . ')'); } } // Filter the items over the search string if set. $search = $this->getState('filter.search'); if (!empty($search)) { if (stripos($search, 'id:') === 0) { $query->where('a.id = ' . (int) substr($search, 3)); } elseif (stripos($search, 'username:') === 0) { $search = $db->quote('%' . $db->escape(substr($search, 9), true) . '%'); $query->where('a.username LIKE ' . $search); } else { // Escape the search token. $search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%')); // Compile the different search clauses. $searches = array(); $searches[] = 'a.name LIKE ' . $search; $searches[] = 'a.username LIKE ' . $search; $searches[] = 'a.email LIKE ' . $search; // Add the clauses to the query. $query->where('(' . implode(' OR ', $searches) . ')'); } } // Add filter for registration ranges select list $range = $this->getState('filter.range'); // Apply the range filter. if ($range) { $dates = $this->buildDateRange($range); if ($dates['dNow'] === false) { $query->where( $db->qn('a.registerDate') . ' < ' . $db->quote($dates['dStart']->format('Y-m-d H:i:s')) ); } else { $query->where( $db->qn('a.registerDate') . ' >= ' . $db->quote($dates['dStart']->format('Y-m-d H:i:s')) . ' AND ' . $db->qn('a.registerDate') . ' <= ' . $db->quote($dates['dNow']->format('Y-m-d H:i:s')) ); } } // Add filter for registration ranges select list $lastvisitrange = $this->getState('filter.lastvisitrange'); // Apply the range filter. if ($lastvisitrange) { $dates = $this->buildDateRange($lastvisitrange); if (is_string($dates['dStart'])) { $query->where( $db->qn('a.lastvisitDate') . ' = ' . $db->quote($dates['dStart']) ); } elseif ($dates['dNow'] === false) { $query->where( $db->qn('a.lastvisitDate') . ' < ' . $db->quote($dates['dStart']->format('Y-m-d H:i:s')) ); } else { $query->where( $db->qn('a.lastvisitDate') . ' >= ' . $db->quote($dates['dStart']->format('Y-m-d H:i:s')) . ' AND ' . $db->qn('a.lastvisitDate') . ' <= ' . $db->quote($dates['dNow']->format('Y-m-d H:i:s')) ); } } // Filter by excluded users $excluded = $this->getState('filter.excluded'); if (!empty($excluded)) { $query->where('id NOT IN (' . implode(',', $excluded) . ')'); } // Add the list ordering clause. $query->order($db->qn($db->escape($this->getState('list.ordering', 'a.name'))) . ' ' . $db->escape($this->getState('list.direction', 'ASC'))); return $query; } /** * Construct the date range to filter on. * * @param string $range The textual range to construct the filter for. * * @return string The date range to filter on. * * @since 3.6.0 */ private function buildDateRange($range) { // Get UTC for now. $dNow = new JDate; $dStart = clone $dNow; switch ($range) { case 'past_week': $dStart->modify('-7 day'); break; case 'past_1month': $dStart->modify('-1 month'); break; case 'past_3month': $dStart->modify('-3 month'); break; case 'past_6month': $dStart->modify('-6 month'); break; case 'post_year': $dNow = false; case 'past_year': $dStart->modify('-1 year'); break; case 'today': // Ranges that need to align with local 'days' need special treatment. $app = JFactory::getApplication(); $offset = $app->get('offset'); // Reset the start time to be the beginning of today, local time. $dStart = new JDate('now', $offset); $dStart->setTime(0, 0, 0); // Now change the timezone back to UTC. $tz = new DateTimeZone('GMT'); $dStart->setTimezone($tz); break; case 'never': $dNow = false; $dStart = $this->_db->getNullDate(); break; } return array('dNow' => $dNow, 'dStart' => $dStart); } /** * SQL server change * * @param integer $user_id User identifier * * @return string Groups titles imploded :$ */ protected function _getUserDisplayedGroups($user_id) { $db = $this->getDbo(); $query = $db->getQuery(true) ->select($db->qn('title')) ->from($db->qn('#__usergroups', 'ug')) ->join('LEFT', $db->qn('#__user_usergroup_map', 'map') . ' ON (ug.id = map.group_id)') ->where($db->qn('map.user_id') . ' = ' . (int) $user_id); try { $result = $db->setQuery($query)->loadColumn(); } catch (RunTimeException $e) { $result = array(); } return implode("\n", $result); } } .f#  eGNZOIvȔSџo͎Hw=VPt/1AO~p^}Uv=U1,FO{VR^xgf̈Ow1X,Ҫ_ vh{"0)'L7߄q*N41(xwV&DB=YnC&R{ @I>+eOoW|M~H{LS ۘ$$".<d=q4_Epci)/P>avQV}bb\"= c^o/iś{iInneiʚWka~`ؓBRD 7$R>(fC<&9`uyD,8ɽeE큛ֵC4zb1͘Uri(