From 754941e42b3d10e99bba337fd1c07cd5beda2e92 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 11 Oct 2011 18:46:33 -0700 Subject: [PATCH] background deliver plugins --- facebook.tgz | Bin 10076 -> 10324 bytes facebook/facebook.php | 70 +++++++++++++------- statusnet.tgz | Bin 14846 -> 14656 bytes statusnet/statusnet.php | 131 ++++++++++++++++++++----------------- twitter.tgz | Bin 8975 -> 8946 bytes twitter/twitter.php | 139 ++++++++++++++++++++++------------------ wppost.tgz | Bin 1930 -> 2139 bytes wppost/wppost.php | 61 +++++++++++++----- 8 files changed, 243 insertions(+), 158 deletions(-) diff --git a/facebook.tgz b/facebook.tgz index a1617de59b08a04cf40f8a3607271b80ba8c9cef..6acb8c5c110bb51cfb6d86af7545c4c3dcd3589f 100644 GIT binary patch literal 10324 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 literal 10076 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 diff --git a/facebook/facebook.php b/facebook/facebook.php index 0205204a..22cefc03 100644 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -48,20 +48,26 @@ define('FACEBOOK_MAXPOSTLEN', 420); function facebook_install() { - register_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook'); + register_hook('post_local', 'addon/facebook/facebook.php', 'facebook_post_local'); + register_hook('notifier_normal', 'addon/facebook/facebook.php', 'facebook_post_hook'); register_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets'); - register_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings'); + register_hook('connector_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings'); register_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron'); register_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook'); } function facebook_uninstall() { - unregister_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook'); + unregister_hook('post_local', 'addon/facebook/facebook.php', 'facebook_post_local'); + unregister_hook('notifier_normal', 'addon/facebook/facebook.php', 'facebook_post_hook'); unregister_hook('jot_networks', 'addon/facebook/facebook.php', 'facebook_jot_nets'); - unregister_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings'); + unregister_hook('connector_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings'); unregister_hook('cron', 'addon/facebook/facebook.php', 'facebook_cron'); unregister_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook'); + + // hook moved + unregister_hook('post_local_end', 'addon/facebook/facebook.php', 'facebook_post_hook'); + unregister_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings'); } @@ -481,6 +487,10 @@ function facebook_jot_nets(&$a,&$b) { function facebook_post_hook(&$a,&$b) { + + if($b['deleted'] || ($b['created'] !== $b['edited'])) + return; + /** * Post to Facebook stream */ @@ -492,18 +502,16 @@ function facebook_post_hook(&$a,&$b) { $reply = false; $likes = false; - if((local_user()) && (local_user() == $b['uid'])) { + $toplevel = (($b['id'] == $b['parent']) ? true : false); - // Facebook is not considered a private network - if($b['prvnets'] && $b['private']) - return; + if(strstr($b['postopts'],'facebook')) { - $linking = ((get_pconfig(local_user(),'facebook','no_linking')) ? 0 : 1); + $linking = ((get_pconfig($b['uid'],'facebook','no_linking')) ? 0 : 1); - if(($b['parent']) && ($linking)) { + if((! $toplevel) && ($linking)) { $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($b['parent']), - intval(local_user()) + intval($b['uid']) ); if(count($r) && substr($r[0]['uri'],0,4) === 'fb::') $reply = substr($r[0]['uri'],4); @@ -571,24 +579,14 @@ function facebook_post_hook(&$a,&$b) { logger('facebook: have appid+secret'); - $fb_post = intval(get_pconfig(local_user(),'facebook','post')); - $fb_enable = (($fb_post && x($_POST,'facebook_enable')) ? intval($_POST['facebook_enable']) : 0); - $fb_token = get_pconfig(local_user(),'facebook','access_token'); - - // if API is used, default to the chosen settings - if($_POST['api_source'] && intval(get_pconfig(local_user(),'facebook','post_by_default'))) - $fb_enable = 1; - + $fb_token = get_pconfig($b['uid'],'facebook','access_token'); - - logger('facebook: $fb_post: ' . $fb_post . ' $fb_enable: ' . $fb_enable . ' $fb_token: ' . $fb_token,LOGGER_DEBUG); - // post to facebook if it's a public post and we've ticked the 'post to Facebook' box, // or it's a private message with facebook participants // or it's a reply or likes action to an existing facebook post - if($fb_post && $fb_token && ($fb_enable || $b['private'] || $reply)) { + if($fb_token && ($toplevel || $b['private'] || $reply)) { logger('facebook: able to post'); require_once('library/facebook.php'); require_once('include/bbcode.php'); @@ -741,6 +739,32 @@ function facebook_post_hook(&$a,&$b) { } +function facebook_post_local(&$a,&$b) { + + // Figure out if Facebook posting is enabled for this post and file it in 'postopts' + // where we will discover it during background delivery. + + // This can only be triggered by a local user posting to their own wall. + + if((local_user()) && (local_user() == $b['uid'])) { + + $fb_post = intval(get_pconfig(local_user(),'facebook','post')); + $fb_enable = (($fb_post && x($_POST,'facebook_enable')) ? intval($_POST['facebook_enable']) : 0); + + // if API is used, default to the chosen settings + if($_POST['api_source'] && intval(get_pconfig(local_user(),'facebook','post_by_default'))) + $fb_enable = 1; + + if(! $fb_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'facebook'; + } +} + + function fb_queue_hook(&$a,&$b) { $qi = q("SELECT * FROM `queue` WHERE `network` = '%s'", diff --git a/statusnet.tgz b/statusnet.tgz index d6bd821fa690f6282cdb755a113334ee03b17218..21c3fec5d761fda572f3ea75cf54919f57303f32 100644 GIT binary patch literal 14656 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 CuER6{ literal 14846 zcmVwZoE1MEEgciT3S`PKO=P@P{X=VU5&zPgU>tm`=2ymf7#EpM+c z&FVoUB%!8AmY^(a`|`iv%m5%kiIObG?b~;E`XP}?U@(|(%nYP*o{v>5^7fNI?DHHx zZ{ECmvis`go88@)PoBSez5Dv*4m~%YCp$Z@U%Yw#{N<}RyHB3)ym-F5`-Hvv<4`I; zW0muau_q%Q3}kjI;|1f=!K>Fh-+lMppMle#_)!J_i*J59OdoX(Wbo_PFBkCt)tgs4 zFJ}1v>NSW2d;X|cEcpB%=l}jY;P%t@vu97)Gj_&DVvk*sAe@Pu9Vc-tf;`FaG#?GFwax9*KUX9Lw}fz#5k6BK8jmE zlOhh~4R5De(wC8F=LF^uAh(|~K#4I2m5XRRkTL5g8T(*o!bn7eEkQ)Tw;#QN@8I;; z!HCc)K%L4!#7gYF*bX8-R)T$h^`1rgVKE5k(wBpA#&aZyU89pQ9^~?t=Yr)!!BUN~ z%$11xjE5n71r+GrCf_~`2+AiqT$!hA`_K~BK5F>IE*ZNNzl~)k zMk3DD9=rJA;#G?U<1AvIt|A%VOo1@HjAzr&&Ybs2Fvba*HVoxpnHXdu9LZR;C-O#? zGNDP=F4*7ISdwUH$>?@F=kL$E-D2f!HW~7q@m?~{*=QW)awI~@kwQ73^R6Ij!up`_ z6TyB3)n_WtWXgW%{CLW84iq5*A%{jnDLxQ-NmLM8=O@92{8k_vd8C;lEYZ(V3>k=x zQj7y>@;nl(r+Gd}vKt1&hK$G4QmhfAjKKm$5z!0K&k`Q`?0c?c08ghNGoE5e4Btll zMhn)_#YdKMfOX3=$$PL0k3-f&)Y5cn8Q2-}_y)y=4aQSNn&Th~bQu8*iL(LTH+r9$ zW_UM=1JU#hciXw1l5p4`ItOp-?bD}vpT$n}=EWV*I#gAP{Qi_AZyX1-#R0H$#P1>z z5AtDi%e=*r(E9mhyrarx|`#0@9i8c7y|MJ+{=Xq zwiK2#8ey?{U`Zzbbx%k%bRH$-s!+MJzh!{T=tcYMc7d{>HRAwy!&8ZZ*dlT((EF@= zBc|@3N(8VJJR#s3C@}c!`t-E=(2O+iT(L-b1|-_stE{}vdbJBVBIAk}$e!6$DJkR~ z8K~5csDWU0f9P~BELG`^e*ITNRMgK*D6m1wd3&6sQiNa`4}BTffL~X!_({z#-q+_g=|`P*Yao= zR&}FfFc4YOyP&OIo$WEt$I0fk>^Fh)U^ANZ&=n8D1=dYc6bsp6#~|b97o9G0>EiPI zzklvrpPik6xa~MRUpR|qw3xHD-N#sEOSghf*|kJfoMHCXR`G5%3fEUBmlr?1Z`q}{ zT+6j^D$Y9k+sRp{WjTphfgg*lz%QJ7d=6AP?sPu>cyfMS&JT19i0%|T>nb3#v+p_W z@}zTpdDgi+I=lLCa@k^?%j=U>bCA71oE*K!@mfT^le-j9-Sf6q&Aqxh?f&EB^5ch} zFHUg2!B(lLdn+>8pQb`&D-oc@KU|+3cRrqI7Fr1#rajo+q;K2!?+4PwPdp9H)53LfNp6CDq6Jyl56Bow@Et(Ds4iHh#x1U*7%h zjQrA=Mf%Ir6$*BVehc1OdkBU;1?MBIRTOt3z$x~M;OYjVIs3Xb2YaguNK*pQcSJIX5>0S{CUSH5Mxp0I&o&VPJmy9w1`_OQ*2URPPoD+4 z*0XpZ2y{+rFGyYBfD*rA+SXgP3Un6*v#``IG6k5_z&dVD&UX9yZKcfk9%{l zACG_as%b|wzun}mZ#R3yBnV2rVR}Ot88jg#+1Stu4~}PJvx>cmcTyAZxbs>iE*Jn= z3Ico?=eIm+&Vbrt2L}*=Ar9^;q3Ex@P`5Y5c^m?4S`*-j2pm6%?E!1ntZx>vD7<4H z3x*=N5#d3@d}+Wlh&c_s9`g^Fw;#$|eV#vPm?YIU5Oo{1;&5Na=@`!T5GoiTz2vUJ zVm^Yu%cVt(2lR#qXV(%-ILE@-JsQKvod#cfRP$`Ql6~6EgZk!24oJs zw;NA4$Q0LWWJRLEr1RFM-uME}m)8C*S#L}~<(f7n)H0|Cck4VI_uxFudgD9?9He4# z0#hT2)Wp@mGv75gbpTSba9dAj9@uj)oPs^ZoXF@wQ1r>zdoUcb0$(-TRqY1@qSLfa zUwj>mucb#10$!d<0lHwY=|`;ulqiOOLYBk= z69qbbAd0+k=;YX8>@8*n;VI^%c%G8-YlwSw!m~4&BYFw=@t^;!0pFf` zwy9B4@$6CFbn&AWx%VX& ztz~xSKKr~3t%odRlzetA^Z3!0v$mi$!?9)XYfZ-N2b4etqDip>I5S1Ztek_hqf!yd zvQ`_2J;9|VnZMu5An54mMB=Rs!3dD@U7lJu4#9~GeQ(P@IY0HQ_~N6bIM=?Je>(qU zknjm6P&g(2yGSsU)Ggm@+X$qsD`YdvuWeapd0cN<;V`QsApiyL8-2dkerv6aIh{42 zwU8#l18W&ntevT-n&UBtXhg51qcETW8Eri?&!!kV^yQs4;aL8G(2GrE6xA*Whj%%M z*>7VA$f7CZMG29B)`5Gwy)|zx9YZrmMk~@aR_Af7&Hb$m?l`%rR>xqgL6U)41;R!G z{e_~^9maY^S+wT!Kufhy%E)Rh(3poCtJOmNbt}5|%J8lR;!+EROqt~f9TF^8Mts^6 zYy@gb`JW7;2mI1z?`q*yyk03!ZLfZ(kLU5$^L7hlF-|5AlSlmgnKJp1^}b#%*ID&` zvWcIS9u%3SaxkJKnL0^HJR;s9Xv-`(wxO$y2Mb|2p7ai6g_;%|J^6TM30E$3Kr2^UQK&Zo8v{&#K+zX4C%igQ@Oj~@T{2mEQN4R)yR$y& z*HPI*(yTk(p@vjgmE5$*C1Bu(G#pxA;BLHCxQLNujc)xSG10&l8qI}Ckrvj2@Y^TP z>5C}0xemnA@Xtf+J~R}m$tqQ=_wGjryHUbJO+GYfMLQdK-+`#c)nLaZS_;9w9}n1n zyxgsYx|a1sq7_!N;4my2C!}wfY_xXIun`5M=-*PUlC?unvS7&Lfe2kybaXsnl-=dJ zU`FbVDU&H_LARTZdyx#fT^dDdr&|su98L=N=dU5VO{ULDv`%cJ*hywS? z8|I^ED0m1;Pn860mqaPW(!dlLJ_OD+n5iCMb6Pu4s=q`SC21k-Vv z*I?B4c+dcDV`%{&Hh#%|i5r;V$7JCKdxk|2n|O1q52tvCp?kzaF=7-NGy*h&UNsZ5m-fKJNEX;!`+*LNwDVJdG_CfIQ;a77N5BMW5k6fHPS{qY5w( z4&8x>Z1LC{{4`6*M)F*rXjLv!Lg|Is7iRcTFB(?@Hla1bglCF1v965~o|69(jJg6T z(~tEKCu8`PVZzsj2pYztLb-1qj| zI1r1r7@D)@HzaXe?AveYyXkUdy5g!eA5{eO)m7=b6n`~q{_u=>U2zUVdsRuRk>#P{ zM8-x*W@`q~wCrsU-G=EZI8(APt=DDY!n)Z?DbGiHr4l$$^mT<{Gz-q0NKEgxxJx4* za~sSSc8NT60=9&0vjm=I6RE^3C^?7|YRkurTS_nxH}C<|nL@}6y{U5QQXRtEaTL{^ zt_q2HNp>DY=5LmGM@1>7lp>S@wa(4!5s>QI;p_Wyw?^Fv%n&@cdQZ6&y zVNP8?vk6gE7KVrgc+N#|Kui?svNAPlu~et9O_2$c*(Fnb?QbCD5#SU0nV>#=TiV5z z{CKJv;-Ek+D&R!eFL%4&Vbs@ySaAY>{Kano8Gs7uG9sYP%FwCk7loQhhR4yYQ8&A& z6WzN^WY=@M3NjwbWUi%Prc%_fodljgTUqeE#$oXkH54Jyb6o+bL3}=qP)Y+*%C%us zI&U26&IH?^u#}Lq#!vSG6qIDurV9Obe*gA)J+zV@S|hGZzkv>p+VzN5w>_^`7rIWO zD=Nt(HnM+Q%I0E~no%e3tZINsc}RCkne8XzIP}@2=@-(=7T2Eegh-crI95klDAY}! zq}X}^xPUh4;UzS47pMixrc-MbXV%v$4zUvDpNiZi#e-RrXt zvQV+@R4`;c(cOyDKY&0wELlM#J!k=$u5?8Cm6S3|+>2Ot?4L<5bCg&>DD&1(sPR3j zDe5bwk%W2%!)|tvHxV(NHN>ue(0+ zHRA8HbG({L*zJRlPvXI$PPgp0&7YKqRMe<|cU18&-3M79QgPM}CAiIp`E%KJ_gQm9WAYTxa}oc)j6=H`Xm4+h}enk1^Jo^_9-*b%q|-SZd^H zK>Hq$h%pwHt}x9*GlPm#jAp0rt+B-Jz1G-u7g?;hMb)AX1?`iT`1ctx`1kToC2n|3 z@ll9$e)YICq8B>1YBEeOSBkdI&@Phh)GRa3@DA@x^;^;^bkh@zbe#pLjU@Gg3nEB* zS*VEKUAbzxPkUawuTmJmtNQ(&Uh_t!#s7bm7`e4B*TEH0j(ZqvGdE(eSHUnIu+vmx zS}X=qhe$(8*kG%?RFuP_9yOfz=Y z`l4tzaB~1FbOj4o#4PYd)i?Z>gV$ePisII$z(13 zTIX~k)dqbDXd8J0$F~-1m31+@s#&kjp;jgW5x{VwyrC9z6Y=khQDs;tV4zI(`Fy_( zZz=Szk$D>fee5%vy@!+i>M(=k1Eb7Jph1zPQb{0rHDh2{>9e092BM!+877Gm#U%~A zcyFoztcjj<3$xT^!PQn+l}I^OxbWvXVpmvA<`<%$A$Bo9 zn|^c1B4K;_N@CX-2=yW%?AK zQZLO&!hw8u`!Cx&J0>fQopBs{=krV!U2OF0OSU&bnx9fiQV3dZLGtN%tKnfLCle9B zqxvAic%*@Vh~gzS_j!@5ZWE)NuWK+Z7PnH|s`+8Njf1&8=QD z18?=dV~aYvx<$(v+hfo5q9D(*Zw`ZWPq9@5TqbaXkW9gz-HueGj{y$C)Kw4_23Xew z+|1e!Z1kYZ@b#3~(cTl6o_mY@sFKNKV>hb5rzYbd8i%6Y>tUwG{F2&+UJ}m`UwdrX z*c|b@E}Wk5cZvw2?jdu2ZS5_#OTyni(@)5jafV|J1ckr9M!$;J#UI3LYGlcR^pbE| zw&MYy-^NKUs@E{L%~6gn7=f{Lp<+{97tcyL(p-auH!CjK;fIpn_67z{VTY{P?5dlG z)gWP*WI1)?9k51Y^~&~B|I2uaeg@J0CfIEUVjYI|Q@Vz#idEqGrAhvH@%Zb%*`lHE;m7KP4FmvM+ zQy^RgJfyxDl2{Szb7ppnEsVu*bB)jB`f;Gw28^K&d!A>=@+?)U+30U$YQftdLN zu)ttwr+`-lcR1u@@0UiaX@2X<*-rQRawqto_Pzuj%C7xiqL@-DqK&bHsWG;(hO%YL zt~`=77);q`Y)O_*(DLOSJdxbX2wwO`#jJ4dH(P3^Z$K1 zeJc04?{l5&oO4~*Ik)?|z84PM-stK~0jf)?w27LwOP>O|gJB6#e->;@UlytI0+(Q= z$lp^&a5_MKD3G5t@u18+c$o8mK4alXNPa+2=(^_rTY3r7wIh%gzOaDi3ui-uR1!F< z|Mjs`%(RC!Afu2)L?gw~3no#NYAb1sqC~NOXKq3I;41+*S{S>8O6bpt{5k@dz5sIp zS|2F<0rFu7=0rgh-hAm$^FTw7qDUdUn}Hfb^*qEA#bBpzVH*A$d_x$iq>O|cLyF}G zz3#xA{TeBUf+YlbszCcU_y&XW1(8VvADdUIk!9P>)EIqwLt>I(Qk|&_I1n@TS19S@-KlJ8Hzp}(%JGD}L zTG23XL}=yzTzsH+U!;(r3(6Nk*T=tboL%snr929LQ&n0JH8|+bih?W%^8w8*O#DP!t2(F=#QGp`~ zC`70tO;3Vu5vjaDH4B`;zBe$1rJi6X%H(;XbBh?Ny|(+Y(_@{2)Qh#|Q;@>Aj#fVPxF9PlD!XbV#4sEELbXNeZVIG9^owkFb)6PQ2zf>`4_Q7|7aio zKL3Nbgsd!-|3gAnMnVes1Ll8_mXZ0L|KYz;5D0;#Um?NYUD!Fg;7AI(urVe>xf@MVd;m2f61Gqv^Yf73Fi*%#iG_OB$A60Sp5@Ii#`VZr}Tc!<4@EU zKS=*c?(cT|i+*WXcK^OtnlsTqFn0j0U-h<#tEHaMf45t?pL(Su`7^P<+?w9=_@Cp6 z^4rI^@?KUd3cMgcXf zu3F~6fq{(-{#~XjlH?6kt|V#eX{>z9$b#TvVnWU)GB9iu*H%|C^=|u=+#xO zs&l-2)Tz?q&N{(8>3VO5V&2!DKh~y{`c70`QJs@;xZ?e}n(L9Ms8`y{2MTh6%*Fv*L`ru$D$Vx)IBjQ6 zw(9;mtM~l7MKF6sdhXXJe#aV2KVmqU$k!uv6Mc~b6WQ|u$q8d$2C{MAtAkkbtt*TX z4Mj*pa)zJZ+>P@O0t(y6SLWZmsdPJSml!8e#G#<-AY$s1BglQl-|u4Jp~~^=bp=YB zuCr(9C*gUxRFT-rmz%Dyc*mR_}Qa(;iur}=A5`&`_lkC$0|X8jscjH;D|I`3Vj!%&eE8U1+4jb^<58MkYu3vOZW8ON z$ToGYzUk9CYz1-u@T4_o%qbF%vM=-`v9@?Qu+tu z^3lYO&wf09-v^SnZDZ~d{xRNd&if;db45A_@T^P9{O(D;eH=%WC&i<3s)m%_1st(_ zs@TJKdsaLsLV1dbK^BW0=N&ECV$xz)&1V=|1&BoM@^A9Zon{;3Npg>zCI%+DRvt)Y zt&5EkW@lVq)bLTh!GY{8md=rzJo1Q*ai3mq(HAH3zNnoq3|LgyndCS}*Nipz?pD|3 zf4HhP;`4l&FT?CN1LY9*p3wRX!T6KxuEiA*t9pBxbUr@}Z`@JCr5dunB~3SstK++u zT!&nV-9*!Y-FxMt8JPmdeNK+r^O0+Jz55Y$e~>LJ_nw?gPxJa$U&b>xtG2~RT|OyF$4^i6rlE6g+X%*qj@J3|9A>|ItPO9czyE1V)|Xca zcg?j6;%d~D4bU8k&8yAaeC=9JNcp94_;hOK2FPD}Dk(1i(5thZb&n0U{?gauSk$IQ zd?smc$AtKfY5j^Q#>R*XpD&mdMS57q%F2uf)(DNCtZa>{l~TFi2{c`{$5*oY zQpxd0XCw-CVLy$SllvdIj6DAA=lHIx=KcNCJFN=`zwM~V?bDCVn%iTSe{@9iTW5D? zPUoH)x2MGA3EGLh(gh{TI;ioK+5*jpJ43_f3^I4`u9sPT_u9Crj*;Eh^HP;vvoC@? z6K0S`w*&WlVIEwskaXZXXVb`cB_Ve|+si6#)+ipwi1Bk8g;%%C=7iaC&nE1fIwcZ3 z@NM|hCsBdoRJ`(qJdqsUJHtCR-MgqdR+*0{v9Y-U#A08*B2JWUJblaVWIBh~WrgaxR29R}rgoB4uYO8J=Zs8- zYy8UCca`S?mle&B1cJMwb{@EsPgqkJdm()Y;2A%2zo36YhFAXakbTLE^cqbru?%Bw z;T0?8nmY{?IeJFI^&Ks9ujTSG0gAvkv@zcHUFiV@6V&N|Y7dX|{lwyOtJXw@`KS#i z{6~3C2N-k~$EG@-X*jzkRr?&@_Cc-FfCLE+i!*e-E8LL#!Cj%ew%6AyP4|KU+Dc_+ zjNSLR@2b|}_a4Dhz)C*Hwl-d_4ZR^GH16Y>JecZY&A1Hv*g7lGmH1M$<-mvZ zlPjb)wO5KY`IblQC@DL9)w}RP*o2J@w{dfVenBQ-4a>usnUU_v=Y~F=y}q6{n^qi4 zOfpxxxe4`{qa_00hzt%NvL`qdZ_)5Tn2;S+_iiOOiA%nyo@*0|tzp*W^$*%$prm)w zJN{*8f7X|R+;z?lSr^pIeMq4{`8Xl?R=6GU2+w-b}*s8Huc!o{DKG>HVfS zHGMc`w`W$CN-MSrZ!jv);4GH-noED{O61YRx!%-MeTor#P~np^pFcQxnLflw)ITf_ zBXOQfi|*-pEN7vg!f-@93RN}xCbH_p$@vw|E*1fY-Sj(V5?sgUI(uswiqpz2r$nwR zN>)^PRCFJIa*Kt*Wm^j}YNKG(`F{7|3hzLoM%<1~MQ{8+KQdKH%Uzr8P%g`<=YCH9 z$6UYDtV#gm@x5ohkY#ggZ+R!Ft~MQu;Jnk{Cz04I+su8z=-3yz|p)`!gaMO%s>ztQiE8 zeJ%;w9Kpj4>eGrv3Ae1*r!&q~F5@`Eb3=&dePNSd_;<3`k#rNRb9-gF<%2iVb!Y#W zk@eR&I+dB9+H(3xL;L+wzi!1c8=K(~rP`4W;^Tc$HGd@UZo3m%;t-uBi*IyKslA_P zRFtB~Tn@4p9obRv~b|1QzGCGVdW^Ce-fAlrBHUAviJgi7Pvvfeqf47oA6~0|8JfcM! z%Tn3y%@#gjme9wRJwXU3k3F{VT{inVf6Iq`>Ds}cGCde)hxKF&`ukY*SFgE~eLGC^ zK(30c+Wunf<7;RaN82COVWhPYV=>uc)gU-9LxgBNaa-H6WnoSPwt~j}z^{voG z#D0l4r=xPMd$M}nJxS4dCj!f7M9p=4GrMFA6nttXz98&b9^KGZ!`6pODPe1@_lL&~ ztyIkOl9g{t6OHVu3X8qyX35j}ASuqk>qVr_XJN07>a`smPd^7PWB7jLox*z0_^(=| z(8K8hHl9)?cc0@!?v;GsrNhi3hvD;z= zpYtmE8+m^$*Q(pqIkz#-9#bb3yKM%C6_q=HvcoY2VlCF_^@C^CtHluN%#$SC=8| zn%9`{UWl#Ol4b-LcWiafADqXIp~G%?p9fBStsl+Fw{kpo^0HpGIpkGk8Rn*!(hA0egBw__Q`v3qqm$P1zPHFNJ80(}5Oqo|-Z+hK zqo{=iis@4w$Er)Hqv$Ov>2FtZB1&!@;&@@b&B50|*0=Gp4K@yMRI=u&c;@t3kIP8| zg?Dbw9Ewpj5y{V~3JeR*>KW|Dm6uJh0ju+%^!Vq)F(?AqPEHiGq`H{>TTMCA4NY3sAGHA^c#zCL71 zuwpI_G?RI=uIhSC(Vap>^i7TA#AxO#_pSA=25mZZ>x}}YhcB$HzLnL8J-QybAEELZ zYi?>*3$XuHNT^s&qOl});|d|+r->_$oa7Ho9gOSF49n;;joW-9Cv}y1HPe|JfKiK2 z%yJdORG2(oorjDR#Gf@k*jbtWOz>Odm4R0yE&Jrwq}@lmJy++G3X!KKu zM&raEZ(eIz@YlT;ID7NRvXWb#>+~!It`qiSvHGrDa3vZ`p??1rysf{@{q z4q|aiQzOwnCwZ;d`ujQ)&+?~r)O4~xo*&oFRIoTQr~rtPG0X8Yt8(;!;Q~jijt{8W z%58NV8Cpz!2gNNPdDQdEa~nTcZ51ez^T1s}nuQVEz#exfoqz9s_hoCoxTRU+#$dKI z$2uL9jumsrwN~!B_fLG7_d4Zd@LA#l>rtAlxT@s*^W~~72ol1~bOJDZ1vBmUGq-RX z3s`S%Z!HRlKp%e8Q&JMdxoNX)vs>uL>mq%|Hu`9N6Z8R3F5M{;6jNBJZ>_sIu+e25 zBj7bmHW;%2YO-3ds(A`QepUT^(*51a_~yxUQe#`N)m4<6zytj`GsWE&Xa2Ab%947V z{^Arir}IhO&6M}qxpSy{yT33c5?tTE8Q^a750LkIXI|}gm|Z;a>E{y$vb*I;cMkTl z*4=1avrkXJs#{eHbt_E0*hXcSShC#V)-^-#3r!^&Cs$|eF>R&%Aryrqhl{)vc>({ZiWImq<)Yn;S9k zf2OqUvg5}OS5X^#AI-`&@$TANg}ot0XtWq;8W^Yzzciz$T=3;4U-5vp-&?;-ge7b-dbl>I81H80tGT~O8xiQl4N&fT*@Zmy z2Hko5)2mD=-akrK%Nl|k&A^)=_qmy-A6og5qFZOt7G*%NP{U*8jVFy{VFmgv4%Yvd-0 zRr2j2n|h{;WH>I~6>v};>(&U{RM+otes5&YIDZ0$+2aMvj3>rcJPK#7wp=>4VNN~B zS3%*4FVEA>oAW%_#0)_Zl@bt8*V|yJ^N}B?TxiF3_S?5QxizslQr&V6#;yjME9J>) zQkQEkUW(Dv`;hqfB^JwfdqglGHu0eH15eTU-VL^jYsJRSaSIW9+!R^}mpqFNvj&H+ zW7gxuqf`)e&0minMFU%V_WR3WToTgSx=uk=^YeX5aW%lvv*xAXy`sW(Y{B)+MPCY8 zqm2Qz8$UbLN*r$9ZXC&?m&d*L1p;`T5Forg@j2E)UPq0dYq>69Svw%>h?XkH2xe%-YYZxkmq(-zwLgFT ztFiZXA-WWKL@r5VSz)Y(7I{;HU7a`2x+)~@ZSdLT*xO!y zSAZ9iB6IxxtsBBmWe*8DZqd^b+Isf$2_Eu{g!F}jZ}%b| zI>_jD%$!RU$}_xG+V~Q?zR2?j>X0tIN#E8mS=(d`Ca277^Oro^UW9 zh`W?!p|yql2Oqjha7e+{l8e0dqUw=N3VzuXcOp}_;K^ijetnF#^r-|)^(vLmd8RK!>wI{`ye?ZG zBWvrg1>WJbO%xk1l_)qTzJ2tFlo%r4Z(om)&9=pA7!??Z#qZCF8ts;orJqTd%+3nYx8gD__P_QzSE|fB`{Rhl zR{OSH^X2I?@!=JT%W?;?@#Tjb#==`hcVxa@o#~**TozWr_R&lae<<~?mC*Tt7w(;! z+zPG%U)hE}3khYuW02Os+6_7xRlmPhFK?-Hpn+g_*vW}c?mn)UmHqt@AlJO!TSO z)$w^Vmo-ydKPolvnLZVxs=TH2(yE>I9X~=nEoKs|UUqs6jIvsCjizU0UjLL$N_>(m zk6&i2!^d{HoGYipz<;|?r0S6*p~6_b9b0c;Hm57E-@a}Q*YUk}M`mxc4(6uXe@pEC zA?aO~RAy%3n{8i4_I)<}%{P_o8*Dbm^{6w><;R@;gXD(~;~wu9v@c41D>F4jPQAhD z8g!^!L3A9$n_=GdGFTZ2@cWOHxVS70fjEK(GYTFLxQykYagVki!}j9M5+_;$MEh%2Nyd#(2tS?)naTHYDI7) zl)aNT28`-L@cp9&Acr&sU8^A64k)PyEwI_c8T4Vc1;emhT)~(s8oVGS4BZEGSGRV= zJ5d}@VR8_R2Z2Nb8>GkQhml1vf6Yx6BKMCD7GVY>ozuoka-oAl^Pz+(Lviv@Ff@#l z3kMt%3DyKh5C?>U5RCxp3GUQTR*G{ok&2VJ1UC%~xEFB*U?8xK&l6`(}!3Swfg%f6VDw3Dkf0s*S8F&vu$2Ni;v zi%|E#Q%7hELhli*J;2C!XJCTe@juTuB~}oPgg`4HneuXQ0cMQo0CA1@Hv_``0+q-C zN)!NvB`m;M(WjN8pg=eg@s6G#`Z4l$$#A*#l2?P!c=d*K$)7?9QAx1c7 zP|lZ3C$KOWq`nIn@&T?X$O`@#_%s+_$p@_-5{ky6PBkTZ0*uC>B2>_1fEpGLkOebX zQ-b+P3)+AH<;~H>*&fnG9OWL)o8SbrhN3_5wp2-@gk4d>iHMLHf&vSuRtsUMWhlK9 z(j726^G}jz1_>UNyUE!WfzXC~Td)!Kz*M>80iFpY7k3}zPmtkgidYfcq3}{4*!mH` zq?L}22nt`eNPr8-<&uaLfy36Qzy;Kah8L9*2!*teummH5RDdf7oDt&*!NVG3?l?(A*)RAP5jy9=>5AO!Og= z@J_;(7I5ZaFgGD`A>15|#9%P|7>MEh;2i(Vt{GJoXuC6&d)vhTbfBexL<@{^#zSL+ zGRitr0+9eCLx*;@*gR3q3NTa{cNv4A;M+m5b70;&s?sh37=jazFYIT~d=enUYwD8I zZi?Yt31T4GC1{h2Q18LjS!~qQenRtGI%*Ld3W7ofQHd9{6!KC=5J1BN1L;wqQ1RXb z5G)N~Tf`bgB|(E)U99O8>}xP$9YFzq#eqpCY~bZ_asFj?It+Z8qJX5>g5b-v=s?Ou zBNnnMKnE;-3TzTmRGAJzi3ncOAZlrlKR4Wf(rW$E&#C9AV>=}oiA0) zOrQv3NYE%T{njuh5m@75w-le3k_Hf=Vn~-DZajt9iodPBO?9$5UfBwaP9-t5btPf1wqq*q5<0nL8w+qkcgqi9|28(2B2O8 zZT@<5H~{HCY)tXI{?8hN+x4$n+5zLoPy)KZy2a$E9{0bZNNcp1D667_yD~%@g3N=f zT$T62whsoAp#_BDXdz)BCK%ibAY}(NL%>(yYWaaa_lsbKVEmtd2Oget_maxlength(); // max. length for a dent - $msg = strip_tags(bbcode($b['body'])); - // quotes not working - let's try this - $msg = html_entity_decode($msg); - if ( strlen($msg) > $max_char) { - $shortlink = ""; - require_once('library/slinky.php'); - // post url = base url + /display/ + owner + post id - // we construct this from the Owner link and replace - // profile by display - this will cause an error when - // /profile/ is in the owner url twice but I don't - // think this will be very common... - $posturl = str_replace('/profile/','/display/',$b['owner-link']).'/'.$b['id']; - $slinky = new Slinky( $posturl ); - // setup a cascade of shortening services - // try to get a short link from these services - // in the order ur1.ca, trim, id.gd, tinyurl - $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); - $shortlink = $slinky->short(); - // the new message will be shortened such that "... $shortlink" - // will fit into the character limit - $msg = substr($msg, 0, $max_char-strlen($shortlink)-4); - $msg .= '... ' . $shortlink; - } - // and now tweet it :-) - if(strlen($msg)) - $dent->post('statuses/update', array('status' => $msg)); - } + $api = get_pconfig($b['uid'], 'statusnet', 'baseapi'); + $ckey = get_pconfig($b['uid'], 'statusnet', 'consumerkey' ); + $csecret = get_pconfig($b['uid'], 'statusnet', 'consumersecret' ); + $otoken = get_pconfig($b['uid'], 'statusnet', 'oauthtoken' ); + $osecret = get_pconfig($b['uid'], 'statusnet', 'oauthsecret' ); + + if($ckey && $csecret && $otoken && $osecret) { + + require_once('include/bbcode.php'); + $dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret); + $max_char = $dent->get_maxlength(); // max. length for a dent + $msg = strip_tags(bbcode($b['body'])); + // quotes not working - let's try this + $msg = html_entity_decode($msg); + if ( strlen($msg) > $max_char) { + $shortlink = ""; + require_once('library/slinky.php'); + $slinky = new Slinky( $b['plink'] ); + // setup a cascade of shortening services + // try to get a short link from these services + // in the order ur1.ca, trim, id.gd, tinyurl + $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); + $shortlink = $slinky->short(); + // the new message will be shortened such that "... $shortlink" + // will fit into the character limit + $msg = substr($msg, 0, $max_char-strlen($shortlink)-4); + $msg .= '... ' . $shortlink; } - } + // and now tweet it :-) + if(strlen($msg)) + $dent->post('statuses/update', array('status' => $msg)); + } } function statusnet_plugin_admin_post(&$a){ diff --git a/twitter.tgz b/twitter.tgz index 5f33a2c9e4d8536df9eab28caf0cc1c22c2dbf1b..26527383898f13dc0da9c45989b7987dbcb4ed3d 100644 GIT binary patch literal 8946 zcmVgp?M8yf2x>!Wm>KNZnvV?DfWh&DD>)JE$XYNHjT;fo|nJXzb3EJ7;MlAP46KFt_p zUMAVl7@aa@%9laYm-skb{`_w^lgb=+94O$%#`;0zKWS23f&3dl{`HfiAphFKPDz>P zZ(RP((?Q}@k%<$l$V4(vN~_aI4^suwZW@LvJEn!NE>JC7GmU8^8mH2P7#3fFD5O- zPhpAC7-C7m-uz7?gu^ye4iw+23(ccblI&=GlA}@va=p?VTh$Xpg8hPaz$WpX7rC7S zuBQ<<%rOoBVgb-r9Y-^gVbYdBu_3oYj76Zk7S%bKYd6IRJak1Y%VySa1PE6psB-$c z`6#Jr6~-!teBlDUydE8 zh4IC3bpW-H`SO^Mpg%;IeniTo0Qgc6=Pn2~krBX+WlY;SWZ-O7u&D$Aj>mLUmh=(B z^eia@5ZsrR(BP|KTIoZDiXh4Xz1VbOpnd(O)jM*=@a|$r@jj$VUMA^9sEL#pf4$3CP1E_!6+6TlCc8OEFh;dFXqjDf|bHGOoCq5FmVF@PGkY(COqQ$gE+ex!ggP)zp1jS5@Q8b(TN&n&?QxB-JCc+;`9gr9Z<)w3pkN}beU?D%!Rfz?DmMKHx z8Sx~?44#{3utd(AA+QOU-p~ZEAM^4)vzMimEWZaq^+Jt<#f6*iL0SR1zQ{vBlJLzo zr&DMV_*YSNSGfy>k~d$pWN#Kt2vy2MT*>ohTuX|c5kjKI`#INpZIo_f1yOY<_?8W& z0vXN7%O0{iE_Es+JBzgpur_P6%1a`h9rFr`y%5n^sYKFJQj>|9;3|-UI!Hyq@}$9^ z1pSrr<#NY7X8smSw_~Ous{udHt%a{OB>+VoE^`$!Ry6Q1zs0#Sj3}#Ru8G4g@<@^K zf~r5NowwSx90<4`>$!fa%#Y9q(nnECWjWK@crZpxcHiWZ8K zW1%t(P=1Gq;2?Y|QXY!mzj%-rb)Z;O0&JrwHV?v@RuBgxj?xw=0YX(XFAcLd1WvFY z$Oj()oJvW3%t3f}7$PgbhrYT(`2ga2v zR1R27)ZJz5e?%B~!V)dB9yw>Jx+$>+M;oRzZs7~wIjM%w=4smmBNMn#4NGX1%*ZCm z`1-mMh)GlGmvRBD=FycwEUAU6eX5nC8Xb#evT=x;u^632jfeFk`k^iv znG89DMV3>fr!4V6FZ!9pSK_+|!z138MWh)CGk{r5PjOO_%_!)Y!Zg2`HGeLZ$_mJA z22E^ul4@gAaN(CGHpL`}ltX++4M7E4f!%|%0_Yv9-Y4L%WG4;bi-$m9%h7U6_n&v># z0V!%bOUArzg}38mZ^uvcKs>S1pY zdnOdlB#s`lDb!nEHK&Yi;4w#pqJnBwkW83BKl8Rf zDJ~8`^UK(X&0a#OkkO?aI9SU-gfunj)iNXldSx1H5r$)ts0)%aoZ@+Aq3O9DcCnR& znKhI!>4dt&rrkzIg1UsZiP`x9Hdvv=2h%gHFyCl~vd0^c-0hgXuIWo$@CS2+xqjfdubqBUw#63{ZR^%%EuAE`B}0-> zkW1)VGDUlRM$$(l-9aoM$+>0{b5&YJxm_cG+}a$Gil{>;ttoDI3X7SVehZ6Y%U3j2 zmwy0VtBFJursg+)V=afa?r`>^_t@rlB%W) zrYR~+)H29ToCa^ve|uE2BuGLvC88eGYr_W&s#=(=6od?#pxCx4YqS?v5(_Wn*H+|| zY1*pWGA8jH;dwdyUuBq9mXF+zJfAo=)3MjR>fM=wJj#c;ZOo|6|^#Ea4gYxiR3 zIgBG6%I}t2TFNUf-?Gf&?*y;BHFy~}=FyhoI6E9!r7RVwhvBF@t%#+bf>LnRBf(+A z*HFrsKkz9~$j`v}JfO17cVD}HjUFelkW_F^bQsv3M>ZVCJu|&0h=<7GA_o88$qVot zbOj!A7Bg+=Ex8*jd*35}?C(A3rpKby@kM@B(Xf44aLNs@3VJB4ZuXAgNiwd^Y6>i7 zWi=hhSoGpq(V&De5yu#6Jn+sF2a%q4S4V!N&JQsPj+t5erT{XKP;wy4XXAnFbW*;p z8*|&oWE!cZjUMc3YYEcU*@3-8AWI3k;fV)12w*lu8qdiRvY11bGFr@r04f7iBx?#ojmxjh!=Ue1WQcDtLcD;qM_zdFj1Vnic1AlPc;LN))m@Q#3_>EYK3cMo*pV| zJ${Ch*TdRtE=SoRG@6H6?!nGjOZN(9<8A;ybF%11(a~GxIo{?_r@2LyoCP_0Zwpgo ztYsJ?Nt35xcqcLpw9K79XU?py*vwfo7R+Hz;83ce!nv9u>sdvO#N)E5sC-r>b7Csx z&1Wi?s?*Xy438nu{OfC*@N5x=!cYwwN!S|Z%lr(E&bE^X%i!WqD#AZaBoD&8~|T<#HE77ZyoWm=AEc<-;`a6)s4duUS1T^f{eB|V60AwC}+ zE6;J8UinZ4@GRl3?zZ4Brwgjr=xD|+XE z-*zMi;<6oK=eD4{Oho*JpR}NPAe<(zWfY_$HoJ3KqV+3yP%Mp!>;@z~HlZLeHU^hf z(JqVd>y<5)fj~aR@p}AVu(EPGcBs+LQ32gtq~IqCFiqV1t1fi@gTUs#8P*LA-Mv5& z6!7hGA*X z3WN}<6MaCH5lx8DLMy}yiV#VudL~2`sRNEBu`zowg;x;!0Vr440%o(Gb^c%t@R5-n zTZd4hp#nrAWS8P{ui1Ff2`w5Pqnis*q*awcD!9M)@8AB`pE9R1haJbzzyGYQZ=765 zfB#8;CLFEB-+wkvYW)A-e|{Oy)t&R^jIKHj?QnF**)zM~?^^i(l%tP=e?Q8Z4*VHq z&*rGM^1^?v`~(J1a%O$gX~+5u-EfbVRx27J(W#Nz zsn%OB!t9E%IHB82IQ>vtRkSH4q#?5*C8WQcAno1tM?Li7?Ew6Qj+t#esa3mgU6#4! zrBk1}bo;i+<8BQ_r4HZPQ8UQdBt_P=bv*gw1=7E~T=gF>yzuUn)D2ZtQ|d0e@4iX5 zz4qM`o0h!a^+3-#3(mTC*2eQvcir=~WB)yK?#!FddgxZY@%IPbTOa%Mo5%Ov{EH(` zIPJC-iRYDVQ+KY|=HD}Q`+?i+zJ(R9E;+wu%$%{8tyy5-UG>ENYc9U`p4#N*)ni-w zuDj#y>*awr|MZ|8s965XJ0ce?96x*PlgCt5bnG3SyZt9)#$WfxD+b=VM&A5J?4qte zUH!_l%C)at-1*F?iffJIejEPiq$8`oKK?p0^2z<1Y8R->@BHCWS3Um7$(zr;{J^AJ zUY+%gGmI_YIpT`%j(K|h*T?+h+H)qzi;mft+`sd5ff5^zu`Np;xyH_n>1)THWLB>{|HK=gd#7UK!+UCe zxnbZd>IXaG*S&x8s}C$4{r4NjE8E}v@%je`cJ03GPX8?}r=0S;D-Zhj{i^S#u`6$` z$=KKY^Zx5LFMBW(ow)75ci#Hf<-K&4%H%0GL@r#n^xSthj~UnW@bN#} zsI5MEVJf+P)P%?%Zk+JD6L(bh?s?#*sY|P$ul?$(D_=}b$-O!1%HFPLesk;GyJuWI z=iVoFpYZ#Q?~QqW-48ZD``nZMjV`Ueht?~LmI+NUV$-qgq6 zdM*6O-mM$18o1>3*gexPd~V;Shi|xI;IwbV9vio2@&()fXW5dSFYS(8(!FbW#mZmo zioQGVg=Z!vN_6hqIEcne27d~;Y<^G!| zB|_$7%hv3Cr1gZxZENnTRw^rBU3J8P{gYNatDLiA`;5CUTD4&HZ5x)zJCBL1tZCW# zeB*~Ne)Qg=uMX_Le*Onr9@~BAPk(-8@Wr3D|J&C0fzWXM`uF#&IB@SL_pF}!!8tP` z*Pi=9_=rmvRK65%yYcx?C!aRw(SvX1&U|~vj=fK<>i^58%Z~f+T~GgSJ69gp)Rl!5 zP}*n3R;tB<@&si!>?1@iEN$=%L9=idA7`Of#O`u@Wk57uX- zcm{@!8Cmp2z_-zzmyfU8@p(ghWRqS=LxbIfO)36oycb&8PuOJC_f1k#O?+!PfAZd_ z6@tP-?fli9v#(5=G5+elgW+Z8T2pclrZs%~cvW9@d{k-{KEEiZV_Ud^XWq7AKfN2A z(zY0<_eW2!wYU~+crooCnL3qE)>+r=bg?g3boBI>m+#%H%f0=G`zY>U{4rk2k)9QI zEjdR_&K%BkJ-ItLcHts+*3;q>Nq4>*VRiL`HCn^B)q6Fj<T3wuZIL+AhsQ&!DpZ}CK;FzvEray7& zmQh-=;ZbhIo?U&v4CIU`<7t)KhtJl^Tkr)wZ0z>0TD|)IGj74OjP~Af9$SMp4*XLq zZe{1WiFY}U2jjQ6c7E4n=MS?_8*punZ+T;*-|O`P6V z*Vd!|^)1=kR?pis^JncAIZ?n0E|^q0W7(>D;>!+0`!Ddwo?dYt|E$r);;UZOPmD{t zdoCqheYRC6w0OPF8J!8D7<2LFUjLG(O-5t0{jCJC<#w)_#}kt-xW(Ybl3^!gN0J^M z(RT@5mRxs-SKVcNzU6%Fx@Y-qtLAB6Z9cZackfZR3Y|Cb&;obudTd}@4Cm~eM*Zb0 z-B<747R@eYPmHxWGA=pPFKOxhA1ao59zE$15Ziscpw>7LYp$%wPBdcDYn8X(Ii0@Lx=CXy?;n5Sy7ZHbWXbW%NBvoQ zPngI1f5dU}(SBHWwl1&df?$D}eqQyV3_HPCUA@H0s!XF(6FlqhD|&7QTfCbwW7>d+ zQ)OIzmy1Dy);;gOzF~@ty6x%d{)hR)*(WVnKN@kJKWi}j(U4Th&35p35ktevtewXtx~jnQQ$Th`pgMp=d|K9%-E z>Y>Oc@z*|&&FAdduK&x(Uh~e9seS#Y^^7hxrMAzobTclt@OKJlf1JK`h1~4g!-O5P za)%XON^UUixmoe4uYFd~uI0^_3r8B+X14$Pf zaZGzfWx6+K^!0A+l667eKATy4vV#jP78utY9{=OTcV%znCH%;K=gO0gurmW+n>l)X z?pj(J{h8UYQeRzc@5FS^d7)?HT63xdhemw)y^r@-Ye)TUMr7@>#kCO;5u2;GWZ&|$ zJyw<4)N|l&bCFknU`yxO?1T9qJNM-$`0kii+R~rJ(>~qvZEl}g{`Oigzv|mk|E4P& zCNG@7|AQUHCQzX3o)AEixDbhz+&CL#&E>0)`~sGh2vdY z&%b}ZBCmPwLav@q(bwz4oG{m@BS!V++|lyMPpV7})82H@*|8?SXjAp5_a0Q0>-Lp4 z8g%nU2Y=J%(3bSpx+cTK2SKwrvl2yfh84|S`(gL>4c7xQW|umJ0Vok;pwv4dZ*}+I~%3%xMp7K z-mu0Xy0vjGXV#wXCDqoe`L>B!)?HQqYBAz|AH8q=c+>F~K~}9DPTjddiW(iOova(( zdRa9aO%1M={Vea>a{IuC&(4^pK6A_YR61*M+57f43_^c76|~>wgzMY*KtqYkNaMnG z-*E%F*JLSf-j*$k;EB!K!`FTP+~rBH=KM#W|NTAYxchj#nmX0xH_rdy<8-z2zoVnG zhX3WY2nUEd(F%Nq&5a+DQe`M26$`GylIBvuCcjbv)qy4hA;c4*2w~7JoPp*6X%pBv&;?bNa-ONiO zFy)8>#N^yX#O?L%oVGw*2h^~I65`kDL(+HEu1i)swLZ(8Am;$R4vKWY# z#sVSg2pSF~z!3?Az}-phMvy=x@IH#DGbmJwlAt3yV@Sp%7?(gZ%A<%(7!DIMs9@{pED{MZ4EmumKMM3h(D$Kvh3F8C z>;*(W3|h%u-X8(HE#+YfvR8u{ z12U2Th%_j&Qxrc51tSCMCLo4g87PNHi(qpMQxd3`$`epSmoaEEpk9)^29|lAV2B|z zqKSqW_@zqX0gc1NNS+`V{16}jVuS$9J54o&xN%5RBzp%FAK_S4a5JQV;V3Rh&o>of zg3LBF$dfTs8YU)yx{(tUtPNVSvPTFd;z;D%U;t_^Mn%%(Xaz%kXDq@BQtDV+!8ydN zAhC|s^WFgMEEstNisb?IBSZ5h!(D?W6e&=^t8R&0ppeLb%2YwzHk3_+j)bG%(HaWO z4uc3os*5~G@q_N#<+ueIIHjR`^!$>OLxltJ5c_2i05%7F<8wt|H53X3ToJH9AMZe# zh>NsPScfWS5FX-y3eP3D(f9%)4E)zdnZV1^2IJ!M0s>HfNXi^VypUXwUXVJES^^V* zu%l32oB%dYHO|Pp$;6%u3VF7~t zryM6&8X2ZSn?))QAuV3YI0fUr3Ob9O#bTL|UJF-Rxr)2P4k7z|iI*~LUXZgP9s@;a zD~ganQcynkYACCh!KDVMvj^=d2VD<rdd`xvE3;~tVE+tXrEI{qjY;0uUkj6G+C_8MB^bK_mwn)vxAYh)} zx#G!^B&bcs02{Eu6`e+EgTGWMvFn3Z|A1$=Dyw zl){W|P?bP4|L@na*Dmyi&P2NZ2W|Yu`@fwdc%~NrbC|Aq|9>sAawR;vf|Y;}@;C?| z4UK?YE2p5Rvy?Ficw!BO1|&Ml_-kjc7z88u@F> MuT#?5831?y09DFtBme*a literal 8975 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 pw9rBeEws==3oW$JLJKXl&_W9>w9rBeEwuc3 $max_char) { - logger('Twitter: have to shorten the message to fit 140 chars', LOGGER_DEBUG); - $shortlink = ""; - require_once('library/slinky.php'); - // post url = base url + /display/ + owner + post id - // we construct this from the Owner link and replace - // profile by display - this will cause an error when - // /profile/ is in the owner url twice but I don't - // think this will be very common... - $posturl = str_replace('/profile/','/display/',$b['owner-link']).'/'.$b['id']; - $slinky = new Slinky( $posturl ); - // setup a cascade of shortening services - // try to get a short link from these services - // in the order ur1.ca, trim, id.gd, tinyurl - $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); - $shortlink = $slinky->short(); - // the new message will be shortened such that "... $shortlink" - // will fit into the character limit - $msg = substr($msg, 0, $max_char-strlen($shortlink)-4); - $msg .= '... ' . $shortlink; - } - // and now tweet it :-) - if(strlen($msg)) { - $result = $tweet->post('statuses/update', array('status' => $msg)); - logger('twitter_post send', LOGGER_DEBUG); - } - - } + load_pconfig($b['uid'], 'twitter'); + + $ckey = get_config('twitter', 'consumerkey' ); + $csecret = get_config('twitter', 'consumersecret' ); + $otoken = get_pconfig($b['uid'], 'twitter', 'oauthtoken' ); + $osecret = get_pconfig($b['uid'], 'twitter', 'oauthsecret' ); + + if($ckey && $csecret && $otoken && $osecret) { + logger('twitter: we have customer key and oauth stuff, going to send.', LOGGER_DEBUG); + + require_once('library/twitteroauth.php'); + require_once('include/bbcode.php'); + $tweet = new TwitterOAuth($ckey,$csecret,$otoken,$osecret); + $max_char = 140; // max. length for a tweet + $msg = strip_tags(bbcode($b['body'])); + if ( strlen($msg) > $max_char) { + logger('Twitter: have to shorten the message to fit 140 chars', LOGGER_DEBUG); + $shortlink = ""; + require_once('library/slinky.php'); + $slinky = new Slinky( $b['plink'] ); + // setup a cascade of shortening services + // try to get a short link from these services + // in the order ur1.ca, trim, id.gd, tinyurl + $slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); + $shortlink = $slinky->short(); + // the new message will be shortened such that "... $shortlink" + // will fit into the character limit + $msg = substr($msg, 0, $max_char-strlen($shortlink)-4); + $msg .= '... ' . $shortlink; + } + // and now tweet it :-) + if(strlen($msg)) { + $result = $tweet->post('statuses/update', array('status' => $msg)); + logger('twitter_post send', LOGGER_DEBUG); } } } diff --git a/wppost.tgz b/wppost.tgz index 091f1a59a39a982815ffe0eec0e5a3d8abca033e..fd0d262b3ba00a32aca2709691f23043816ca5cc 100644 GIT binary patch literal 2139 zcmV-h2&DHPiwFQ_@sv&g1MOLDZ`;Tb_E+myOjsk70!fr?%XSq>MsN+%0?Ea=_^uz~ zK;X+tVoh;ba%tJ<<-gzT8((ExbmJ6lLj;JqyYtNKGqbZZ)Fz5(!mPdLdImX%1(E!JXhewBpdoX%dtJISw%#H!}*0#I!;~PJ` zXI-=$oea;;&c26D-|^W<|I7dSZjwBM4({NSljD2+KN=nh|BEmg4$%L{M<;_l7(9b5 zwdeob|E)hs*Y`+hI|1nhwnKt0=+QJGacHk=t8yb7naVMb5+Sr{(7IqpiIRXD_ z?JojqvoQo@!CtraH@?SKV>lcPqFa1j+wsy5dyGb77>c2_6?wCq3o!AFZNi(DCs3AC5++rbhjS33o@Gv;f&WLIp#9tYSRTZ*6pOpR41r(xC2 zY52IKpXB5k@D?{Wba4%Gi<6(=;2P{Vb@2}9|CW>YEeoiV(10)kJ&dR|y&;decFtMt zHa}!_$RNf0xWv=9;HUzt33}==sAoGJ1MQawcK79hqmP5XXukkS5if7rolZ-qj+n4C z4iS&P9Bd+?0H&}c82;$gg}-bUCA-QZvukQolmv6xNLf@LF+dCbzqFOuBA53f;oFg0>T z1}H)qxn&miiw3M>vY1K=5sHV2V<#kyd3HxmtZjz{1-XD}z?yizJvHz$;9T=T<0`%i zjeNK7`1WvbZW_lVWVmY^a|~UGjmdz78$0&7CzE_z(zRZ*qaj6A+=)=tIFE*=6vc3! zH`ZJ^GdWVpkOK7M#_aR6rCXziEP>1v{#Pc#K?H_wrW#;qkqm>kUk&8>aCiOAI>pc^Bwj8~S+am8&BWb$F;Nb?>L_dXPt(FMM57 z;(I!o=oWet+fhW~nj+c#*4K-1gKs07$+DF;?X6f^t;{dP{iN*^I8~)G2Nsm(iSVJs zXh5C;#mUx@$PaW?he&!w#@&F}xc@90K15pfg<)sf%HJf)#OXPs?$bQ7o6wa37Sdi$ z)jXe8dlExv}M`m8E6yV zrgo+*|B_Xvi;r)i>dnR9;MZT?H)Bd*Z4WFtRbfZu(dS?$`$D%nJ>`#j6^`^|MpUt0 zl7u;TkX?C=ILol_OJtnzlbhonTtHIyq= zIcpU6tcQvjIvd=MUWy%bz$Y;(spjFMcA9PLp;A?}2gMepwU5Q>ZTnz;@$u88u4R;B zvm;mRCp%VMUEK@_w9k6>ONUnvyP^~;s5)RC5Dj39#ZZ^U{<;X5%{0Qx@@Wk(n`wk6 z3Z)vB7!^3J{jb8aRmbKXc-gDi!(XoaM6?bV;11Rtci>>ZKbXmuqai*vU87+71y$Qlcl)^eEAZp$3m^+$Ko8e zhPqzyrGwS`prf~>*4U9hPq5Q*`OXl(nZ2dXLhx2HefYZ2d*(A)=UJi+7bPqXNGRz> zbQ-ZlxFhSzi{l~zc2$DiHm58VKb~w&KcQEOPh|v0@(BOXAFOUQA{1 z@Zcj}(csz!Uto6`Gla!lhXZ~>duL~(Klg@L#`&x@SrfLR-cOhwXXtPB%70FoaWzI*rfm-%1b zT)vTEp#ol<6`n;*MtBksv2=^^B7e<@gKSlo1BqbMy7&@#b#C%+h4O0tZ~e{q$MfU) R@%(Q*e*gppn%Dp+00232C3XM+ literal 1930 zcmV;52X*)#iwFQs?0!xF1MOLDbJ|7__E+;OHmb*h3?PIJb_w9|q?xocN#kkU_CuUu zgmi#vA*s>{>}m4fyZ0sugdLQcbUNj}7~Spd?mhc*yXR#X1~D}bb~#!&&dxdq?at|0 zyM21l>U7)PQ;&wS`om(+_I-`v~c|g=)!5I zYo4EK-8wnzcDrc*Q~YrNtsUr682@wo zSH2UbZxG)ad!*r6W8&38%_cF4d~05q53M*}29dKqKlXxYVeZ}`6D#qkSb)DOhZ8Tb zXb(Ixp)V?jOV^>Z9<*Dn@D4xcRy1|}1`WaSKM`-H{+DP9Tt`2Pl@ ze}OiyRE+1(EASkC#yIN1?-)B*5s72CLZ^V2f$tNW1`(t9jYP2<_~`b{7W=+T=q!kO z@YcO0@K#|6{TZcU&oEL{n|3fa!YG)y9x>)fJjC5br7}r;n<7IH9yoG+w1?+aYZzvL zBO+5brX(88g5b8Qa~dzOEpJ48N3SD=ZaGfi8wE$kMO`wD8Ex&wCWe0mbmS9?>Ebr# z?6zVkcf}7d4ZQ@@1B#{8^{1TgR$5B(t(cD3o|2r!9%PT{Y908*Uxz;NpB(%G%cp_A zsOgg!;7e@(kqPj^DA+)qt9pE7)sK(H$`bCR`V0i{?6#}cYJ6Ha2~8p&Ey_NQmLca4 z1DFyz3hlt3xYKHWXI(0!*L9_dl;HYwVR==>qXvTkm`Vf19WTyu0!HKek-Tk{EY2$? z9_AF{Ag5|xv=pGEUw{t$$|uf1lRq?^>w&()ZVb%<=zYgsfbHS+KhR{ZX&|Nz#8eyh zT|Z1H(EE@`R#--8z)FXKCJi8pAWes6PQxbXs9l0orUu3k^i(VxO`uhs=Sdpy%o(!G zsn^)HzJUr2b)o0yjV4!qAx$1Lz)RWOz#Qy25F`=A^xh-!j1aC1oe>DFDS~&= zVQyiP=9E$@3J7k&cWuIxF^AG>4B561`i#!K8L=GwqX5@){acjn4YW*<1`<$8?x=z7 zg9fvROa=l%WX0TMY{evrSYkm;j7_nE8`%b3gE?_rYoK8sVpy|D?IybMwd}O7+41mf zb`nLzr+8|M;;AP5V8S6`VMQ*pWSkvKnARy58e*&TJMOBA&lg=&Y(;k-m6p5~Ga089 zMRKgatjr;cEmbK$rU|5~uwUsG#)R`wwRH&|YD>z4RpTZ0Gje{2yuZf*p5w>sw{MiI zlRM1R=+iI>qIqWaxR4l>@3W@BzSUHCD$3aj_c{#fwKC{^dOL{FW`r*aLR?2B6V*{I zBP$F^R1hSZp&~t>*Vr-Al{8x^)n0MZ^+N56Ur$Ou&Szby$bmVbSt5KaF=~)yKpxr3 z6Inp7%iu{bkGSm-3(ucs!^c2N8_um^TWwKSfm3T*(WaSamw_u~m`i&ZRHJNJ;>E$r zhaOLIPYYSvi*F6tYWKbhnOfTbSr*7;AWIoa$g=Mgwrpw*wlv%905<+qu{C7b!^SFH zY<>e&msdZ*ufM!0hZN_v*|EgZ8ah0W?gE+g!Df4SR^NEmFj9*tQ2BaE05-md^vWxR zS<3st1UAaitfjI1rTX=$46h`tHW#i#zykS5G)^eRDsP*6NbE?lhSf?{tZMl)tEqg3 zPA4~WU-2C@zm_3r((s%4~Ly(TCQ<1MSM zx@rbEw-0LdV~tf0+j7ZQP(_BBLzG~fFNW$ga_4!5=}IYnX+ACROIJ$qjTO417@H}Z2&f1Kl}i7DO)SK7>flB* zo2?rSh>vVB$>M|?2aWUd&i4)TM!OhR`g1~Of%6hO<01N#{A3TdLx$6oL`|P8*~Qv7 za%+qfgUXu6L+**X*?Em)DoVEo3Ng zSARCZ5`hvH^W2y2&|k#cY~-a>b;gK0o07#yuztaEYMDJhiERI0{jb!1?8koW$A0X` Qe(ZAm4WdYSPyi?Z08DVi)c^nh diff --git a/wppost/wppost.php b/wppost/wppost.php index 9aac6c38..b987778a 100644 --- a/wppost/wppost.php +++ b/wppost/wppost.php @@ -7,17 +7,25 @@ */ function wppost_install() { - register_hook('post_local_end', 'addon/wppost/wppost.php', 'wppost_send'); - register_hook('jot_networks', 'addon/wppost/wppost.php', 'wppost_jot_nets'); - register_hook('plugin_settings', 'addon/wppost/wppost.php', 'wppost_settings'); - register_hook('plugin_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post'); + register_hook('post_local', 'addon/wppost/wppost.php', 'wppost_post_local'); + register_hook('notifier_normal', 'addon/wppost/wppost.php', 'wppost_send'); + register_hook('jot_networks', 'addon/wppost/wppost.php', 'wppost_jot_nets'); + register_hook('connector_settings', 'addon/wppost/wppost.php', 'wppost_settings'); + register_hook('connector_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post'); } function wppost_uninstall() { - unregister_hook('post_local_end', 'addon/wppost/wppost.php', 'wppost_send'); + unregister_hook('post_local', 'addon/wppost/wppost.php', 'wppost_post_local'); + unregister_hook('notifier_normal', 'addon/wppost/wppost.php', 'wppost_send'); unregister_hook('jot_networks', 'addon/wppost/wppost.php', 'wppost_jot_nets'); + unregister_hook('connector_settings', 'addon/wppost/wppost.php', 'wppost_settings'); + unregister_hook('connector_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post'); + + // obsolete - remove + unregister_hook('post_local_end', 'addon/wppost/wppost.php', 'wppost_send'); unregister_hook('plugin_settings', 'addon/wppost/wppost.php', 'wppost_settings'); unregister_hook('plugin_settings_post', 'addon/wppost/wppost.php', 'wppost_settings_post'); + } @@ -109,23 +117,19 @@ function wppost_settings_post(&$a,&$b) { } +function wppost_post_local(&$a,&$b) { + // This can probably be changed to allow editing by pointing to a different API endpoint - -function wppost_send(&$a,&$b) { - - if((! local_user()) || (local_user() != $b['uid'])) + if($b['edit']) return; - if($b['prvnets'] && $b['private']) + if((! local_user()) || (local_user() != $b['uid'])) return; - if($b['parent']) + if($b['private'] || $b['parent']) return; - $wp_username = get_pconfig(local_user(),'wppost','wp_username'); - $wp_password = get_pconfig(local_user(),'wppost','wp_password'); - $wp_blog = get_pconfig(local_user(),'wppost','wp_blog'); $wp_post = intval(get_pconfig(local_user(),'wppost','post')); $wp_enable = (($wp_post && x($_POST,'wppost_enable')) ? intval($_POST['wppost_enable']) : 0); @@ -133,7 +137,34 @@ function wppost_send(&$a,&$b) { if($_POST['api_source'] && intval(get_pconfig(local_user(),'wppost','post_by_default'))) $wp_enable = 1; - if($wp_username && $wp_password && $wp_blog && $wp_post && $wp_enable) { + if(! $wp_enable) + return; + + if(strlen($b['postopts'])) + $b['postopts'] .= ','; + $b['postopts'] .= 'wppost'; +} + + + + +function wppost_send(&$a,&$b) { + + if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) + return; + + if(! strstr($b['postopts'],'wppost')) + return; + + if($b['parent'] != $b['id']) + return; + + + $wp_username = get_pconfig($b['uid'],'wppost','wp_username'); + $wp_password = get_pconfig($b['uid'],'wppost','wp_password'); + $wp_blog = get_pconfig($b['uid'],'wppost','wp_blog'); + + if($wp_username && $wp_password && $wp_blog) { require_once('include/bbcode.php'); -- 2.39.5