h\XEZ[`<&=\ AxX _S9%=.n< d;n6$CHv=71#-72/{=D]Sئ)m%we߽]6{^:.\;IOl;9N&?]mq $‘*a +Mqp-h6r?"ϵĮISޛU!naG͖Z/$тZމz2Yok*K{΅" ƭίFZkAIױ`K#MWDx 3@>x )JK%x(\d}6T-؈' 轈1Yc%mڍN_\LZ /x̘: (=*Ɂ"^\gދ ej`6G &!hA*§$YЯ'*:Uo0XZpFx/S`(NuMcrzGx/)[ck-pnM-%R5)J?-r=ӮIpa> 'PQHcb@:ЍBmsUzq[EnX DzN2jvUE֬?P8ݙn9~KF`+<(*^soǭ57 ~j`u@SJA@Q,47'x&^M# N=4AjE(ܟn8A0Hi, !QH%i~Hb"A*,׉usAJ5rgxN $"a>IϨU_hvyHYl ʀtrܻʽ3-?*GWÐJ 7$k/lStP|Ǎ/\EBuL[3:QocꌐGvhՏ/#q̼! MNJ⣤kђx^_v踊3;5C.~ J,WsljZ\hVZv(954)KDų?^\ Oǽ P,Ų9FF*嫇2O0w^oU$B<'UUGd*i^NƆ  iDZ҆=E,3*•ۘd%Bc5c/l1T8Z!IQˌZ{; ۀ&u5(7ꗧu?3?gH !h9UOـ:T5?, H8ޯ%q1V5'71TL[u\JAy5pK5MXt >0(w?rT)Z#5(-w&RߙI92,X{VEuh7%M|.E/@e{3E"w4 5ZalWBo\+tdzyhlx\}B8Z%U;Ll!ؿg[97c,⭭V:xuF˨8&ȊE>K 94Cy#'Uw۫% 2\o; *Q#I%*Fi^[ƣŏAGE]f2hkxE \byKA(tFQ{7xLh(yIgB`raxф}3$-ZQ;.%WP]2-.$x',;1hoyTxqwdS֤2(gS95TD8h `I>Fh3~ᵭFgrY#g.uQwF~5%]JLa©wݷO%UT, Yr]ٶaU֥ӎf1+VMy{X o<㍯ x*`w_`bwgFN5K]O8)k 6!o ZKȩ 6Z3:\gof%+-d 4pwgFN5K]OvlgN͔@ݜaCU@ z'n"_its58wgFN5K]O!)Ŕu8ST ?_{5W {ETD+RkZw`г Sv R.$8&gl*vA@&)}2owgFN5K]OڷIѲK{NRVrX<(tPگ `' ?d.d~8{A{ZZpGF% &wgFN5K]O;_|&%uT9Ql@ Lp͹G hf 3wgFN5K]ObPQo=v9|;cFf^۾~W{E2.E}Kõ pjT5?, H8jI]*9R6P#_["5 _h32r(t3'~xE2hamٸ:8fn!s 1v !}zrW|2єdv!sR@HY,o%iSPLV#Wprv*ϢG,HP]d++wքxxf~ЦkBZ˂+!9$wѮoNgN8P}Ws(сghk:ep&^5 s[@x*W5йfS;ZѮ^غ$n@,T+bRc$B{C^Pz([x;u&8hqex;f-D6~Lg;C F_ zH$StkC{53=rO#8 XDp#n`b}(<M؜'XZtHվ;}Lh ϗA[<4Ú̏ Т{*6c TLh9ۦ0fm,m'72^+C9~\zc$?jeyPP.clM"1dW=r_ݴ xoyÃGc%ժC鞀7/we29<(M_ٛG,pqMֆ$yrOy;8 X>ZN #Eɮ+N/ w@yEMP> User */ function alias2user($p) { $dbh = $this->get_dbh(); $sql_result = $dbh->query(preg_replace('/%u/', $dbh->escape($p['user']), $this->config['alias'])); if ($sql_arr = $dbh->fetch_array($sql_result)) { $p['user'] = $sql_arr[0]; } return $p; } /** * Initialize database handler */ function get_dbh() { if (!$this->db) { if ($dsn = $this->app->config->get('virtuser_query_dsn')) { // connect to the virtuser database $this->db = rcube_db::factory($dsn); $this->db->set_debug((bool)$this->app->config->get('sql_debug')); $this->db->db_connect('r'); // connect in read mode } else { $this->db = $this->app->get_dbh(); } } return $this->db; } }