oڈW&t0mx؊\C:%iI6/޾I`/ZLyF,Y-Cr'L51% 1&\Qxf~ϯ_>,h x]SV3:ZS$a"g#xĘ,iMZtq[[لטѿ]dXW*1/E y[^H[R_g"_ksiКo\iM›~em5(Pqւ$F ѭ7[Hh Ϊ% ƔIv!Qa CN Ql@ѥd-c/:poPNomqp XHu \ tC |5X@ѕ-2Q#s >kyYLVd6V+ *uHD0>klq\r[CC 1MS1lCsn>Owerh &hV0ZcBn.. er#T7[CNdԬ +ĐP)bm$ "i0(kZƍyjOp avPІ 50UVBY<+K7*qX(A/.*9[Հn~{sV店&BhmZ:FWD:Du/h\.4K*F5j=˯Za2G :"PMfLqAVΎWK  C=d (i:=)f7A mߊFF)I! .dt.@ XIeby.\߬8fY^Z9hʧH(9pFs7}7xWs[ K@>*fu ?z W)yo?B{?%;17N>7.3D=:0%yk!?|#HS_m@U+4Ė e\CF 06IJ\%!N"-ܸN(4@d"O$Kd[]2 4OТF򯫱]롏c̈]?ZqӹA3:M1%S7_A5==}6G!~E0D( +gϾg}>yϾ /~~7q-P"yH@PɽVL!˰TKCuATބ4AS^+1gԢHmQ,D/,Br(ǵշ+ ~(^ !-nEr3{6+dA}N L5(rl BV/pJF@Bb8`3X0`( Jn\7Hm@Ay<- !8U H%c *?{hc.$4˴Ȉq R@GPF$ц\:{=OLg:]5W8l\t)RBWdn{u s^ c];zCdMMJn*hP1?a1?r'%e1qn}pl4K|GT\VnLj8lD}ʹy}A#iG2O0 JHZzuuyPy|}XA<6PQ8fl/_ݿ*`[^G&wF{^q6,;I 7 A UxG6tc~c^ַ}z@/Y63p@uebm!*AFO εjB:A&ovԨKCT{ |AفtQ 8/k(8I> # -bzPٮ7j`f=DѾDp]SCjo+؁XժFڭm= "ݯJh}sKX , Aa׬D/r7-+-8\ $gV7%iEl 3USJȘ,<4;E d=F1rXݸhd 凂,u؅㤱. PisL ӥ" H/*Fd~hB0+TJSe4'i{R^yjchN0n1p%z g?wg~4;-p|8xgݖ!֓#< JooB>5nׅ{r|kB;//gW'q\%O GNkN 0|k]_r$ dc(ǭ 4BGę`'5"zEO֬~rBpks4 &+EӒuFmӦg* h"%)ZU R<2;'&?iM8,T8nUQXg؝HE}XUoC*1j[jJ4]V뢅qԲ(39 k$J$3~}>X9Q= dhMeϮ;f}=0'g &\ JЬ})@w8&yqΙ7T0ZJzq5%ч^r% #K2W- }L(^irM}kzξ+a4+!U h?xD'kx` Y\ۚ J ۠kS#mƯpE`_L!״MTT:guD3ik_(6mL<_|5Ŭ* Ok J>^DmYgѫYjјsrKe0&Mdf-v9%V$_d"^ٍ)r|UG`Ӻ3f}GTI6=G1`ǐ* E|kJ/'l+ 5M@T3؉Q7ra(A7)RpPX%ط_(@iE~E3ʣϔ9}5G%8K&\8%' 1j%s@+oŒV%KzZUe4hA6 gE豺t.8I-(M ֠ oXV_i#p`r$liRU#hd5dlbp50޲hdlنcE:k6 O4տU NuJ ("Q2cEMyZȂ N;~J1ab{-AF0>7g[hvJ{e'}I.y8;Mt3v=6ւ1lVy搶}XoAߋ,)!Ataig|_hHJ]2JUK# D!c#GNx )u lz6021J^90 EX*_vZ/8U: R<>ʹiƢ`|>]#@9XB*Zu*BBE< {5k";ē 6(3وr^ߜΨ@7b¿ZT>CH0]|z5Ad>wD7!L :DEf,ZWaul)U6XV2ZSDaσSHb"kZBB&KERTR.ɤF6o+ ϋxތ8|m{inʚ;/l)w t\s|k[.MmC~蘧_D@_$d"3i<,{y bU&?US^ m1LDays8 T""̲尮F,3:9DL(C8wf~Gp~<{Z0_)|7p6`)يs\#㦺ǹk߸/Dɛ9ŖϲODd=RϤިuag\pd{Sr7}G9/UfԮtV՜@MgG\_CipO& HMIp;Nyi]֑?Cj:u+N<-tr\w=! N?˄=C[kDxmǿ(xmb-_dh3|,[A_n"ٙzdDۋbA:d_ުzTTG1qW &X߱b؟_Zbp:ڰd>LIݑcu8%3*ûqN:!zk"sjI' YVzORkԌ$ǎ f&oإa븯 QTA9K'}*Oժ'('(a44g/=b8,-yId~V+WE ߕ ޛzGjj.80Z8/GgR(ԦnqJUGeW~O*Cz=@1dL'=u@)~Ǎ5[@7Ѕ'a;$'_+vs P.W[4Z5ĽX`@9C DKMn k Eʾ-!op@8h6%q55gK,š{ sS69TbE.%sy;,׫ 1:+`Y'q7昴.fG+Vzk)3unQ_CϳXnm#@hxY8V,֥x$a66#lgG{$ʸB%yPh,pQy`0Ϥ] `pV$V[LL#4\؜]}x f .BT${[y5s yNclWN8&-oL_;6n>KAZX̕YxU#` Debug2::debug('[Avatar] curr_request too close'); return; } } $q = "SELECT url FROM `$_instance->_tb` WHERE dateline < %d ORDER BY id DESC LIMIT %d"; $q = $wpdb->prepare($q, array(time() - $_instance->_conf_cache_ttl, apply_filters('litespeed_avatar_limit', 30))); $list = $wpdb->get_results($q); Debug2::debug('[Avatar] cron job [count] ' . count($list)); foreach ($list as $v) { Debug2::debug('[Avatar] cron job [url] ' . $v->url); $_instance->_generate($v->url); } } /** * Remote generator * * @since 3.0 * @access private */ private function _generate($url) { global $wpdb; // Record the data $file = $this->_realpath($url); // Update request status self::save_summary(array('curr_request' => time())); // Generate $this->_maybe_mk_cache_folder('avatar'); $response = wp_remote_get($url, array('timeout' => 180, 'stream' => true, 'filename' => $file)); Debug2::debug('[Avatar] _generate [url] ' . $url); // Parse response data if (is_wp_error($response)) { $error_message = $response->get_error_message(); file_exists($file) && unlink($file); Debug2::debug('[Avatar] failed to get: ' . $error_message); return $url; } // Save summary data self::save_summary(array( 'last_spent' => time() - $this->_summary['curr_request'], 'last_request' => $this->_summary['curr_request'], 'curr_request' => 0, )); // Update DB $md5 = md5($url); $q = "UPDATE `$this->_tb` SET dateline=%d WHERE md5=%s"; $existed = $wpdb->query($wpdb->prepare($q, array(time(), $md5))); if (!$existed) { $q = "INSERT INTO `$this->_tb` SET url=%s, md5=%s, dateline=%d"; $wpdb->query($wpdb->prepare($q, array($url, $md5, time()))); } Debug2::debug('[Avatar] saved avatar ' . $file); return $this->_rewrite($url); } /** * Handle all request actions from main cls * * @since 3.0 * @access public */ public function handler() { $type = Router::verify_type(); switch ($type) { case self::TYPE_GENERATE: self::cron(true); break; default: break; } Admin::redirect(); } }