From eb2f9c98ac115ce67e9a740b200c832153ffa05c Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 23 Dec 2008 14:21:29 -0500 Subject: [PATCH] replace NULL with null Another global search-and-replace update. Here, I've replaced the PHP keyword 'NULL' with its lowercase version. This is another PEAR code standards change. darcs-hash:20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz --- _darcs/inventory | 8 + ...a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz | Bin 0 -> 8209 bytes _darcs/pristine/actions/allrss.php | 6 +- _darcs/pristine/actions/api.php | 4 +- _darcs/pristine/actions/block.php | 4 +- _darcs/pristine/actions/confirmaddress.php | 2 +- _darcs/pristine/actions/deletenotice.php | 4 +- _darcs/pristine/actions/deleteprofile.php | 10 +- _darcs/pristine/actions/emailsettings.php | 16 +- _darcs/pristine/actions/favorited.php | 2 +- _darcs/pristine/actions/favoritesrss.php | 4 +- _darcs/pristine/actions/featured.php | 2 +- _darcs/pristine/actions/finishaddopenid.php | 2 +- _darcs/pristine/actions/finishopenidlogin.php | 28 +- .../actions/finishremotesubscribe.php | 2 +- _darcs/pristine/actions/foaf.php | 16 +- _darcs/pristine/actions/imsettings.php | 12 +- _darcs/pristine/actions/invite.php | 22 +- _darcs/pristine/actions/login.php | 10 +- _darcs/pristine/actions/logout.php | 2 +- _darcs/pristine/actions/newmessage.php | 4 +- _darcs/pristine/actions/newnotice.php | 10 +- _darcs/pristine/actions/noticesearchrss.php | 2 +- _darcs/pristine/actions/openidlogin.php | 8 +- _darcs/pristine/actions/openidsettings.php | 12 +- _darcs/pristine/actions/opensearch.php | 12 +- _darcs/pristine/actions/othersettings.php | 6 +- _darcs/pristine/actions/peoplesearch.php | 4 +- _darcs/pristine/actions/peopletag.php | 4 +- _darcs/pristine/actions/profilesettings.php | 8 +- _darcs/pristine/actions/public.php | 2 +- _darcs/pristine/actions/publicrss.php | 2 +- _darcs/pristine/actions/publicxrds.php | 14 +- _darcs/pristine/actions/recoverpassword.php | 20 +- _darcs/pristine/actions/register.php | 6 +- _darcs/pristine/actions/remotesubscribe.php | 36 +- _darcs/pristine/actions/repliesrss.php | 6 +- _darcs/pristine/actions/showmessage.php | 4 +- _darcs/pristine/actions/shownotice.php | 8 +- _darcs/pristine/actions/showstream.php | 4 +- _darcs/pristine/actions/smssettings.php | 20 +- _darcs/pristine/actions/subedit.php | 2 +- _darcs/pristine/actions/tagother.php | 8 +- _darcs/pristine/actions/tagrss.php | 2 +- .../actions/twitapidirect_messages.php | 20 +- .../pristine/actions/twitapifriendships.php | 2 +- _darcs/pristine/actions/twitapihelp.php | 2 +- _darcs/pristine/actions/twitapistatuses.php | 6 +- _darcs/pristine/actions/twittersettings.php | 10 +- _darcs/pristine/actions/unblock.php | 2 +- _darcs/pristine/actions/userauthorization.php | 6 +- _darcs/pristine/actions/userbyid.php | 2 +- _darcs/pristine/actions/userrss.php | 10 +- _darcs/pristine/actions/xrds.php | 20 +- _darcs/pristine/classes/Avatar.php | 6 +- _darcs/pristine/classes/Channel.php | 10 +- _darcs/pristine/classes/Command.php | 34 +- .../pristine/classes/CommandInterpreter.php | 52 +- _darcs/pristine/classes/Confirm_address.php | 2 +- _darcs/pristine/classes/Consumer.php | 2 +- _darcs/pristine/classes/Fave.php | 2 +- _darcs/pristine/classes/Foreign_link.php | 8 +- _darcs/pristine/classes/Foreign_service.php | 2 +- .../pristine/classes/Foreign_subscription.php | 2 +- _darcs/pristine/classes/Foreign_user.php | 4 +- _darcs/pristine/classes/Invitation.php | 2 +- .../pristine/classes/Memcached_DataObject.php | 6 +- _darcs/pristine/classes/Message.php | 2 +- _darcs/pristine/classes/Nonce.php | 2 +- _darcs/pristine/classes/Notice.php | 18 +- _darcs/pristine/classes/NoticeWrapper.php | 2 +- _darcs/pristine/classes/Notice_inbox.php | 2 +- _darcs/pristine/classes/Notice_source.php | 2 +- _darcs/pristine/classes/Notice_tag.php | 2 +- _darcs/pristine/classes/Profile.php | 20 +- _darcs/pristine/classes/Profile_block.php | 2 +- _darcs/pristine/classes/Profile_tag.php | 2 +- _darcs/pristine/classes/Queue_item.php | 10 +- _darcs/pristine/classes/Remember_me.php | 2 +- _darcs/pristine/classes/Remote_profile.php | 2 +- _darcs/pristine/classes/Reply.php | 2 +- _darcs/pristine/classes/Sms_carrier.php | 2 +- _darcs/pristine/classes/Subscription.php | 2 +- _darcs/pristine/classes/Token.php | 2 +- _darcs/pristine/classes/User.php | 18 +- _darcs/pristine/classes/User_openid.php | 2 +- _darcs/pristine/lib/common.php | 18 +- _darcs/pristine/lib/deleteaction.php | 4 +- _darcs/pristine/lib/facebookaction.php | 6 +- _darcs/pristine/lib/oauthstore.php | 16 +- _darcs/pristine/lib/omb.php | 14 +- _darcs/pristine/lib/openid.php | 12 +- _darcs/pristine/lib/personal.php | 2 +- _darcs/pristine/lib/profilelist.php | 8 +- _darcs/pristine/lib/queuehandler.php | 8 +- _darcs/pristine/lib/rssaction.php | 32 +- _darcs/pristine/lib/searchaction.php | 10 +- _darcs/pristine/lib/settingsaction.php | 6 +- _darcs/pristine/lib/twitter.php | 4 +- _darcs/pristine/lib/twitterapi.php | 74 +- _darcs/pristine/lib/xmppqueuehandler.php | 6 +- _darcs/pristine/scripts/enjitqueuehandler.php | 2 +- _darcs/pristine/scripts/fixup_inboxes.php | 2 +- .../scripts/fixup_notices_rendered.php | 2 +- .../pristine/scripts/jabberqueuehandler.php | 2 +- _darcs/pristine/scripts/maildaemon.php | 8 +- _darcs/pristine/scripts/ombqueuehandler.php | 2 +- _darcs/pristine/scripts/smsqueuehandler.php | 2 +- .../pristine/scripts/xmppconfirmhandler.php | 8 +- _darcs/pristine/scripts/xmppdaemon.php | 18 +- _darcs/tentative_pristine | 29191 +--------------- actions/allrss.php | 6 +- actions/api.php | 4 +- actions/block.php | 4 +- actions/confirmaddress.php | 2 +- actions/deletenotice.php | 4 +- actions/deleteprofile.php | 10 +- actions/emailsettings.php | 16 +- actions/favorited.php | 2 +- actions/favoritesrss.php | 4 +- actions/featured.php | 2 +- actions/finishaddopenid.php | 2 +- actions/finishopenidlogin.php | 28 +- actions/finishremotesubscribe.php | 2 +- actions/foaf.php | 16 +- actions/imsettings.php | 12 +- actions/invite.php | 22 +- actions/login.php | 10 +- actions/logout.php | 2 +- actions/newmessage.php | 4 +- actions/newnotice.php | 10 +- actions/noticesearchrss.php | 2 +- actions/openidlogin.php | 8 +- actions/openidsettings.php | 12 +- actions/opensearch.php | 12 +- actions/othersettings.php | 6 +- actions/peoplesearch.php | 4 +- actions/peopletag.php | 4 +- actions/profilesettings.php | 8 +- actions/public.php | 2 +- actions/publicrss.php | 2 +- actions/publicxrds.php | 14 +- actions/recoverpassword.php | 20 +- actions/register.php | 6 +- actions/remotesubscribe.php | 36 +- actions/repliesrss.php | 6 +- actions/showmessage.php | 4 +- actions/shownotice.php | 8 +- actions/showstream.php | 4 +- actions/smssettings.php | 20 +- actions/subedit.php | 2 +- actions/tagother.php | 8 +- actions/tagrss.php | 2 +- actions/twitapidirect_messages.php | 20 +- actions/twitapifriendships.php | 2 +- actions/twitapihelp.php | 2 +- actions/twitapistatuses.php | 6 +- actions/twittersettings.php | 10 +- actions/unblock.php | 2 +- actions/userauthorization.php | 6 +- actions/userbyid.php | 2 +- actions/userrss.php | 10 +- actions/xrds.php | 20 +- classes/Avatar.php | 6 +- classes/Channel.php | 10 +- classes/Command.php | 34 +- classes/CommandInterpreter.php | 52 +- classes/Confirm_address.php | 2 +- classes/Consumer.php | 2 +- classes/Fave.php | 2 +- classes/Foreign_link.php | 8 +- classes/Foreign_service.php | 2 +- classes/Foreign_subscription.php | 2 +- classes/Foreign_user.php | 4 +- classes/Invitation.php | 2 +- classes/Memcached_DataObject.php | 6 +- classes/Message.php | 2 +- classes/Nonce.php | 2 +- classes/Notice.php | 18 +- classes/NoticeWrapper.php | 2 +- classes/Notice_inbox.php | 2 +- classes/Notice_source.php | 2 +- classes/Notice_tag.php | 2 +- classes/Profile.php | 20 +- classes/Profile_block.php | 2 +- classes/Profile_tag.php | 2 +- classes/Queue_item.php | 10 +- classes/Remember_me.php | 2 +- classes/Remote_profile.php | 2 +- classes/Reply.php | 2 +- classes/Sms_carrier.php | 2 +- classes/Subscription.php | 2 +- classes/Token.php | 2 +- classes/User.php | 18 +- classes/User_openid.php | 2 +- lib/common.php | 18 +- lib/deleteaction.php | 4 +- lib/facebookaction.php | 6 +- lib/oauthstore.php | 16 +- lib/omb.php | 14 +- lib/openid.php | 12 +- lib/personal.php | 2 +- lib/profilelist.php | 8 +- lib/queuehandler.php | 8 +- lib/rssaction.php | 32 +- lib/searchaction.php | 10 +- lib/settingsaction.php | 6 +- lib/twitter.php | 4 +- lib/twitterapi.php | 74 +- lib/xmppqueuehandler.php | 6 +- scripts/enjitqueuehandler.php | 2 +- scripts/fixup_inboxes.php | 2 +- scripts/fixup_notices_rendered.php | 2 +- scripts/jabberqueuehandler.php | 2 +- scripts/maildaemon.php | 8 +- scripts/ombqueuehandler.php | 2 +- scripts/smsqueuehandler.php | 2 +- scripts/xmppconfirmhandler.php | 8 +- scripts/xmppdaemon.php | 18 +- 219 files changed, 2170 insertions(+), 28881 deletions(-) create mode 100644 _darcs/patches/20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz diff --git a/_darcs/inventory b/_darcs/inventory index f49b758abf..3137b80803 100644 --- a/_darcs/inventory +++ b/_darcs/inventory @@ -59,4 +59,12 @@ Evan Prodromou **20081223191907 getting us towards phpcs-compliance. And that means better code readability, and that means more participation. +] +[replace NULL with null +Evan Prodromou **20081223192129 + + Another global search-and-replace update. Here, I've replaced the PHP + keyword 'NULL' with its lowercase version. This is another PEAR code + standards change. + ] \ No newline at end of file diff --git a/_darcs/patches/20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz b/_darcs/patches/20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz new file mode 100644 index 0000000000000000000000000000000000000000..cc317a43e722b1d1b2724b7f5ab69075df5018ae GIT binary patch literal 8209 zcmV+sAnxBEiwFP!000001KnMFbK5wQ|39CCo7Jx5jqO-3TlSoDmrFc5smdhY*txl@ zsg#P6Ac6q2&zyV~!5c#?}pBG94+D~h_=qZApG~gZN%Tlp&OuAfBW0us|lg~!hA+Djb#KbKR!zIy%1nMVus%t=yA*o_y7 zGhe&m3LRq(zc~N%Y`qQdoa2}7JjDpfOV{_~Bst!!H_l-4?8w2tdpCAE+XTa1QqBDI z?1lQ6sOcvQ)Y*VRiC>J;Z5+yI%9~QaaSq6f^g8ano4WCV^REv7=h3Te>^m1Ko$>-O z`He?u_s8R+H1jA3qHv0Q6reEebx|BgarcmtJ#;!jvO4(5ULrG$rZtABjHy1AWx{`9W<xEi7;V5BWx{^6Xs=%gcW7X{Ahm1n#o9NCb(BDJs$xr zC4U1dH^-Zt6p!Zsh;Q6T7;3W1FlulU>NTVJltF#f* zx0JS4af~#tT}pd+t_Vv6n68n#Kyj~=dZ~|C?)@3@AGjp|9mtQHgv(%Gwb8BA@vax5{>%OIBo#4@N=ksVArjF=5 z1iO16w-^wK@mLM1l5#&pz(V~KZ(xv=O^fqqb?K(zFY%YelN!6)!wOA=f{XxG8qfG}MoJq1$3-ag{ z{i(u5OW+2#l1)~V4#PgIVgbvvg=m@uP>nW+i)^Vpm5CD^19TW}eeL3%Rd=-22YKf_mS7qx6UYz$tsJM}_GdpAPVwqf!hxjjm z!I>A8x(bU3Dvu1o#NGrRD9ZHaM|0{Z*imm%aT8b2eGKR@c&3Keoc4{NwxF6uABxYLMSW!e!Ta$#K@aF|Z?@j;v`H~b?MwYcpn~o%f zjZ^y~S@HS&;m&4ck)}F*#PePJNEI+aGg1{~QdOVrxM>u2&QF_|mKD&!NOzwwH5vUT z*=ra-y!TS>gD!EyZDbYxSG2`zc;vW#jMs6GPG*xVoHQc)qX}{d{p6zDL${HYToc$V z&N<*6RVn*kZpCb3FHDzYJ^Gi#>HQ@+AWP5=-K)*Vm;8xt-B^im+h$iH7BNq2)Y>go z-v&h+9~HDrHR`zG!g<8{e?a8bHjT(uz})qHpc;a@727;*i&B8;{r_Rz_fJMOD*qiR zNNuiOa^NKR1FlYI8To$nK)m9tdg@kfU1Xa?XSHgMDXV5pWQ8nz^iOIIh7X?aJ2T{v zjozh)o9e?Fg``Et4#PzW*=IwWlq$x{R7P8Vj899IgR1pfQLR>5r|m`-$h3yKF{yZ2X(z??jvm;E zt9f@JpFCDBXdzX=E_iQk*ost=v-{LI7Bn0vA-O!^5w$_DndBcl8CGo|C3X9rVAikD z@)lQ8?-||wE4x1eS7uF(0hmyVH z@s`G}2(%S)$A*VA3HI;6p$7mj!<*HYuOh^$3gR=N8FFpiA2OitC< zn;A@De}fl+dujpH)Kz6r-aT{B5>Y0twp*FhNZ%p>njkA74RE3!tF+&|a8V6H9U%S0CDjYUiE z-Eg%f=ANP^pFi(eyYt6wy4j{z;XGR4Hk8x-eEaj!#7g&FXfJ5gsUj#-Y%Zv=oFr(W zG75qkOKXC1y5;<;f~p18Dkr|GA0`|c;KtHbi{s|!Pw$=A+cY|&eFYCSSo|8hFQ($9 z9G+r*y?j}XM=d6vaadB^98wQ)$ULD^Hx_{lG~6>qagb!2InwDJH^r|)AV5@4{L zpaf`}GB#3o#YS9UpqG9k>dIYJa}xnS5oA>YVdYZZVyR z6V6Li;iPiZ`x|;_(b>33LJmXLVF@Z)g}2EM)}^;I-hNrY?`qqma}91Y-XJf zM6tfbi=@;_yM5f`CPepJ>|MNk*&!wWmUsc~(bg%F7v?h~T-eUq81!K9P!_B|On?L` z#~ukHabq_~vYzg(vVW5pCI8*RwjQ=ZigAEI@_!3R!{S*HLp|Z6DvBHc&8%Qdx@;}N zz87KI^!pM9ED^wkDyH&Ru2b=K3GoVxk0KLP?^SjKi`);{ub#pbFr6r(v_$Hrpd=9^IFZM+hpHqQ z)1%Hb5wY#Ei)PefmGv?h08tbje!6#RIA&-34m1TovS%%&2Y`qT2bOTtLUab%0}w?W zZj+O!?MH{~5G{_Ku5(=F^hH%Djd>O_!Tau@P2YQw)~V%)dlT^oMQW1@g9Q7&$;bm4 zb63ARbgBY2AVm#SsU@@4bZTc7mre<}{G&SbbhA#=D=C$S-WBVt!r-MB&#MRM;5v`} zv3eBQ5aMbcq5#mdMxt^-=*g%(=t*nPYQRf#(1VjkG7G`btySYdJ+Ebl-;G3T)j1fn z2R+*BTptK28w{NoeZ^h*ao)D4Nne1}3B{U8RU=hq)^ zZlBWyZMK+83ZWtOk=a;fLarp*xV4Iq4{QspcqIyv|lQdPz9g31qFQ(PZO$&1FeY;Lh6M@l5wjx1RKj%(-$5*tn5FQAKTL?jfjB+>Z#2 zrFEA_ZmD}7O2)GM4bu+L4l*olH$=&C_Cm+1!nkTbD8DCn?~-qlG)8W~yGrFlP&cgS zZYWM2pS@nt&eN!0nWs0~IL43t$69*`g+eMXLGr`w_h`I)r%X~RAE)N{5|3xBlENhJCNP@JTy2_cig3Sb37({xyd2kLKp?dTK1uO9y3ul>p^1ly$z$_ zoy$H{h2PH5!b`dRZkbul^Q3~9x+@xC!3+-2nZ?G%`~Z1HSCd-6;La#A0QfnjA8WCE zQdRH|_6%g$1=S`>=05|xNf?sXl+EYFzN(_O{-h)$#lEMYFg0Nqt4V!!>&5AVm%1Bo z;l*g4PPuu?JM_>J1xHhoN}H7APuqwkz8Bk+{QElGSawW(FT9iX(hNx-gKhVCsgR-WU|cF`fBqa+pq#fK!>`Ndm`_$vc^Zfz~BHrcS% zUE@i*>s-EK^@^1kBcJ}=b$t>|=CTM?vVYGWr|4Vya-9agFa&M1SWfkvcmAF{oO($# zIX&t3@XBGCdI9Qn|1!s;rVUQCBCvZHYliBMJ9w(;uB<0CqC4(oG1AI)R|r=v(VY=a z(w*KX;a0lDwn?~1*4`%35AQ%Uc!9in@QP&Xr)8FGUW{{=6@&R&BY$H%*_Q!F`RLnC z<83hr$yk7oCZYh$Lz22Fw#|g;I#%pMJTdcS!%9A8h-D+a-%Z^E)ffayaBbuzDzGv* zk)4Ifc0-yb#umZOB))@YA;JwpN=YY<%oW%wFD)XA^3qjURGo(G$la8j$OF?nNw1B@ zLaK%-f5(F~AV2cv*3z)MwX}IPA=Gi@ltQt-zZtIN&MPmk>|nG7$Tc zd%Q;!RC>RJ~2h2V*6ACX&3=4&*+ zC?#2)Ns5oay(62vF><<9LnvwhR+3~mXemjlft=00-@p*C)Un7O*cFv z$ED*DZ$>Y_3gnmD+w1A;H*c=4Z@XWpcM5)`Z#p!FYixE+?cc~)qq8QKlQN>3opFCe z`IeNY+6yYsF9c4|bciL>Ju@`GN#9;xtZvlu3U_&2cGY;|CkPqOqiIVr;8k!HgIzi! zF!_N3AFeOat&nf6%}D*6lY#ki zrPhP=B`!)*DYh4%KlfcclP53PS+9Z}nYVwE&};s8GT+}FcJ4(l5mV2vD44t0K3h!R zVvLWoKhQkAxX25Mb7Y6K^ubTgKh^%F;PWoC2fkUj{laVj!2QA<1Ry!r79w9W=Bmd{ zfk>702}%{t>30=47hVC%A`M;FIp>c{IUi4& z!#b5U$}Yv!!Nl`Yw6jr@Xjvl4hTz8iM&X1-3BcvgNq;P*@7&7&i+y zX|x>-Pt4qvbYYQbwAhtRRZsz^LRZgD#r*K>z6($BUf*gQhACIxer}-(gKwykwrbn(h`-Y zFf6oy#C@r-6YTPR@&hdZU{5cYLZm%+n1zroH$BeAPj)shFhy@wQjLNl;?M5AI1}5j zcm%mU(NuI*tSCn0Bp!*cX~$_RQ)p341C=syO+Hfb4EB{~Z_D7vqgLVN{ISi!^BpQ4 z#??}D;6&PQ5da~R+|v27c1ALY(i3RFK+T{A;!EMj#aj}eP-tIll}eeo!$vz(el<}$ z{V2z8Pm?eWMNkN(uy2vE^H+(Vxt|<57}Lo`SC}__ZSd|H*--EDB)^VlNkinB+_Od! zS{4-+GTrM$v1dvFRrtgxQ+^tHprtt5vjK7N_F4}>K#}i56pCr4>7j-~wOPK%eIbdqQr^Xp;pUtYojye|8Pd62buxsAPI z7ut~)-z$b`LI$vXQYdcl+9U}jXmdgaCmnZb#QsAYR zgA*Fgf!h&gm_DDOC7zSSUs1e3aUNq7s<-Jr0r4#6B-F3r1@tmho!ep-<@e%b9I|sR zf=|YrU`_1*bHOPidJd7@(V0wKGLFtqz*rFWG2d&nsd0budy&J6gFkbrI`I zAfG+ZFJpq0huipvkGJpMTutA+e)G%K^tX2(-hTY8S`F<>W4C&ms5S=6%qqHk?H&${ zD9u8bj~658wp6`gsO>x>Efbca>hQ}-O|UAkJPMlX=(pJ2Y{WW3-ni#iI~fzkBqn2% z;ZD797JVxm+-ca3U=-T6CUh#WxNNR&XT?+?(YnAo8CYU*!+?HHtQm1Je(SO-G!#Lv znORmil;4*5l4Tw6F^Lc2-f zq?Gwn!gN<31y!=jK=@~8?uO0-A~&z&m5`T`BeYTIKXSLG<1HPDNRpDf-w9X6acCzP z!f^?^a^MIST~DzE4=3zXDb}=XjQNBD6wFXO4O-e7mI$=h4h=+fS)&w9H?pzQv}dzO zqg9CwbTpwi{$o2M425n}L?TO2Jn36It1XE@dr}&RsIsd2x}&DoS~pL!pKGF` zhW;LEZW61nZG*LBXG;_tS&w9RL(Ry> zY<*%Gs{v0U^N-$4udhB$uV4TDYIm1q<7CP-H!QihlA9Diw)0YwMzZi^rLwlvO5L?f zs2leDo#DX038Qi=*vooz5Q3yf?)F6I)eGkpY`(&a|^q zdEssBTa>STW+OAvPOx=Z%8!h|flfjCg0?*q__;Kc@syA(tt1Gpe_;ndYZ1KP*VVs{ zk~CMl^JnG}Aa~MvOXp9Q4#U=zl@()Co~f9DkCBugs2g}Br7~3Y@++;n7xcznmXw37 zGr(H{Mb6~XyS!ZeZY_|^Zg=YvsHHncvnaZgz~lsN9r6C?mAmn#b8KFP>Cr0@XM=V7 z^S}T4UL=%U&bHM0Sk3}p*-0mlrh)5)1*cRsbZ)^E(F=R%GP+&3!BF+kY}}O>(h$d9 zXYJmjDVzDowhQ^oU8eM4G5!ouN(>DD(~Wu7A7J}@FHE4uAxTbELp!HR^JLZL6)pvE z6OrU}Ns1*Z>`TkP`X^`r;PJ^m1{wgUo+#QIu%UCK5VD%gsTz763eXA8hAA|94jrPP z=H1<)MuS=5fIg3^BjJNZ!?pOrh;v#Di0n{iVI=X&h$Yg)i30S7tN^9!XaOS@KQQ8+ z8xEzE&lefOWM72-$` zM>pFUUZv(&f3p8}r-Y+T?1kynhlb$lxOWG ztwJW4{9Y7FNd!Q%QJ_<3OCG}y0 z%j<(7?p+_|&ZFK@rd>!AxyuWJB=riQp391g3arEuU^KG$8Kh#-`H;#R&X@|E4u1$}d2*aB*utiC$~Xv4fNDDcI1 zo|{vLae>hqS*nhrHrTB_@~)1hDYkW^lYtd25j6o6E)O=pW6zHBPd(@n8irs~nys2Z}KQOK>M0Fm9dB02H2R4cn6mI)yH zjWcr0O#Z#=g;SBKfIpjJ3x%;Dj9c*m;lK;id)J5FnMG@ZR;keE6@?~xx3j^=^O(i} z#?#p&E8H`(S63G;u~4R>J~W0Z#$kv5LoqVH1^zT~mk5i4M{~@=7JK)OdxOiTr`Dzz37wTunTdj@C2ii|r>yfpj zwOL6^Mga9TXh=(CZMRu1(KVZ`r42^)XQCft4jokR#y#bnH8=wuM{$zSL-n}+GViVM zFCU6a$+K&|53>uMZ9bcwF#!jUCWXakx8I%x`Kvt-JV&=kX4{zrO#|ufb+d?WxZ2W8 zej*S9g-2T&6=7Cmn(ujaM<>>M8^NhqV$7_aoG~82kuhejfi&OV;*42V@F$?J$4#Ta z);MXPs?tJp4@_y(-w8fbTh(4Ll&_=Mw-;zW_SzFAlc(AFv2JhE-2SyEvR$Mooxg?y z%MIqD0f1fFyq%Dj()*i*6X1s7iXMH{VRNoH?^F({w>}ptNLFRr>@oVfMM;{M$qtQt zy86fGtDD;?xzV(A|635|dSQgEC33>NjFGTeA7ef5IvEPMD@l$@;)yM%q%~c3u}MMB z%CIrQHmKA@Djz?_BlS?$3Z>Ld(qkhO{t%mluKBn~fHVq~4(N zhdU$55fT)V&_IO$e~x<3Z}6W^fE*Y9ho-qDsVg>7lHw;!h0k%1ckf-#cV|-XEIc~u zt4*sZVtjtnh?NR2Sw`HSMeg+^r!qJ*fEcBc!AJm)yRt2(sVWfT`s(qAB!&=$xX~Su zt!DrC?krk7(iO*i?MfpD`#M_2QP88`k$>SHY!s?49Wf)B>2Q&mWt6-`;U8YA$=xS2 z1MWc7C+Wtkx%0~Dvzy!F)&1}NFS(PmWx9x_d?n6norO`=JH%_sYQiW=j zZ!NU>-rh9EJpjdshis3YiV4;o^#D&f!()x>a0P6DoA<&+;_%r>aZK`NK_?>K-=^e_ zlC8fW-QC%^ae~B9aNN}vq=oXVrInSpGkCVw&X@tTudd3QL6y&Q0*ZY8Im9ONCW=$E z$VXE=0bV%Ion!raazK|AArwBNV5SdSt@hp|NHmJ4tx_ao^PF88R2Ze?q<0v z-_rNJ4xX>`Z0))s2Y#xUaR#!`MPh{?U|IA}PD&GG0A>U$W@qPoTxR@q%Pp~PxpAb3 z&={#5#qO(Dxb8L(tEgv<4DT9hBU6!zs-EI$2-T1de?L@p;am~*pU?gmv5BWM%J2XH DKTjWQ literal 0 HcmV?d00001 diff --git a/_darcs/pristine/actions/allrss.php b/_darcs/pristine/actions/allrss.php index d28fcea49d..851cd0ad52 100644 --- a/_darcs/pristine/actions/allrss.php +++ b/_darcs/pristine/actions/allrss.php @@ -25,7 +25,7 @@ require_once(INSTALLDIR.'/lib/rssaction.php'); class AllrssAction extends Rss10Action { - var $user = NULL; + var $user = null; function init() { $nickname = $this->trimmed('nickname'); @@ -69,9 +69,9 @@ class AllrssAction extends Rss10Action { $user = $this->user; $profile = $user->getProfile(); if (!$profile) { - return NULL; + return null; } $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); - return ($avatar) ? $avatar->url : NULL; + return ($avatar) ? $avatar->url : null; } } \ No newline at end of file diff --git a/_darcs/pristine/actions/api.php b/_darcs/pristine/actions/api.php index e03961e21f..e7646a7bbd 100644 --- a/_darcs/pristine/actions/api.php +++ b/_darcs/pristine/actions/api.php @@ -152,8 +152,8 @@ class ApiAction extends Action { header('Content-Type: application/xml; charset=utf-8'); common_start_xml(); common_element_start('hash'); - common_element('error', NULL, $msg); - common_element('request', NULL, $_SERVER['REQUEST_URI']); + common_element('error', null, $msg); + common_element('request', null, $_SERVER['REQUEST_URI']); common_element_end('hash'); common_end_xml(); } else if ($this->content_type == 'json') { diff --git a/_darcs/pristine/actions/block.php b/_darcs/pristine/actions/block.php index 20ba81edba..cfcd298481 100644 --- a/_darcs/pristine/actions/block.php +++ b/_darcs/pristine/actions/block.php @@ -21,7 +21,7 @@ if (!defined('LACONICA')) { exit(1); } class BlockAction extends Action { - var $profile = NULL; + var $profile = null; function prepare($args) { @@ -77,7 +77,7 @@ class BlockAction extends Action { common_show_header(_('Block user')); - common_element('p', NULL, + common_element('p', null, _('Are you sure you want to block this user? '. 'Afterwards, they will be unsubscribed from you, '. 'unable to subscribe to you in the future, and '. diff --git a/_darcs/pristine/actions/confirmaddress.php b/_darcs/pristine/actions/confirmaddress.php index 9d97c82058..562b70fe91 100644 --- a/_darcs/pristine/actions/confirmaddress.php +++ b/_darcs/pristine/actions/confirmaddress.php @@ -88,7 +88,7 @@ class ConfirmaddressAction extends Action { $cur->query('COMMIT'); common_show_header(_('Confirm Address')); - common_element('p', NULL, + common_element('p', null, sprintf(_('The address "%s" has been confirmed for your account.'), $cur->$type)); common_show_footer(); } diff --git a/_darcs/pristine/actions/deletenotice.php b/_darcs/pristine/actions/deletenotice.php index ba348c5faf..0777918d28 100644 --- a/_darcs/pristine/actions/deletenotice.php +++ b/_darcs/pristine/actions/deletenotice.php @@ -41,7 +41,7 @@ class DeletenoticeAction extends DeleteAction { return _('Delete notice'); } - function show_form($error=NULL) { + function show_form($error=null) { $user = common_current_user(); common_show_header($this->get_title(), array($this, 'show_header'), $error, @@ -91,7 +91,7 @@ class DeletenoticeAction extends DeleteAction { $notice->delete(); } else { if ($url) { - common_set_returnto(NULL); + common_set_returnto(null); } else { $url = common_local_url('public'); } diff --git a/_darcs/pristine/actions/deleteprofile.php b/_darcs/pristine/actions/deleteprofile.php index 29797bc76d..503b3666de 100644 --- a/_darcs/pristine/actions/deleteprofile.php +++ b/_darcs/pristine/actions/deleteprofile.php @@ -36,9 +36,9 @@ class DeleteprofileAction extends Action { return _('Export and delete your user information.'); } - function form_header($title, $msg=NULL, $success=false) { + function form_header($title, $msg=null, $success=false) { common_show_header($title, - NULL, + null, array($msg, $success), array($this, 'show_top')); } @@ -84,9 +84,9 @@ class DeleteprofileAction extends Action { common_element_end('li'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $this->form_header(_('Delete my account'), $msg, $success); - common_element('h2', NULL, _('Delete my account confirmation')); + common_element('h2', null, _('Delete my account confirmation')); $this->show_confirm_delete_form(); common_show_footer(); } @@ -213,7 +213,7 @@ class DeleteprofileAction extends Action { $n_users_deleted = $user->delete(); // logout and redirect to public - common_set_user(NULL); + common_set_user(null); common_real_login(false); # not logged in common_forgetme(); # don't log back in! common_redirect(common_local_url('public')); diff --git a/_darcs/pristine/actions/emailsettings.php b/_darcs/pristine/actions/emailsettings.php index b77817c8e4..06b3ef29f3 100644 --- a/_darcs/pristine/actions/emailsettings.php +++ b/_darcs/pristine/actions/emailsettings.php @@ -27,7 +27,7 @@ class EmailsettingsAction extends SettingsAction { return _('Manage how you get email from %%site.name%%.'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $user = common_current_user(); $this->form_header(_('Email Settings'), $msg, $success); common_element_start('form', array('method' => 'post', @@ -36,7 +36,7 @@ class EmailsettingsAction extends SettingsAction { common_local_url('emailsettings'))); common_hidden('token', common_session_token()); - common_element('h2', NULL, _('Address')); + common_element('h2', null, _('Address')); if ($user->email) { common_element_start('p'); @@ -58,14 +58,14 @@ class EmailsettingsAction extends SettingsAction { common_submit('cancel', _('Cancel')); } else { common_input('email', _('Email Address'), - ($this->arg('email')) ? $this->arg('email') : NULL, + ($this->arg('email')) ? $this->arg('email') : null, _('Email address, like "UserName@example.org"')); common_submit('add', _('Add')); } } if ($user->email) { - common_element('h2', NULL, _('Incoming email')); + common_element('h2', null, _('Incoming email')); if ($user->incomingemail) { common_element_start('p'); @@ -83,7 +83,7 @@ class EmailsettingsAction extends SettingsAction { common_submit('newincoming', _('New')); } - common_element('h2', NULL, _('Preferences')); + common_element('h2', null, _('Preferences')); common_checkbox('emailnotifysub', _('Send me notices of new subscriptions through email.'), @@ -118,7 +118,7 @@ class EmailsettingsAction extends SettingsAction { if ($confirm->find(TRUE)) { return $confirm; } else { - return NULL; + return null; } } @@ -273,7 +273,7 @@ class EmailsettingsAction extends SettingsAction { $user->query('BEGIN'); $original = clone($user); - $user->email = NULL; + $user->email = null; $result = $user->updateKeys($original); if (!$result) { common_log_db_error($user, 'UPDATE', __FILE__); @@ -294,7 +294,7 @@ class EmailsettingsAction extends SettingsAction { } $orig = clone($user); - $user->incomingemail = NULL; + $user->incomingemail = null; if (!$user->updateKeys($orig)) { common_log_db_error($user, 'UPDATE', __FILE__); diff --git a/_darcs/pristine/actions/favorited.php b/_darcs/pristine/actions/favorited.php index 6a465df96a..e69630d50f 100644 --- a/_darcs/pristine/actions/favorited.php +++ b/_darcs/pristine/actions/favorited.php @@ -29,7 +29,7 @@ class FavoritedAction extends StreamAction { $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; common_show_header(_('Popular notices'), - array($this, 'show_header'), NULL, + array($this, 'show_header'), null, array($this, 'show_top')); $this->show_notices($page); diff --git a/_darcs/pristine/actions/favoritesrss.php b/_darcs/pristine/actions/favoritesrss.php index 642d4f8802..7071812d70 100644 --- a/_darcs/pristine/actions/favoritesrss.php +++ b/_darcs/pristine/actions/favoritesrss.php @@ -25,7 +25,7 @@ require_once(INSTALLDIR.'/lib/rssaction.php'); class FavoritesrssAction extends Rss10Action { - var $user = NULL; + var $user = null; function init() { $nickname = $this->trimmed('nickname'); @@ -68,6 +68,6 @@ class FavoritesrssAction extends Rss10Action { } function get_image() { - return NULL; + return null; } } \ No newline at end of file diff --git a/_darcs/pristine/actions/featured.php b/_darcs/pristine/actions/featured.php index 2ff4f7745d..f478a40173 100644 --- a/_darcs/pristine/actions/featured.php +++ b/_darcs/pristine/actions/featured.php @@ -30,7 +30,7 @@ class FeaturedAction extends StreamAction { $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; common_show_header(_('Featured users'), - array($this, 'show_header'), NULL, + array($this, 'show_header'), null, array($this, 'show_top')); $this->show_notices($page); diff --git a/_darcs/pristine/actions/finishaddopenid.php b/_darcs/pristine/actions/finishaddopenid.php index 07024e0915..7607688de0 100644 --- a/_darcs/pristine/actions/finishaddopenid.php +++ b/_darcs/pristine/actions/finishaddopenid.php @@ -97,7 +97,7 @@ class FinishaddopenidAction extends Action { function message($msg) { common_show_header(_('OpenID Login')); - common_element('p', NULL, $msg); + common_element('p', null, $msg); common_show_footer(); } } diff --git a/_darcs/pristine/actions/finishopenidlogin.php b/_darcs/pristine/actions/finishopenidlogin.php index a2a778f310..ae5b136a25 100644 --- a/_darcs/pristine/actions/finishopenidlogin.php +++ b/_darcs/pristine/actions/finishopenidlogin.php @@ -52,7 +52,7 @@ class FinishopenidloginAction extends Action { } } - function show_top($error=NULL) { + function show_top($error=null) { if ($error) { common_element('div', array('class' => 'error'), $error); } else { @@ -62,17 +62,17 @@ class FinishopenidloginAction extends Action { } } - function show_form($error=NULL, $username=NULL) { - common_show_header(_('OpenID Account Setup'), NULL, $error, + function show_form($error=null, $username=null) { + common_show_header(_('OpenID Account Setup'), null, $error, array($this, 'show_top')); common_element_start('form', array('method' => 'post', 'id' => 'account_connect', 'action' => common_local_url('finishopenidlogin'))); common_hidden('token', common_session_token()); - common_element('h2', NULL, + common_element('h2', null, _('Create new account')); - common_element('p', NULL, + common_element('p', null, _('Create a new user with this nickname.')); common_input('newname', _('New nickname'), ($username) ? $username : '', @@ -88,9 +88,9 @@ class FinishopenidloginAction extends Action { common_text(_(' except this private data: password, email address, IM address, phone number.')); common_element_end('p'); common_submit('create', _('Create')); - common_element('h2', NULL, + common_element('h2', null, _('Connect existing account')); - common_element('p', NULL, + common_element('p', null, _('If you already have an account, login with your username and password to connect it to your OpenID.')); common_input('nickname', _('Existing nickname')); common_password('password', _('Password')); @@ -141,14 +141,14 @@ class FinishopenidloginAction extends Action { $this->go_home($user->nickname); } else { $this->save_values($display, $canonical, $sreg); - $this->show_form(NULL, $this->best_new_nickname($display, $sreg)); + $this->show_form(null, $this->best_new_nickname($display, $sreg)); } } } function message($msg) { common_show_header(_('OpenID Login')); - common_element('p', NULL, $msg); + common_element('p', null, $msg); common_show_footer(); } @@ -290,7 +290,7 @@ class FinishopenidloginAction extends Action { $url = common_get_returnto(); if ($url) { # We don't have to return to it again - common_set_returnto(NULL); + common_set_returnto(null); } else { $url = common_local_url('all', array('nickname' => @@ -329,7 +329,7 @@ class FinishopenidloginAction extends Action { # XXX: others? - return NULL; + return null; } function is_new_nickname($str) { @@ -369,7 +369,7 @@ class FinishopenidloginAction extends Action { foreach ($bad as $badpart) { if (array_key_exists($badpart, $parts)) { - return NULL; + return null; } } @@ -403,14 +403,14 @@ class FinishopenidloginAction extends Action { } } - return NULL; + return null; } function xri_to_nickname($xri) { $base = $this->xri_base($xri); if (!$base) { - return NULL; + return null; } else { # =evan.prodromou # or @gratis*evan.prodromou diff --git a/_darcs/pristine/actions/finishremotesubscribe.php b/_darcs/pristine/actions/finishremotesubscribe.php index c3387cf023..edd4ae5417 100644 --- a/_darcs/pristine/actions/finishremotesubscribe.php +++ b/_darcs/pristine/actions/finishremotesubscribe.php @@ -278,7 +278,7 @@ class FinishremotesubscribeAction extends Action { common_debug('got result: "'.print_r($result,TRUE).'"', __FILE__); if ($result->status != 200) { - return NULL; + return null; } parse_str($result->body, $return); diff --git a/_darcs/pristine/actions/foaf.php b/_darcs/pristine/actions/foaf.php index 310ba2c19f..218e20f5fb 100644 --- a/_darcs/pristine/actions/foaf.php +++ b/_darcs/pristine/actions/foaf.php @@ -66,21 +66,21 @@ class FoafAction extends Action { # XXX: might not be a person common_element_start('Person', array('rdf:about' => $user->uri)); - common_element('mbox_sha1sum', NULL, sha1('mailto:' . $user->email)); + common_element('mbox_sha1sum', null, sha1('mailto:' . $user->email)); if ($profile->fullname) { - common_element('name', NULL, $profile->fullname); + common_element('name', null, $profile->fullname); } if ($profile->homepage) { common_element('homepage', array('rdf:resource' => $profile->homepage)); } if ($profile->bio) { - common_element('rdfs:comment', NULL, $profile->bio); + common_element('rdfs:comment', null, $profile->bio); } # XXX: more structured location data if ($profile->location) { common_element_start('based_near'); common_element_start('geo:SpatialThing'); - common_element('name', NULL, $profile->location); + common_element('name', null, $profile->location); common_element_end('geo:SpatialThing'); common_element_end('based_near'); } @@ -156,7 +156,7 @@ class FoafAction extends Action { common_element_end('Person'); foreach ($person as $uri => $p) { - $foaf_url = NULL; + $foaf_url = null; if ($p[1] instanceof User) { $foaf_url = common_local_url('foaf', array('nickname' => $p[1]->nickname)); } @@ -166,7 +166,7 @@ class FoafAction extends Action { common_element('knows', array('rdf:resource' => $user->uri)); } $this->show_microblogging_account($profile, ($p[1] instanceof User) ? - common_root_url() : NULL); + common_root_url() : null); if ($foaf_url) { common_element('rdfs:seeAlso', array('rdf:resource' => $foaf_url)); } @@ -186,7 +186,7 @@ class FoafAction extends Action { common_element_end('PersonalProfileDocument'); } - function show_microblogging_account($profile, $service=NULL) { + function show_microblogging_account($profile, $service=null) { # Their account common_element_start('holdsAccount'); common_element_start('OnlineAccount'); @@ -194,7 +194,7 @@ class FoafAction extends Action { common_element('accountServiceHomepage', array('rdf:resource' => $service)); } - common_element('accountName', NULL, $profile->nickname); + common_element('accountName', null, $profile->nickname); common_element('homepage', array('rdf:resource' => $profile->profileurl)); common_element_end('OnlineAccount'); common_element_end('holdsAccount'); diff --git a/_darcs/pristine/actions/imsettings.php b/_darcs/pristine/actions/imsettings.php index d0c47f7fdd..8f546f8e76 100644 --- a/_darcs/pristine/actions/imsettings.php +++ b/_darcs/pristine/actions/imsettings.php @@ -28,7 +28,7 @@ class ImsettingsAction extends SettingsAction { return _('You can send and receive notices through Jabber/GTalk [instant messages](%%doc.im%%). Configure your address and settings below.'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $user = common_current_user(); $this->form_header(_('IM Settings'), $msg, $success); common_element_start('form', array('method' => 'post', @@ -37,7 +37,7 @@ class ImsettingsAction extends SettingsAction { common_local_url('imsettings'))); common_hidden('token', common_session_token()); - common_element('h2', NULL, _('Address')); + common_element('h2', null, _('Address')); if ($user->jabber) { common_element_start('p'); @@ -59,13 +59,13 @@ class ImsettingsAction extends SettingsAction { common_submit('cancel', _('Cancel')); } else { common_input('jabber', _('IM Address'), - ($this->arg('jabber')) ? $this->arg('jabber') : NULL, + ($this->arg('jabber')) ? $this->arg('jabber') : null, sprintf(_('Jabber or GTalk address, like "UserName@example.org". First, make sure to add %s to your buddy list in your IM client or on GTalk.'), jabber_daemon_address())); common_submit('add', _('Add')); } } - common_element('h2', NULL, _('Preferences')); + common_element('h2', null, _('Preferences')); common_checkbox('jabbernotify', _('Send me notices through Jabber/GTalk.'), @@ -93,7 +93,7 @@ class ImsettingsAction extends SettingsAction { if ($confirm->find(TRUE)) { return $confirm; } else { - return NULL; + return null; } } @@ -244,7 +244,7 @@ class ImsettingsAction extends SettingsAction { $user->query('BEGIN'); $original = clone($user); - $user->jabber = NULL; + $user->jabber = null; $result = $user->updateKeys($original); if (!$result) { common_log_db_error($user, 'UPDATE', __FILE__); diff --git a/_darcs/pristine/actions/invite.php b/_darcs/pristine/actions/invite.php index e5cc6ad019..feef94d0f2 100644 --- a/_darcs/pristine/actions/invite.php +++ b/_darcs/pristine/actions/invite.php @@ -85,49 +85,49 @@ class InviteAction extends Action { common_show_header(_('Invitation(s) sent')); if ($already) { - common_element('p', NULL, _('You are already subscribed to these users:')); + common_element('p', null, _('You are already subscribed to these users:')); common_element_start('ul'); foreach ($already as $other) { - common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); + common_element('li', null, sprintf(_('%s (%s)'), $other->nickname, $other->email)); } common_element_end('ul'); } if ($subbed) { - common_element('p', NULL, _('These people are already users and you were automatically subscribed to them:')); + common_element('p', null, _('These people are already users and you were automatically subscribed to them:')); common_element_start('ul'); foreach ($subbed as $other) { - common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); + common_element('li', null, sprintf(_('%s (%s)'), $other->nickname, $other->email)); } common_element_end('ul'); } if ($sent) { - common_element('p', NULL, _('Invitation(s) sent to the following people:')); + common_element('p', null, _('Invitation(s) sent to the following people:')); common_element_start('ul'); foreach ($sent as $other) { - common_element('li', NULL, $other); + common_element('li', null, $other); } common_element_end('ul'); - common_element('p', NULL, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!')); + common_element('p', null, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!')); } common_show_footer(); } - function show_top($error=NULL) { + function show_top($error=null) { if ($error) { common_element('p', 'error', $error); } else { common_element_start('div', 'instructions'); - common_element('p', NULL, + common_element('p', null, _('Use this form to invite your friends and colleagues to use this service.')); common_element_end('div'); } } - function show_form($error=NULL) { + function show_form($error=null) { global $config; - common_show_header(_('Invite new users'), NULL, $error, array($this, 'show_top')); + common_show_header(_('Invite new users'), null, $error, array($this, 'show_top')); common_element_start('form', array('method' => 'post', 'id' => 'invite', diff --git a/_darcs/pristine/actions/login.php b/_darcs/pristine/actions/login.php index 5e4d451491..f3509519ec 100644 --- a/_darcs/pristine/actions/login.php +++ b/_darcs/pristine/actions/login.php @@ -63,7 +63,7 @@ class LoginAction extends Action { $url = common_get_returnto(); if ($url) { # We don't have to return to it again - common_set_returnto(NULL); + common_set_returnto(null); } else { $url = common_local_url('all', array('nickname' => @@ -91,7 +91,7 @@ class LoginAction extends Action { $url = common_get_returnto(); if ($url) { # We don't have to return to it again - common_set_returnto(NULL); + common_set_returnto(null); } else { $url = common_local_url('all', array('nickname' => @@ -100,8 +100,8 @@ class LoginAction extends Action { common_redirect($url); } - function show_form($error=NULL) { - common_show_header(_('Login'), NULL, $error, array($this, 'show_top')); + function show_form($error=null) { + common_show_header(_('Login'), null, $error, array($this, 'show_top')); common_element_start('form', array('method' => 'post', 'id' => 'login', 'action' => common_local_url('login'))); @@ -138,7 +138,7 @@ class LoginAction extends Action { } } - function show_top($error=NULL) { + function show_top($error=null) { if ($error) { common_element('p', 'error', $error); } else { diff --git a/_darcs/pristine/actions/logout.php b/_darcs/pristine/actions/logout.php index 5f7b9d502d..4c59e47ad6 100644 --- a/_darcs/pristine/actions/logout.php +++ b/_darcs/pristine/actions/logout.php @@ -32,7 +32,7 @@ class LogoutAction extends Action { if (!common_logged_in()) { common_user_error(_('Not logged in.')); } else { - common_set_user(NULL); + common_set_user(null); common_real_login(false); # not logged in common_forgetme(); # don't log back in! common_redirect(common_local_url('public')); diff --git a/_darcs/pristine/actions/newmessage.php b/_darcs/pristine/actions/newmessage.php index 121fc42461..eb582c2a53 100644 --- a/_darcs/pristine/actions/newmessage.php +++ b/_darcs/pristine/actions/newmessage.php @@ -98,7 +98,7 @@ class NewmessageAction extends Action { common_message_form($content, $user, $to); } - function show_form($msg=NULL) { + function show_form($msg=null) { $content = $this->trimmed('content'); $user = common_current_user(); @@ -117,7 +117,7 @@ class NewmessageAction extends Action { return; } - common_show_header(_('New message'), NULL, + common_show_header(_('New message'), null, array($content, $user, $other), array($this, 'show_top')); diff --git a/_darcs/pristine/actions/newnotice.php b/_darcs/pristine/actions/newnotice.php index 7c3ad88154..98556c36bb 100644 --- a/_darcs/pristine/actions/newnotice.php +++ b/_darcs/pristine/actions/newnotice.php @@ -78,7 +78,7 @@ class NewnoticeAction extends Action { $replyto = $this->trimmed('inreplyto'); - $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? NULL : $replyto); + $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? null : $replyto); if (is_string($notice)) { $this->show_form($notice); @@ -121,11 +121,11 @@ class NewnoticeAction extends Action { common_element_end('html'); } - function show_top($content=NULL) { - common_notice_form(NULL, $content); + function show_top($content=null) { + common_notice_form(null, $content); } - function show_form($msg=NULL) { + function show_form($msg=null) { if ($msg && $this->boolean('ajax')) { $this->ajax_error_msg($msg); return; @@ -138,7 +138,7 @@ class NewnoticeAction extends Action { $content = '@' . $profile->nickname . ' '; } } - common_show_header(_('New notice'), NULL, $content, + common_show_header(_('New notice'), null, $content, array($this, 'show_top')); if ($msg) { common_element('p', array('id' => 'error'), $msg); diff --git a/_darcs/pristine/actions/noticesearchrss.php b/_darcs/pristine/actions/noticesearchrss.php index a7df62ca02..d61234df84 100644 --- a/_darcs/pristine/actions/noticesearchrss.php +++ b/_darcs/pristine/actions/noticesearchrss.php @@ -65,6 +65,6 @@ class NoticesearchrssAction extends Rss10Action { } function get_image() { - return NULL; + return null; } } diff --git a/_darcs/pristine/actions/openidlogin.php b/_darcs/pristine/actions/openidlogin.php index 6192dfc340..1bf37f28f4 100644 --- a/_darcs/pristine/actions/openidlogin.php +++ b/_darcs/pristine/actions/openidlogin.php @@ -52,7 +52,7 @@ class OpenidloginAction extends Action { } } else { $openid_url = oid_get_last(); - $this->show_form(NULL, $openid_url); + $this->show_form(null, $openid_url); } } @@ -60,7 +60,7 @@ class OpenidloginAction extends Action { return _('Login with an [OpenID](%%doc.openid%%) account.'); } - function show_top($error=NULL) { + function show_top($error=null) { if ($error) { common_element('div', array('class' => 'error'), $error); } else { @@ -72,8 +72,8 @@ class OpenidloginAction extends Action { } } - function show_form($error=NULL, $openid_url) { - common_show_header(_('OpenID Login'), NULL, $error, array($this, 'show_top')); + function show_form($error=null, $openid_url) { + common_show_header(_('OpenID Login'), null, $error, array($this, 'show_top')); $formaction = common_local_url('openidlogin'); common_element_start('form', array('method' => 'post', 'id' => 'openidlogin', diff --git a/_darcs/pristine/actions/openidsettings.php b/_darcs/pristine/actions/openidsettings.php index dd575bb737..9c0eda6f0f 100644 --- a/_darcs/pristine/actions/openidsettings.php +++ b/_darcs/pristine/actions/openidsettings.php @@ -30,7 +30,7 @@ class OpenidsettingsAction extends SettingsAction { ' Manage your associated OpenIDs from here.'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $user = common_current_user(); @@ -41,8 +41,8 @@ class OpenidsettingsAction extends SettingsAction { 'action' => common_local_url('openidsettings'))); common_hidden('token', common_session_token()); - common_element('h2', NULL, _('Add OpenID')); - common_element('p', NULL, + common_element('h2', null, _('Add OpenID')); + common_element('p', null, _('If you want to add an OpenID to your account, ' . 'enter it in the box below and click "Add".')); common_element_start('p'); @@ -66,11 +66,11 @@ class OpenidsettingsAction extends SettingsAction { if ($cnt > 0) { - common_element('h2', NULL, _('Remove OpenID')); + common_element('h2', null, _('Remove OpenID')); if ($cnt == 1 && !$user->password) { - common_element('p', NULL, + common_element('p', null, _('Removing your only OpenID would make it impossible to log in! ' . 'If you need to remove it, add another OpenID first.')); @@ -83,7 +83,7 @@ class OpenidsettingsAction extends SettingsAction { } else { - common_element('p', NULL, + common_element('p', null, _('You can remove an OpenID from your account '. 'by clicking the button marked "Remove".')); $idx = 0; diff --git a/_darcs/pristine/actions/opensearch.php b/_darcs/pristine/actions/opensearch.php index 707e929fb1..dcde160a4d 100644 --- a/_darcs/pristine/actions/opensearch.php +++ b/_darcs/pristine/actions/opensearch.php @@ -42,16 +42,16 @@ class OpensearchAction extends Action { common_element_start('OpenSearchDescription', array('xmlns' => 'http://a9.com/-/spec/opensearch/1.1/')); $short_name = common_config('site', 'name').' '.$short_name; - common_element('ShortName', NULL, $short_name); - common_element('Contact', NULL, common_config('site', 'email')); + common_element('ShortName', null, $short_name); + common_element('Contact', null, common_config('site', 'email')); common_element('Url', array('type' => 'text/html', 'method' => 'get', 'template' => str_replace('---', '{searchTerms}', common_local_url($type, array('q' => '---'))))); common_element('Image', array('height' => 16, 'width' => 16, 'type' => 'image/vnd.microsoft.icon'), common_path('favicon.ico')); common_element('Image', array('height' => 50, 'width' => 50, 'type' => 'image/png'), theme_path('logo.png')); - common_element('AdultContent', NULL, 'false'); - common_element('Language', NULL, common_language()); - common_element('OutputEncoding', NULL, 'UTF-8'); - common_element('InputEncoding', NULL, 'UTF-8'); + common_element('AdultContent', null, 'false'); + common_element('Language', null, common_language()); + common_element('OutputEncoding', null, 'UTF-8'); + common_element('InputEncoding', null, 'UTF-8'); common_element_end('OpenSearchDescription'); common_end_xml(); diff --git a/_darcs/pristine/actions/othersettings.php b/_darcs/pristine/actions/othersettings.php index 9b824cea2f..1da6577cb9 100644 --- a/_darcs/pristine/actions/othersettings.php +++ b/_darcs/pristine/actions/othersettings.php @@ -27,12 +27,12 @@ class OthersettingsAction extends SettingsAction { return _('Manage various other options.'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $user = common_current_user(); $this->form_header(_('Other Settings'), $msg, $success); - common_element('h2', NULL, _('URL Auto-shortening')); + common_element('h2', null, _('URL Auto-shortening')); common_element_start('form', array('method' => 'post', 'id' => 'othersettings', 'action' => @@ -57,7 +57,7 @@ class OthersettingsAction extends SettingsAction { common_element_end('form'); -// common_element('h2', NULL, _('Delete my account')); +// common_element('h2', null, _('Delete my account')); // $this->show_delete_form(); common_show_footer(); diff --git a/_darcs/pristine/actions/peoplesearch.php b/_darcs/pristine/actions/peoplesearch.php index f89de53f71..a52ac317f8 100644 --- a/_darcs/pristine/actions/peoplesearch.php +++ b/_darcs/pristine/actions/peoplesearch.php @@ -68,8 +68,8 @@ class PeoplesearchAction extends SearchAction { class PeopleSearchResults extends ProfileList { - var $terms = NULL; - var $pattern = NULL; + var $terms = null; + var $pattern = null; function __construct($profile, $terms) { parent::__construct($profile); diff --git a/_darcs/pristine/actions/peopletag.php b/_darcs/pristine/actions/peopletag.php index f03a3c8af4..0327ecbc2f 100644 --- a/_darcs/pristine/actions/peopletag.php +++ b/_darcs/pristine/actions/peopletag.php @@ -43,7 +43,7 @@ class PeopletagAction extends Action { # Looks like we're good; show the header common_show_header(sprintf(_('Users self-tagged with %s - page %d'), $tag, $page), - NULL, $tag, array($this, 'show_top')); + null, $tag, array($this, 'show_top')); $this->show_people($tag, $page); @@ -94,7 +94,7 @@ class PeopletagAction extends Action { } function get_title() { - return NULL; + return null; } function show_header($arr) { diff --git a/_darcs/pristine/actions/profilesettings.php b/_darcs/pristine/actions/profilesettings.php index 3d92161ab1..0fa1288dcd 100644 --- a/_darcs/pristine/actions/profilesettings.php +++ b/_darcs/pristine/actions/profilesettings.php @@ -28,14 +28,14 @@ class ProfilesettingsAction extends SettingsAction { 'so people know more about you.'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $this->form_header(_('Profile settings'), $msg, $success); $this->show_settings_form(); - common_element('h2', NULL, _('Avatar')); + common_element('h2', null, _('Avatar')); $this->show_avatar_form(); - common_element('h2', NULL, _('Change password')); + common_element('h2', null, _('Change password')); $this->show_password_form(); -// common_element('h2', NULL, _('Delete my account')); +// common_element('h2', null, _('Delete my account')); // $this->show_delete_form(); common_show_footer(); } diff --git a/_darcs/pristine/actions/public.php b/_darcs/pristine/actions/public.php index 422e4bc98c..60238e54d6 100644 --- a/_darcs/pristine/actions/public.php +++ b/_darcs/pristine/actions/public.php @@ -31,7 +31,7 @@ class PublicAction extends StreamAction { header('X-XRDS-Location: '. common_local_url('publicxrds')); common_show_header(_('Public timeline'), - array($this, 'show_header'), NULL, + array($this, 'show_header'), null, array($this, 'show_top')); # XXX: Public sidebar here? diff --git a/_darcs/pristine/actions/publicrss.php b/_darcs/pristine/actions/publicrss.php index fa86de1d96..764f0fae23 100644 --- a/_darcs/pristine/actions/publicrss.php +++ b/_darcs/pristine/actions/publicrss.php @@ -52,6 +52,6 @@ class PublicrssAction extends Rss10Action { } function get_image() { - return NULL; + return null; } } \ No newline at end of file diff --git a/_darcs/pristine/actions/publicxrds.php b/_darcs/pristine/actions/publicxrds.php index ffd65c8c94..5e33491853 100644 --- a/_darcs/pristine/actions/publicxrds.php +++ b/_darcs/pristine/actions/publicxrds.php @@ -42,7 +42,7 @@ class PublicxrdsAction extends Action { 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', 'version' => '2.0')); - common_element('Type', NULL, 'xri://$xrds*simple'); + common_element('Type', null, 'xri://$xrds*simple'); foreach (array('finishopenidlogin', 'finishaddopenid', 'finishimmediate') as $finish) { $this->show_service(Auth_OpenID_RP_RETURN_TO_URL_TYPE, @@ -55,24 +55,24 @@ class PublicxrdsAction extends Action { common_end_xml(); } - function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { + function show_service($type, $uri, $params=null, $sigs=null, $localId=null) { common_element_start('Service'); if ($uri) { - common_element('URI', NULL, $uri); + common_element('URI', null, $uri); } - common_element('Type', NULL, $type); + common_element('Type', null, $type); if ($params) { foreach ($params as $param) { - common_element('Type', NULL, $param); + common_element('Type', null, $param); } } if ($sigs) { foreach ($sigs as $sig) { - common_element('Type', NULL, $sig); + common_element('Type', null, $sig); } } if ($localId) { - common_element('LocalID', NULL, $localId); + common_element('LocalID', null, $localId); } common_element_end('Service'); } diff --git a/_darcs/pristine/actions/recoverpassword.php b/_darcs/pristine/actions/recoverpassword.php index 1263fee9b4..068d582fa4 100644 --- a/_darcs/pristine/actions/recoverpassword.php +++ b/_darcs/pristine/actions/recoverpassword.php @@ -132,12 +132,12 @@ class RecoverpasswordAction extends Action { unset($_SESSION['tempuser']); } - function show_top($msg=NULL) { + function show_top($msg=null) { if ($msg) { common_element('div', 'error', $msg); } else { common_element_start('div', 'instructions'); - common_element('p', NULL, + common_element('p', null, _('If you\'ve forgotten or lost your' . ' password, you can get a new one sent to' . ' the email address you have stored ' . @@ -146,7 +146,7 @@ class RecoverpasswordAction extends Action { } } - function show_password_top($msg=NULL) { + function show_password_top($msg=null) { if ($msg) { common_element('div', 'error', $msg); } else { @@ -156,9 +156,9 @@ class RecoverpasswordAction extends Action { } } - function show_form($msg=NULL) { + function show_form($msg=null) { - common_show_header(_('Recover password'), NULL, + common_show_header(_('Recover password'), null, $msg, array($this, 'show_top')); common_element_start('form', array('method' => 'post', @@ -173,9 +173,9 @@ class RecoverpasswordAction extends Action { common_show_footer(); } - function show_password_form($msg=NULL) { + function show_password_form($msg=null) { - common_show_header(_('Reset password'), NULL, + common_show_header(_('Reset password'), null, $msg, array($this, 'show_password_top')); common_element_start('form', array('method' => 'post', @@ -224,7 +224,7 @@ class RecoverpasswordAction extends Action { $confirm_email = Confirm_address::staticGet('user_id', $user->id); if ($confirm_email && $confirm_email->address_type != 'email') { # Skip non-email confirmations - $confirm_email = NULL; + $confirm_email = null; } } @@ -267,7 +267,7 @@ class RecoverpasswordAction extends Action { mail_to_user($user, _('Password recovery requested'), $body, $confirm->address); common_show_header(_('Password recovery requested')); - common_element('p', NULL, + common_element('p', null, _('Instructions for recovering your password ' . 'have been sent to the email address registered to your ' . 'account.')); @@ -324,7 +324,7 @@ class RecoverpasswordAction extends Action { common_real_login(true); common_show_header(_('Password saved.')); - common_element('p', NULL, _('New password successfully saved. ' . + common_element('p', null, _('New password successfully saved. ' . 'You are now logged in.')); common_show_footer(); } diff --git a/_darcs/pristine/actions/register.php b/_darcs/pristine/actions/register.php index 011aa3f090..f3eaf61229 100644 --- a/_darcs/pristine/actions/register.php +++ b/_darcs/pristine/actions/register.php @@ -149,7 +149,7 @@ class RegisterAction extends Action { return ($user !== false); } - function show_top($error=NULL) { + function show_top($error=null) { if ($error) { common_element('p', 'error', $error); } else { @@ -164,7 +164,7 @@ class RegisterAction extends Action { } } - function show_form($error=NULL) { + function show_form($error=null) { global $config; $code = $this->trimmed('code'); @@ -178,7 +178,7 @@ class RegisterAction extends Action { return; } - common_show_header(_('Register'), NULL, $error, array($this, 'show_top')); + common_show_header(_('Register'), null, $error, array($this, 'show_top')); common_element_start('form', array('method' => 'post', 'id' => 'login', 'action' => common_local_url('register'))); diff --git a/_darcs/pristine/actions/remotesubscribe.php b/_darcs/pristine/actions/remotesubscribe.php index 14e8cb0683..be2cb10256 100644 --- a/_darcs/pristine/actions/remotesubscribe.php +++ b/_darcs/pristine/actions/remotesubscribe.php @@ -55,7 +55,7 @@ class RemotesubscribeAction extends Action { ' enter your profile URL below.'); } - function show_top($err=NULL) { + function show_top($err=null) { if ($err) { common_element('div', 'error', $err); } else { @@ -67,10 +67,10 @@ class RemotesubscribeAction extends Action { } } - function show_form($err=NULL) { + function show_form($err=null) { $nickname = $this->trimmed('nickname'); $profile = $this->trimmed('profile_url'); - common_show_header(_('Remote subscribe'), NULL, $err, + common_show_header(_('Remote subscribe'), null, $err, array($this, 'show_top')); # id = remotesubscribe conflicts with the # button on profile page @@ -153,7 +153,7 @@ class RemotesubscribeAction extends Action { } function get_user() { - $user = NULL; + $user = null; $nickname = $this->trimmed('nickname'); if ($nickname) { $user = User::staticGet('nickname', $nickname); @@ -173,7 +173,7 @@ class RemotesubscribeAction extends Action { $oauth_services = omb_get_services($xrds, OAUTH_DISCOVERY); if (!$oauth_services) { - return NULL; + return null; } $oauth_service = $oauth_services[0]; @@ -181,17 +181,17 @@ class RemotesubscribeAction extends Action { $oauth_xrd = $this->getXRD($oauth_service, $xrds); if (!$oauth_xrd) { - return NULL; + return null; } if (!$this->addServices($oauth_xrd, $oauth_endpoints, $omb)) { - return NULL; + return null; } $omb_services = omb_get_services($xrds, OMB_NAMESPACE); if (!$omb_services) { - return NULL; + return null; } $omb_service = $omb_services[0]; @@ -199,23 +199,23 @@ class RemotesubscribeAction extends Action { $omb_xrd = $this->getXRD($omb_service, $xrds); if (!$omb_xrd) { - return NULL; + return null; } if (!$this->addServices($omb_xrd, $omb_endpoints, $omb)) { - return NULL; + return null; } # XXX: check that we got all the services we needed foreach (array_merge($omb_endpoints, $oauth_endpoints) as $type) { if (!array_key_exists($type, $omb) || !$omb[$type]) { - return NULL; + return null; } } if (!omb_local_id($omb[OAUTH_ENDPOINT_REQUEST])) { - return NULL; + return null; } return $omb; @@ -225,7 +225,7 @@ class RemotesubscribeAction extends Action { $uri = omb_service_uri($main_service); if (strpos($uri, "#") !== 0) { # FIXME: more rigorous handling of external service definitions - return NULL; + return null; } $id = substr($uri, 1); $nodes = $main_xrds->allXrdNodes; @@ -239,7 +239,7 @@ class RemotesubscribeAction extends Action { return new Auth_Yadis_XRDS($parser, $bogus_nodes); } } - return NULL; + return null; } function addServices($xrd, $types, &$omb) { @@ -267,12 +267,12 @@ class RemotesubscribeAction extends Action { $params = array(); parse_str($parsed['query'], $params); - $req = OAuthRequest::from_consumer_and_token($con, NULL, "POST", $url, $params); + $req = OAuthRequest::from_consumer_and_token($con, null, "POST", $url, $params); $listener = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]); if (!$listener) { - return NULL; + return null; } $req->set_parameter('omb_listener', $listener); @@ -280,7 +280,7 @@ class RemotesubscribeAction extends Action { # XXX: test to see if endpoint accepts this signature method - $req->sign_request(omb_hmac_sha1(), $con, NULL); + $req->sign_request(omb_hmac_sha1(), $con, null); # We re-use this tool's fetcher, since it's pretty good @@ -291,7 +291,7 @@ class RemotesubscribeAction extends Action { array('User-Agent' => 'Laconica/' . LACONICA_VERSION)); if ($result->status != 200) { - return NULL; + return null; } parse_str($result->body, $return); diff --git a/_darcs/pristine/actions/repliesrss.php b/_darcs/pristine/actions/repliesrss.php index 3689ea1f8f..9652ae9ea6 100644 --- a/_darcs/pristine/actions/repliesrss.php +++ b/_darcs/pristine/actions/repliesrss.php @@ -25,7 +25,7 @@ require_once(INSTALLDIR.'/lib/rssaction.php'); class RepliesrssAction extends Rss10Action { - var $user = NULL; + var $user = null; function init() { $nickname = $this->trimmed('nickname'); @@ -71,9 +71,9 @@ class RepliesrssAction extends Rss10Action { $user = $this->user; $profile = $user->getProfile(); if (!$profile) { - return NULL; + return null; } $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); - return ($avatar) ? $avatar->url : NULL; + return ($avatar) ? $avatar->url : null; } } \ No newline at end of file diff --git a/_darcs/pristine/actions/showmessage.php b/_darcs/pristine/actions/showmessage.php index f35f3eedea..a5e03c72db 100644 --- a/_darcs/pristine/actions/showmessage.php +++ b/_darcs/pristine/actions/showmessage.php @@ -53,7 +53,7 @@ class ShowmessageAction extends MailboxAction { function get_title($user, $page) { $message = $this->get_message(); if (!$message) { - return NULL; + return null; } if ($user->id == $message->from_profile) { @@ -85,7 +85,7 @@ class ShowmessageAction extends MailboxAction { return $message->getFrom(); } else { # This shouldn't happen - return NULL; + return null; } } diff --git a/_darcs/pristine/actions/shownotice.php b/_darcs/pristine/actions/shownotice.php index 74d197ed1f..04af61a6f5 100644 --- a/_darcs/pristine/actions/shownotice.php +++ b/_darcs/pristine/actions/shownotice.php @@ -23,9 +23,9 @@ require_once(INSTALLDIR.'/lib/stream.php'); class ShownoticeAction extends StreamAction { - var $notice = NULL; - var $profile = NULL; - var $avatar = NULL; + var $notice = null; + var $profile = null; + var $avatar = null; function prepare($args) { @@ -73,7 +73,7 @@ class ShownoticeAction extends StreamAction { common_show_header(sprintf(_('%1$s\'s status on %2$s'), $this->profile->nickname, common_exact_date($this->notice->created)), - array($this, 'show_header'), NULL, + array($this, 'show_header'), null, array($this, 'show_top')); common_element_start('ul', array('id' => 'notices')); diff --git a/_darcs/pristine/actions/showstream.php b/_darcs/pristine/actions/showstream.php index f8525348d3..485c2e3d1b 100644 --- a/_darcs/pristine/actions/showstream.php +++ b/_darcs/pristine/actions/showstream.php @@ -285,7 +285,7 @@ class ShowstreamAction extends StreamAction { common_element_start('div', array('id' => 'subscriptions')); - common_element('h2', NULL, _('Subscriptions')); + common_element('h2', null, _('Subscriptions')); if ($subs_count > 0) { @@ -415,7 +415,7 @@ class ShowstreamAction extends StreamAction { function show_last_notice($profile) { - common_element('h2', NULL, _('Currently')); + common_element('h2', null, _('Currently')); $notice = $profile->getCurrentNotice(); diff --git a/_darcs/pristine/actions/smssettings.php b/_darcs/pristine/actions/smssettings.php index 506801e975..71ab39514f 100644 --- a/_darcs/pristine/actions/smssettings.php +++ b/_darcs/pristine/actions/smssettings.php @@ -28,7 +28,7 @@ class SmssettingsAction extends EmailsettingsAction { return _('You can receive SMS messages through email from %%site.name%%.'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $user = common_current_user(); $this->form_header(_('SMS Settings'), $msg, $success); common_element_start('form', array('method' => 'post', @@ -36,7 +36,7 @@ class SmssettingsAction extends EmailsettingsAction { 'action' => common_local_url('smssettings'))); common_hidden('token', common_session_token()); - common_element('h2', NULL, _('Address')); + common_element('h2', null, _('Address')); if ($user->sms) { common_element_start('p'); @@ -60,12 +60,12 @@ class SmssettingsAction extends EmailsettingsAction { common_hidden('carrier', $confirm->address_extra); common_element_end('p'); common_submit('cancel', _('Cancel')); - common_input('code', _('Confirmation code'), NULL, + common_input('code', _('Confirmation code'), null, _('Enter the code you received on your phone.')); common_submit('confirm', _('Confirm')); } else { common_input('sms', _('SMS Phone number'), - ($this->arg('sms')) ? $this->arg('sms') : NULL, + ($this->arg('sms')) ? $this->arg('sms') : null, _('Phone number, no punctuation or spaces, with area code')); $this->carrier_select(); common_submit('add', _('Add')); @@ -73,7 +73,7 @@ class SmssettingsAction extends EmailsettingsAction { } if ($user->sms) { - common_element('h2', NULL, _('Incoming email')); + common_element('h2', null, _('Incoming email')); if ($user->incomingemail) { common_element_start('p'); @@ -91,7 +91,7 @@ class SmssettingsAction extends EmailsettingsAction { common_submit('newincoming', _('New')); } - common_element('h2', NULL, _('Preferences')); + common_element('h2', null, _('Preferences')); common_checkbox('smsnotify', _('Send me notices through SMS; I understand I may incur exorbitant charges from my carrier.'), @@ -111,7 +111,7 @@ class SmssettingsAction extends EmailsettingsAction { if ($confirm->find(TRUE)) { return $confirm; } else { - return NULL; + return null; } } @@ -268,9 +268,9 @@ class SmssettingsAction extends EmailsettingsAction { $user->query('BEGIN'); $original = clone($user); - $user->sms = NULL; - $user->carrier = NULL; - $user->smsemail = NULL; + $user->sms = null; + $user->carrier = null; + $user->smsemail = null; $result = $user->updateKeys($original); if (!$result) { common_log_db_error($user, 'UPDATE', __FILE__); diff --git a/_darcs/pristine/actions/subedit.php b/_darcs/pristine/actions/subedit.php index 1d095ab9a5..db935eb282 100644 --- a/_darcs/pristine/actions/subedit.php +++ b/_darcs/pristine/actions/subedit.php @@ -21,7 +21,7 @@ if (!defined('LACONICA')) { exit(1); } class SubeditAction extends Action { - var $profile = NULL; + var $profile = null; function prepare($args) { diff --git a/_darcs/pristine/actions/tagother.php b/_darcs/pristine/actions/tagother.php index 832671ae75..4691fef07f 100644 --- a/_darcs/pristine/actions/tagother.php +++ b/_darcs/pristine/actions/tagother.php @@ -49,12 +49,12 @@ class TagotherAction extends Action { } } - function show_form($profile, $error=NULL) { + function show_form($profile, $error=null) { $user = common_current_user(); common_show_header(_('Tag a person'), - NULL, array($profile, $error), array($this, 'show_top')); + null, array($profile, $error), array($this, 'show_top')); $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); @@ -178,13 +178,13 @@ class TagotherAction extends Action { } } - function show_top($arr = NULL) { + function show_top($arr = null) { list($profile, $error) = $arr; if ($error) { common_element('p', 'error', $error); } else { common_element_start('div', 'instructions'); - common_element('p', NULL, + common_element('p', null, _('Use this form to add tags to your subscribers or subscriptions.')); common_element_end('div'); } diff --git a/_darcs/pristine/actions/tagrss.php b/_darcs/pristine/actions/tagrss.php index 45639fec48..6199a285db 100644 --- a/_darcs/pristine/actions/tagrss.php +++ b/_darcs/pristine/actions/tagrss.php @@ -41,7 +41,7 @@ class TagrssAction extends Rss10Action { $tag = $this->tag; if (is_null($tag)) { - return NULL; + return null; } $notice = Notice_tag::getStream($tag->tag, 0, ($limit == 0) ? NOTICES_PER_PAGE : $limit); diff --git a/_darcs/pristine/actions/twitapidirect_messages.php b/_darcs/pristine/actions/twitapidirect_messages.php index 2e3b501735..7adb4eadd9 100644 --- a/_darcs/pristine/actions/twitapidirect_messages.php +++ b/_darcs/pristine/actions/twitapidirect_messages.php @@ -228,12 +228,12 @@ class Twitapidirect_messagesAction extends TwitterapiAction { $this->init_document('rss'); common_element_start('channel'); - common_element('title', NULL, $title); + common_element('title', null, $title); - common_element('link', NULL, $link); - common_element('description', NULL, $subtitle); - common_element('language', NULL, 'en-us'); - common_element('ttl', NULL, '40'); + common_element('link', null, $link); + common_element('description', null, $subtitle); + common_element('language', null, 'en-us'); + common_element('ttl', null, '40'); if (is_array($message)) { foreach ($message as $m) { @@ -256,12 +256,12 @@ class Twitapidirect_messagesAction extends TwitterapiAction { $this->init_document('atom'); - common_element('title', NULL, $title); + common_element('title', null, $title); $siteserver = common_config('site', 'server'); - common_element('id', NULL, "tag:$siteserver,2008:DirectMessage"); - common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL); - common_element('updated', NULL, common_date_iso8601(strftime('%c'))); - common_element('subtitle', NULL, $subtitle); + common_element('id', null, "tag:$siteserver,2008:DirectMessage"); + common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), null); + common_element('updated', null, common_date_iso8601(strftime('%c'))); + common_element('subtitle', null, $subtitle); if (is_array($message)) { foreach ($message as $m) { diff --git a/_darcs/pristine/actions/twitapifriendships.php b/_darcs/pristine/actions/twitapifriendships.php index d352b933b9..a52f0fe4dd 100644 --- a/_darcs/pristine/actions/twitapifriendships.php +++ b/_darcs/pristine/actions/twitapifriendships.php @@ -138,7 +138,7 @@ class TwitapifriendshipsAction extends TwitterapiAction { switch ($apidata['content-type']) { case 'xml': $this->init_document('xml'); - common_element('friends', NULL, $result); + common_element('friends', null, $result); $this->end_document('xml'); break; case 'json': diff --git a/_darcs/pristine/actions/twitapihelp.php b/_darcs/pristine/actions/twitapihelp.php index d268b7c822..f0e9adfdb7 100644 --- a/_darcs/pristine/actions/twitapihelp.php +++ b/_darcs/pristine/actions/twitapihelp.php @@ -32,7 +32,7 @@ class TwitapihelpAction extends TwitterapiAction { if ($apidata['content-type'] == 'xml') { $this->init_document('xml'); - common_element('ok', NULL, 'true'); + common_element('ok', null, 'true'); $this->end_document('xml'); } elseif ($apidata['content-type'] == 'json') { $this->init_document('json'); diff --git a/_darcs/pristine/actions/twitapistatuses.php b/_darcs/pristine/actions/twitapistatuses.php index c33643a3ce..ffa94b3095 100644 --- a/_darcs/pristine/actions/twitapistatuses.php +++ b/_darcs/pristine/actions/twitapistatuses.php @@ -112,7 +112,7 @@ class TwitapistatusesAction extends TwitterapiAction { $since = strtotime($this->arg('since')); - $user = $this->get_user(NULL, $apidata); + $user = $this->get_user(null, $apidata); $this->auth_user = $user; $profile = $user->getProfile(); @@ -200,7 +200,7 @@ class TwitapistatusesAction extends TwitterapiAction { # FriendFeed's SUP protocol # Also added RSS and Atom feeds - $suplink = common_local_url('sup', NULL, $user->id); + $suplink = common_local_url('sup', null, $user->id); header('X-SUP-ID: '.$suplink); # XXX: since @@ -291,7 +291,7 @@ class TwitapistatusesAction extends TwitterapiAction { $apidata['api_arg'] = $n->id; } else { - $reply_to = NULL; + $reply_to = null; if ($in_reply_to_status_id) { diff --git a/_darcs/pristine/actions/twittersettings.php b/_darcs/pristine/actions/twittersettings.php index e300e699a3..8cbd39fbdc 100644 --- a/_darcs/pristine/actions/twittersettings.php +++ b/_darcs/pristine/actions/twittersettings.php @@ -30,10 +30,10 @@ class TwittersettingsAction extends SettingsAction { 'and subscribe to Twitter friends already here.'); } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { $user = common_current_user(); $profile = $user->getProfile(); - $fuser = NULL; + $fuser = null; $flink = Foreign_link::getByUserID($user->id, 1); // 1 == Twitter if ($flink) { @@ -47,7 +47,7 @@ class TwittersettingsAction extends SettingsAction { common_local_url('twittersettings'))); common_hidden('token', common_session_token()); - common_element('h2', NULL, _('Twitter Account')); + common_element('h2', null, _('Twitter Account')); if ($fuser) { common_element_start('p'); @@ -67,7 +67,7 @@ class TwittersettingsAction extends SettingsAction { common_password('twitter_password', _('Twitter password')); } - common_element('h2', NULL, _('Preferences')); + common_element('h2', null, _('Preferences')); common_checkbox('noticesync', _('Automatically send my notices to Twitter.'), ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND) : true); @@ -126,7 +126,7 @@ class TwittersettingsAction extends SettingsAction { if ($friends_count > 0) { - common_element('h3', NULL, _('Twitter Friends')); + common_element('h3', null, _('Twitter Friends')); common_element_start('div', array('id' => 'subscriptions')); common_element_start('ul', array('id' => 'subscriptions_avatars')); diff --git a/_darcs/pristine/actions/unblock.php b/_darcs/pristine/actions/unblock.php index 6a86c2bf0f..51ec0ae572 100644 --- a/_darcs/pristine/actions/unblock.php +++ b/_darcs/pristine/actions/unblock.php @@ -21,7 +21,7 @@ if (!defined('LACONICA')) { exit(1); } class UnblockAction extends Action { - var $profile = NULL; + var $profile = null; function prepare($args) { diff --git a/_darcs/pristine/actions/userauthorization.php b/_darcs/pristine/actions/userauthorization.php index 97809f197a..58ec36fc83 100644 --- a/_darcs/pristine/actions/userauthorization.php +++ b/_darcs/pristine/actions/userauthorization.php @@ -81,7 +81,7 @@ class UserauthorizationAction extends Action { $avatar = $req->get_parameter('omb_listenee_avatar'); common_show_header(_('Authorize subscription')); - common_element('p', NULL, _('Please check these details to make sure '. + common_element('p', null, _('Please check these details to make sure '. 'that you want to subscribe to this user\'s notices. '. 'If you didn\'t just ask to subscribe to someone\'s notices, '. 'click "Cancel".')); @@ -320,7 +320,7 @@ class UserauthorizationAction extends Action { function show_accept_message($tok) { common_show_header(_('Subscription authorized')); - common_element('p', NULL, + common_element('p', null, _('The subscription has been authorized, but no '. 'callback URL was passed. Check with the site\'s instructions for '. 'details on how to authorize the subscription. Your subscription token is:')); @@ -330,7 +330,7 @@ class UserauthorizationAction extends Action { function show_reject_message($tok) { common_show_header(_('Subscription rejected')); - common_element('p', NULL, + common_element('p', null, _('The subscription has been rejected, but no '. 'callback URL was passed. Check with the site\'s instructions for '. 'details on how to fully reject the subscription.')); diff --git a/_darcs/pristine/actions/userbyid.php b/_darcs/pristine/actions/userbyid.php index 4eab8758c2..3fa92e9cec 100644 --- a/_darcs/pristine/actions/userbyid.php +++ b/_darcs/pristine/actions/userbyid.php @@ -38,7 +38,7 @@ class UserbyidAction extends Action { // support redirecting to FOAF rdf/xml if the agent prefers it $page_prefs = 'application/rdf+xml,text/html,application/xhtml+xml,application/xml;q=0.3,text/xml;q=0.2'; - $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : NULL; + $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null; $type = common_negotiate_type(common_accept_to_prefs($httpaccept), common_accept_to_prefs($page_prefs)); $page = $type == 'application/rdf+xml' ? 'foaf' : 'showstream'; diff --git a/_darcs/pristine/actions/userrss.php b/_darcs/pristine/actions/userrss.php index b5cb5a40a0..6089718aeb 100644 --- a/_darcs/pristine/actions/userrss.php +++ b/_darcs/pristine/actions/userrss.php @@ -25,7 +25,7 @@ require_once(INSTALLDIR.'/lib/rssaction.php'); class UserrssAction extends Rss10Action { - var $user = NULL; + var $user = null; function init() { $nickname = $this->trimmed('nickname'); @@ -44,7 +44,7 @@ class UserrssAction extends Rss10Action { $user = $this->user; if (is_null($user)) { - return NULL; + return null; } $notice = $user->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit); @@ -74,16 +74,16 @@ class UserrssAction extends Rss10Action { if (!$profile) { common_log_db_error($user, 'SELECT', __FILE__); $this->server_error(_('User without matching profile')); - return NULL; + return null; } $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); - return ($avatar) ? $avatar->url : NULL; + return ($avatar) ? $avatar->url : null; } # override parent to add X-SUP-ID URL function init_rss($limit=0) { - $url = common_local_url('sup', NULL, $this->user->id); + $url = common_local_url('sup', null, $this->user->id); header('X-SUP-ID: '.$url); parent::init_rss($limit); } diff --git a/_darcs/pristine/actions/xrds.php b/_darcs/pristine/actions/xrds.php index 9788c87aab..54baf64be1 100644 --- a/_darcs/pristine/actions/xrds.php +++ b/_darcs/pristine/actions/xrds.php @@ -50,7 +50,7 @@ class XrdsAction extends Action { 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', 'version' => '2.0')); - common_element('Type', NULL, 'xri://$xrds*simple'); + common_element('Type', null, 'xri://$xrds*simple'); $this->show_service(OAUTH_ENDPOINT_REQUEST, common_local_url('requesttoken'), @@ -69,7 +69,7 @@ class XrdsAction extends Action { array(OAUTH_HMAC_SHA1)); $this->show_service(OAUTH_ENDPOINT_RESOURCE, - NULL, + null, array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), array(OAUTH_HMAC_SHA1)); @@ -82,7 +82,7 @@ class XrdsAction extends Action { 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', 'version' => '2.0')); - common_element('Type', NULL, 'xri://$xrds*simple'); + common_element('Type', null, 'xri://$xrds*simple'); $this->show_service(OMB_ENDPOINT_POSTNOTICE, common_local_url('postnotice')); @@ -95,7 +95,7 @@ class XrdsAction extends Action { common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', 'version' => '2.0')); - common_element('Type', NULL, 'xri://$xrds*simple'); + common_element('Type', null, 'xri://$xrds*simple'); $this->show_service(OAUTH_DISCOVERY, '#oauth'); @@ -108,24 +108,24 @@ class XrdsAction extends Action { common_end_xml(); } - function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { + function show_service($type, $uri, $params=null, $sigs=null, $localId=null) { common_element_start('Service'); if ($uri) { - common_element('URI', NULL, $uri); + common_element('URI', null, $uri); } - common_element('Type', NULL, $type); + common_element('Type', null, $type); if ($params) { foreach ($params as $param) { - common_element('Type', NULL, $param); + common_element('Type', null, $param); } } if ($sigs) { foreach ($sigs as $sig) { - common_element('Type', NULL, $sig); + common_element('Type', null, $sig); } } if ($localId) { - common_element('LocalID', NULL, $localId); + common_element('LocalID', null, $localId); } common_element_end('Service'); } diff --git a/_darcs/pristine/classes/Avatar.php b/_darcs/pristine/classes/Avatar.php index e63668a336..bde983d798 100644 --- a/_darcs/pristine/classes/Avatar.php +++ b/_darcs/pristine/classes/Avatar.php @@ -21,7 +21,7 @@ class Avatar extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Avatar',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Avatar',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -72,7 +72,7 @@ class Avatar extends Memcached_DataObject if ($scaled->insert()) { return $scaled; } else { - return NULL; + return null; } } @@ -85,7 +85,7 @@ class Avatar extends Memcached_DataObject } else if ($this->mediatype == 'image/png') { return imagecreatefrompng($filepath); } else { - return NULL; + return null; } } diff --git a/_darcs/pristine/classes/Channel.php b/_darcs/pristine/classes/Channel.php index 384fe8bb19..ea35304066 100644 --- a/_darcs/pristine/classes/Channel.php +++ b/_darcs/pristine/classes/Channel.php @@ -38,13 +38,13 @@ class Channel { } function source() { - return NULL; + return null; } } class XMPPChannel extends Channel { - var $conn = NULL; + var $conn = null; function source() { return 'xmpp'; @@ -111,7 +111,7 @@ class WebChannel extends Channel { # XXX: even better, redirect to appropriate page # depending on what command was run common_show_header(_('Command results')); - common_element('p', NULL, $text); + common_element('p', null, $text); common_show_footer(); } @@ -149,13 +149,13 @@ class AjaxWebChannel extends WebChannel { class MailChannel extends Channel { - var $addr = NULL; + var $addr = null; function source() { return 'mail'; } - function __construct($addr=NULL) { + function __construct($addr=null) { $this->addr = $addr; } diff --git a/_darcs/pristine/classes/Command.php b/_darcs/pristine/classes/Command.php index ff44b9d1eb..b146005a70 100644 --- a/_darcs/pristine/classes/Command.php +++ b/_darcs/pristine/classes/Command.php @@ -23,9 +23,9 @@ require_once(INSTALLDIR.'/classes/Channel.php'); class Command { - var $user = NULL; + var $user = null; - function __construct($user=NULL) { + function __construct($user=null) { $this->user = $user; } @@ -47,7 +47,7 @@ class TrackOffCommand extends UnimplementedCommand { } class TrackCommand extends UnimplementedCommand { - var $word = NULL; + var $word = null; function __construct($user, $word) { parent::__construct($user); $this->word = $word; @@ -55,7 +55,7 @@ class TrackCommand extends UnimplementedCommand { } class UntrackCommand extends UnimplementedCommand { - var $word = NULL; + var $word = null; function __construct($user, $word) { parent::__construct($user); $this->word = $word; @@ -63,7 +63,7 @@ class UntrackCommand extends UnimplementedCommand { } class NudgeCommand extends UnimplementedCommand { - var $other = NULL; + var $other = null; function __construct($user, $other) { parent::__construct($user); $this->other = $other; @@ -71,7 +71,7 @@ class NudgeCommand extends UnimplementedCommand { } class InviteCommand extends UnimplementedCommand { - var $other = NULL; + var $other = null; function __construct($user, $other) { parent::__construct($user); $this->other = $other; @@ -104,7 +104,7 @@ class StatsCommand extends Command { class FavCommand extends Command { - var $other = NULL; + var $other = null; function __construct($user, $other) { parent::__construct($user); @@ -148,7 +148,7 @@ class FavCommand extends Command { } class WhoisCommand extends Command { - var $other = NULL; + var $other = null; function __construct($user, $other) { parent::__construct($user); $this->other = $other; @@ -182,8 +182,8 @@ class WhoisCommand extends Command { } class MessageCommand extends Command { - var $other = NULL; - var $text = NULL; + var $other = null; + var $text = null; function __construct($user, $other, $text) { parent::__construct($user); $this->other = $other; @@ -225,7 +225,7 @@ class MessageCommand extends Command { class GetCommand extends Command { - var $other = NULL; + var $other = null; function __construct($user, $other) { parent::__construct($user); @@ -255,7 +255,7 @@ class GetCommand extends Command { class SubCommand extends Command { - var $other = NULL; + var $other = null; function __construct($user, $other) { parent::__construct($user); @@ -281,7 +281,7 @@ class SubCommand extends Command { class UnsubCommand extends Command { - var $other = NULL; + var $other = null; function __construct($user, $other) { parent::__construct($user); @@ -305,8 +305,8 @@ class UnsubCommand extends Command { } class OffCommand extends Command { - var $other = NULL; - function __construct($user, $other=NULL) { + var $other = null; + function __construct($user, $other=null) { parent::__construct($user); $this->other = $other; } @@ -324,8 +324,8 @@ class OffCommand extends Command { } class OnCommand extends Command { - var $other = NULL; - function __construct($user, $other=NULL) { + var $other = null; + function __construct($user, $other=null) { parent::__construct($user); $this->other = $other; } diff --git a/_darcs/pristine/classes/CommandInterpreter.php b/_darcs/pristine/classes/CommandInterpreter.php index 8192fb1a93..db02ce541c 100644 --- a/_darcs/pristine/classes/CommandInterpreter.php +++ b/_darcs/pristine/classes/CommandInterpreter.php @@ -37,14 +37,14 @@ class CommandInterpreter { switch(strtolower($cmd)) { case 'help': if ($arg) { - return NULL; + return null; } return new HelpCommand($user); case 'on': if ($arg) { list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new OnCommand($user, $other); } @@ -55,7 +55,7 @@ class CommandInterpreter { if ($arg) { list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new OffCommand($user, $other); } @@ -65,105 +65,105 @@ class CommandInterpreter { case 'stop': case 'quit': if ($arg) { - return NULL; + return null; } else { return new OffCommand($user); } case 'follow': case 'sub': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new SubCommand($user, $other); } case 'leave': case 'unsub': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new UnsubCommand($user, $other); } case 'get': case 'last': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new GetCommand($user, $other); } case 'd': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if (!$extra) { - return NULL; + return null; } else { return new MessageCommand($user, $other, $extra); } case 'whois': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new WhoisCommand($user, $other); } case 'fav': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new FavCommand($user, $other); } case 'nudge': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new NudgeCommand($user, $other); } case 'stats': if ($arg) { - return NULL; + return null; } return new StatsCommand($user); case 'invite': if (!$arg) { - return NULL; + return null; } list($other, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else { return new InviteCommand($user, $other); } case 'track': if (!$arg) { - return NULL; + return null; } list($word, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else if ($word == 'off') { return new TrackOffCommand($user); } else { @@ -171,11 +171,11 @@ class CommandInterpreter { } case 'untrack': if (!$arg) { - return NULL; + return null; } list($word, $extra) = explode(' ', $arg, 2); if ($extra) { - return NULL; + return null; } else if ($word == 'all') { return new TrackOffCommand($user); } else { @@ -184,7 +184,7 @@ class CommandInterpreter { case 'tracks': case 'tracking': if ($arg) { - return NULL; + return null; } return new TrackingCommand($user); default: diff --git a/_darcs/pristine/classes/Confirm_address.php b/_darcs/pristine/classes/Confirm_address.php index 10661ff5ce..71f2d0c728 100644 --- a/_darcs/pristine/classes/Confirm_address.php +++ b/_darcs/pristine/classes/Confirm_address.php @@ -20,7 +20,7 @@ class Confirm_address extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Confirm_address',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Confirm_address',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Consumer.php b/_darcs/pristine/classes/Consumer.php index d18e6feeb9..c598312aac 100644 --- a/_darcs/pristine/classes/Consumer.php +++ b/_darcs/pristine/classes/Consumer.php @@ -16,7 +16,7 @@ class Consumer extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Consumer',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Consumer',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Fave.php b/_darcs/pristine/classes/Fave.php index b70a8a897c..5d938d1493 100644 --- a/_darcs/pristine/classes/Fave.php +++ b/_darcs/pristine/classes/Fave.php @@ -15,7 +15,7 @@ class Fave extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Fave',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Fave',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Foreign_link.php b/_darcs/pristine/classes/Foreign_link.php index 7ce0df8336..41a95e6418 100644 --- a/_darcs/pristine/classes/Foreign_link.php +++ b/_darcs/pristine/classes/Foreign_link.php @@ -21,7 +21,7 @@ class Foreign_link extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_link',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_link',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -38,7 +38,7 @@ class Foreign_link extends Memcached_DataObject return $flink; } - return NULL; + return null; } static function getByForeignID($foreign_id, $service) { @@ -51,7 +51,7 @@ class Foreign_link extends Memcached_DataObject return $flink; } - return NULL; + return null; } # Convenience methods @@ -66,7 +66,7 @@ class Foreign_link extends Memcached_DataObject return $fuser; } - return NULL; + return null; } function getUser() { diff --git a/_darcs/pristine/classes/Foreign_service.php b/_darcs/pristine/classes/Foreign_service.php index 18ef83d699..128411b711 100644 --- a/_darcs/pristine/classes/Foreign_service.php +++ b/_darcs/pristine/classes/Foreign_service.php @@ -17,7 +17,7 @@ class Foreign_service extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_service',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_service',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Foreign_subscription.php b/_darcs/pristine/classes/Foreign_subscription.php index 3150640672..d8e8569fbe 100644 --- a/_darcs/pristine/classes/Foreign_subscription.php +++ b/_darcs/pristine/classes/Foreign_subscription.php @@ -16,7 +16,7 @@ class Foreign_subscription extends Memcached_DataObject public $created; // datetime() not_null /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_subscription',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_subscription',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Foreign_user.php b/_darcs/pristine/classes/Foreign_user.php index 396680128a..f8a9808844 100644 --- a/_darcs/pristine/classes/Foreign_user.php +++ b/_darcs/pristine/classes/Foreign_user.php @@ -18,7 +18,7 @@ class Foreign_user extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_user',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_user',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -36,7 +36,7 @@ class Foreign_user extends Memcached_DataObject return $fuser; } - return NULL; + return null; } function updateKeys(&$orig) { diff --git a/_darcs/pristine/classes/Invitation.php b/_darcs/pristine/classes/Invitation.php index 1477391b0e..ff64564454 100644 --- a/_darcs/pristine/classes/Invitation.php +++ b/_darcs/pristine/classes/Invitation.php @@ -17,7 +17,7 @@ class Invitation extends Memcached_DataObject public $created; // datetime() not_null /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Invitation',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Invitation',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Memcached_DataObject.php b/_darcs/pristine/classes/Memcached_DataObject.php index 7699e1b380..1d12730c9e 100644 --- a/_darcs/pristine/classes/Memcached_DataObject.php +++ b/_darcs/pristine/classes/Memcached_DataObject.php @@ -23,7 +23,7 @@ require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; class Memcached_DataObject extends DB_DataObject { - function &staticGet($cls, $k, $v=NULL) { + function &staticGet($cls, $k, $v=null) { if (is_null($v)) { $v = $k; # XXX: HACK! @@ -56,7 +56,7 @@ class Memcached_DataObject extends DB_DataObject if ($i->find(true)) { $i->encache(); } else { - $i = NULL; + $i = null; } return $i; } @@ -67,7 +67,7 @@ class Memcached_DataObject extends DB_DataObject return $result; } - function update($orig=NULL) { + function update($orig=null) { if (is_object($orig) && $orig instanceof Memcached_DataObject) { $orig->decache(); # might be different keys } diff --git a/_darcs/pristine/classes/Message.php b/_darcs/pristine/classes/Message.php index dc527fcb13..e04fbb3c03 100644 --- a/_darcs/pristine/classes/Message.php +++ b/_darcs/pristine/classes/Message.php @@ -22,7 +22,7 @@ class Message extends Memcached_DataObject public $source; // varchar(32) /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Message',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Message',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Nonce.php b/_darcs/pristine/classes/Nonce.php index 89d673c532..54d20de9c7 100644 --- a/_darcs/pristine/classes/Nonce.php +++ b/_darcs/pristine/classes/Nonce.php @@ -18,7 +18,7 @@ class Nonce extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Nonce',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Nonce',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Notice.php b/_darcs/pristine/classes/Notice.php index 35e03e342d..e6152812cc 100644 --- a/_darcs/pristine/classes/Notice.php +++ b/_darcs/pristine/classes/Notice.php @@ -48,7 +48,7 @@ class Notice extends Memcached_DataObject public $source; // varchar(32) /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -91,7 +91,7 @@ class Notice extends Memcached_DataObject return true; } - static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) { + static function saveNew($profile_id, $content, $source=null, $is_local=1, $reply_to=null, $uri=null) { $profile = Profile::staticGet($profile_id); @@ -293,7 +293,7 @@ class Notice extends Memcached_DataObject # XXX: too many args; we need to move to named params or even a separate # class for notice streams - static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) { + static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=null, $since=null) { if (common_config('memcached', 'enabled')) { @@ -383,7 +383,7 @@ class Notice extends Memcached_DataObject # If outside our cache window, just go to the DB if ($offset + $limit > NOTICE_CACHE_WINDOW) { - return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); + return Notice::getStreamDirect($qry, $offset, $limit, null, null, $order, null); } # Get the cache; if we can't, just go to the DB @@ -391,7 +391,7 @@ class Notice extends Memcached_DataObject $cache = common_memcache(); if (!$cache) { - return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); + return Notice::getStreamDirect($qry, $offset, $limit, null, null, $order, null); } # Get the notices out of the cache @@ -423,7 +423,7 @@ class Notice extends Memcached_DataObject # bet with our DB. $new_notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, - $last_id, NULL, $order, NULL); + $last_id, null, $order, null); if ($new_notice) { $new_notices = array(); @@ -447,7 +447,7 @@ class Notice extends Memcached_DataObject # Otherwise, get the full cache window out of the DB - $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, NULL, NULL, $order, NULL); + $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, null, null, $order, null); # If there are no hits, just return the value @@ -477,7 +477,7 @@ class Notice extends Memcached_DataObject return $wrapper; } - function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) { + function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=null) { $parts = array(); @@ -496,7 +496,7 @@ class Notice extends Memcached_DataObject return Notice::getStream($qry, 'public', - $offset, $limit, $since_id, $before_id, NULL, $since); + $offset, $limit, $since_id, $before_id, null, $since); } function addToInboxes() { diff --git a/_darcs/pristine/classes/NoticeWrapper.php b/_darcs/pristine/classes/NoticeWrapper.php index edecb30922..19ae37c1b6 100644 --- a/_darcs/pristine/classes/NoticeWrapper.php +++ b/_darcs/pristine/classes/NoticeWrapper.php @@ -35,7 +35,7 @@ class NoticeWrapper extends Notice { public $is_local; // tinyint(1) public $source; // varchar(32) - var $notices = NULL; + var $notices = null; var $i = -1; function __construct($arr) { diff --git a/_darcs/pristine/classes/Notice_inbox.php b/_darcs/pristine/classes/Notice_inbox.php index cc482bd194..922ba26608 100644 --- a/_darcs/pristine/classes/Notice_inbox.php +++ b/_darcs/pristine/classes/Notice_inbox.php @@ -33,7 +33,7 @@ class Notice_inbox extends Memcached_DataObject public $source; // tinyint(1) default_1 /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_inbox',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_inbox',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Notice_source.php b/_darcs/pristine/classes/Notice_source.php index e0a41b927c..a12397b0b6 100644 --- a/_darcs/pristine/classes/Notice_source.php +++ b/_darcs/pristine/classes/Notice_source.php @@ -17,7 +17,7 @@ class Notice_source extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_source',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_source',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Notice_tag.php b/_darcs/pristine/classes/Notice_tag.php index 84c4a1020b..8c3911f764 100644 --- a/_darcs/pristine/classes/Notice_tag.php +++ b/_darcs/pristine/classes/Notice_tag.php @@ -30,7 +30,7 @@ class Notice_tag extends Memcached_DataObject public $created; // datetime() not_null /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_tag',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_tag',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Profile.php b/_darcs/pristine/classes/Profile.php index 1f4508bf15..b95cbf9935 100644 --- a/_darcs/pristine/classes/Profile.php +++ b/_darcs/pristine/classes/Profile.php @@ -41,12 +41,12 @@ class Profile extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE - function getAvatar($width, $height=NULL) { + function getAvatar($width, $height=null) { if (is_null($height)) { $height = $width; } @@ -62,7 +62,7 @@ class Profile extends Memcached_DataObject if ($avatar->find(true)) { return $avatar; } else { - return NULL; + return null; } } @@ -71,12 +71,12 @@ class Profile extends Memcached_DataObject $info = @getimagesize($source); if (!$info) { - return NULL; + return null; } $filename = common_avatar_filename($this->id, image_type_to_extension($info[2]), - NULL, common_timestamp()); + null, common_timestamp()); $filepath = common_avatar_path($filename); copy($source, $filepath); @@ -96,12 +96,12 @@ class Profile extends Memcached_DataObject if (!$this->delete_avatars()) { @unlink($filepath); - return NULL; + return null; } if (!$avatar->insert()) { @unlink($filepath); - return NULL; + return null; } foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) { @@ -109,7 +109,7 @@ class Profile extends Memcached_DataObject if (!($avatar->width == $size && $avatar->height == $size)) { $s = $avatar->scale($size); if (!$s) { - return NULL; + return null; } } } @@ -132,7 +132,7 @@ class Profile extends Memcached_DataObject } # Get latest notice on or before date; default now - function getCurrentNotice($dt=NULL) { + function getCurrentNotice($dt=null) { $notice = new Notice(); $notice->profile_id = $this->id; if ($dt) { @@ -143,7 +143,7 @@ class Profile extends Memcached_DataObject if ($notice->find(true)) { return $notice; } - return NULL; + return null; } function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) { diff --git a/_darcs/pristine/classes/Profile_block.php b/_darcs/pristine/classes/Profile_block.php index 6ea26a3bc4..41d6701eb6 100644 --- a/_darcs/pristine/classes/Profile_block.php +++ b/_darcs/pristine/classes/Profile_block.php @@ -36,7 +36,7 @@ class Profile_block extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_block',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile_block',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Profile_tag.php b/_darcs/pristine/classes/Profile_tag.php index 2daabf8671..5c508c84f7 100644 --- a/_darcs/pristine/classes/Profile_tag.php +++ b/_darcs/pristine/classes/Profile_tag.php @@ -16,7 +16,7 @@ class Profile_tag extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_tag',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile_tag',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Queue_item.php b/_darcs/pristine/classes/Queue_item.php index e54b4976bd..f2fc0be039 100644 --- a/_darcs/pristine/classes/Queue_item.php +++ b/_darcs/pristine/classes/Queue_item.php @@ -16,7 +16,7 @@ class Queue_item extends Memcached_DataObject public $claimed; // datetime() /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Queue_item',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Queue_item',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -28,7 +28,7 @@ class Queue_item extends Memcached_DataObject $qi = new Queue_item(); $qi->transport = $transport; $qi->orderBy('created'); - $qi->whereAdd('claimed is NULL'); + $qi->whereAdd('claimed is null'); $qi->limit(1); @@ -36,7 +36,7 @@ class Queue_item extends Memcached_DataObject if ($cnt) { # XXX: potential race condition - # can we force it to only update if claimed is still NULL + # can we force it to only update if claimed is still null # (or old)? common_log(LOG_INFO, 'claiming queue item = ' . $qi->notice_id . ' for transport ' . $transport); $orig = clone($qi); @@ -49,7 +49,7 @@ class Queue_item extends Memcached_DataObject common_log(LOG_INFO, 'claim failed.'); } } - $qi = NULL; - return NULL; + $qi = null; + return null; } } diff --git a/_darcs/pristine/classes/Remember_me.php b/_darcs/pristine/classes/Remember_me.php index 5bbd6cf174..9d3f9378f9 100644 --- a/_darcs/pristine/classes/Remember_me.php +++ b/_darcs/pristine/classes/Remember_me.php @@ -15,7 +15,7 @@ class Remember_me extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Remember_me',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Remember_me',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Remote_profile.php b/_darcs/pristine/classes/Remote_profile.php index c961dcca2e..66b0f3a5c0 100644 --- a/_darcs/pristine/classes/Remote_profile.php +++ b/_darcs/pristine/classes/Remote_profile.php @@ -38,7 +38,7 @@ class Remote_profile extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Remote_profile',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Remote_profile',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Reply.php b/_darcs/pristine/classes/Reply.php index d71ce3afbc..10d6ced5bd 100644 --- a/_darcs/pristine/classes/Reply.php +++ b/_darcs/pristine/classes/Reply.php @@ -16,7 +16,7 @@ class Reply extends Memcached_DataObject public $replied_id; // int(4) /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Reply',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Reply',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Sms_carrier.php b/_darcs/pristine/classes/Sms_carrier.php index f6e0791f99..b4a9d86554 100644 --- a/_darcs/pristine/classes/Sms_carrier.php +++ b/_darcs/pristine/classes/Sms_carrier.php @@ -17,7 +17,7 @@ class Sms_carrier extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Sms_carrier',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Sms_carrier',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Subscription.php b/_darcs/pristine/classes/Subscription.php index a3b5e4b90d..d70f995502 100644 --- a/_darcs/pristine/classes/Subscription.php +++ b/_darcs/pristine/classes/Subscription.php @@ -40,7 +40,7 @@ class Subscription extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Subscription',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Subscription',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/Token.php b/_darcs/pristine/classes/Token.php index d180ecebeb..3c88444c8b 100644 --- a/_darcs/pristine/classes/Token.php +++ b/_darcs/pristine/classes/Token.php @@ -19,7 +19,7 @@ class Token extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Token',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Token',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/classes/User.php b/_darcs/pristine/classes/User.php index c2c6ad57f1..29e6a86e92 100644 --- a/_darcs/pristine/classes/User.php +++ b/_darcs/pristine/classes/User.php @@ -62,7 +62,7 @@ class User extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('User',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -118,10 +118,10 @@ class User extends Memcached_DataObject return !in_array($nickname, $merged); } - function getCurrentNotice($dt=NULL) { + function getCurrentNotice($dt=null) { $profile = $this->getProfile(); if (!$profile) { - return NULL; + return null; } return $profile->getCurrentNotice($dt); } @@ -336,20 +336,20 @@ class User extends Memcached_DataObject return $user; } - function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { + function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) { $qry = 'SELECT notice.* ' . 'FROM notice JOIN reply ON notice.id = reply.notice_id ' . 'WHERE reply.profile_id = %d '; return Notice::getStream(sprintf($qry, $this->id), 'user:replies:'.$this->id, - $offset, $limit, $since_id, $before_id, NULL, $since); + $offset, $limit, $since_id, $before_id, null, $since); } - function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { + function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) { $profile = $this->getProfile(); if (!$profile) { - return NULL; + return null; } else { return $profile->getNotices($offset, $limit, $since_id, $before_id); } @@ -365,7 +365,7 @@ class User extends Memcached_DataObject $offset, $limit); } - function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { + function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) { $enabled = common_config('inboxes', 'enabled'); # Complicated code, depending on whether we support inboxes yet @@ -377,7 +377,7 @@ class User extends Memcached_DataObject 'SELECT notice.* ' . 'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' . 'WHERE subscription.subscriber = %d '; - $order = NULL; + $order = null; } else if ($enabled === true || ($enabled == 'transitional' && $this->inboxed == 1)) { diff --git a/_darcs/pristine/classes/User_openid.php b/_darcs/pristine/classes/User_openid.php index ad68f74024..7dc476dc4b 100644 --- a/_darcs/pristine/classes/User_openid.php +++ b/_darcs/pristine/classes/User_openid.php @@ -17,7 +17,7 @@ class User_openid extends Memcached_DataObject public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_openid',$k,$v); } + function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('User_openid',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE diff --git a/_darcs/pristine/lib/common.php b/_darcs/pristine/lib/common.php index 95ba64d0fe..3e162f781f 100644 --- a/_darcs/pristine/lib/common.php +++ b/_darcs/pristine/lib/common.php @@ -58,16 +58,16 @@ $config = 'server' => 'localhost', 'theme' => 'default', 'path' => '/', - 'logfile' => NULL, + 'logfile' => null, 'fancy' => false, 'locale_path' => INSTALLDIR.'/locale', 'language' => 'en_US', 'languages' => get_all_languages(), 'email' => - array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : NULL, - 'broughtby' => NULL, + array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : null, + 'broughtby' => null, 'timezone' => 'UTC', - 'broughtbyurl' => NULL, + 'broughtbyurl' => null, 'closed' => false, 'inviteonly' => false, 'private' => false), @@ -82,19 +82,19 @@ $config = 'image' => 'http://i.creativecommons.org/l/by/3.0/88x31.png'), 'mail' => array('backend' => 'mail', - 'params' => NULL), + 'params' => null), 'nickname' => array('blacklist' => array(), 'featured' => array()), 'profile' => array('banned' => array()), 'avatar' => - array('server' => NULL), + array('server' => null), 'public' => array('localonly' => true, 'blacklist' => array()), 'theme' => - array('server' => NULL), + array('server' => null), 'throttle' => array('enabled' => false, // whether to throttle edits; false by default 'count' => 20, // number of allowed messages in timespan @@ -107,7 +107,7 @@ $config = 'encryption' => true, 'resource' => 'uniquename', 'password' => 'blahblahblah', - 'host' => NULL, # only set if != server + 'host' => null, # only set if != server 'debug' => false, # print extra debug info 'public' => array()), # JIDs of users who want to receive the public stream 'sphinx' => @@ -140,7 +140,7 @@ $config['db'] = 'class_location' => INSTALLDIR . '/classes', 'require_prefix' => 'classes/', 'class_prefix' => '', - 'mirror' => NULL, + 'mirror' => null, 'db_driver' => 'DB', # XXX: JanRain libs only work with DB 'quote_identifiers' => false, 'type' => 'mysql' ); diff --git a/_darcs/pristine/lib/deleteaction.php b/_darcs/pristine/lib/deleteaction.php index 335070cc4d..a7de6b8fb1 100644 --- a/_darcs/pristine/lib/deleteaction.php +++ b/_darcs/pristine/lib/deleteaction.php @@ -43,7 +43,7 @@ class DeleteAction extends Action { } } - function show_top($arr=NULL) { + function show_top($arr=null) { $instr = $this->get_instructions(); $output = common_markup_to_html($instr); common_element_start('div', 'instructions'); @@ -52,7 +52,7 @@ class DeleteAction extends Action { } function get_title() { - return NULL; + return null; } function show_header() { diff --git a/_darcs/pristine/lib/facebookaction.php b/_darcs/pristine/lib/facebookaction.php index 67595861f0..731460f12c 100644 --- a/_darcs/pristine/lib/facebookaction.php +++ b/_darcs/pristine/lib/facebookaction.php @@ -81,7 +81,7 @@ class FacebookAction extends Action { $fbml_main = "$content $html"; - $facebook->api_client->profile_setFBML(NULL, $fbuid, $fbml, NULL, NULL, $fbml_main); + $facebook->api_client->profile_setFBML(null, $fbuid, $fbml, null, null, $fbml_main); } # Display methods @@ -235,7 +235,7 @@ class FacebookAction extends Action { return $html; } - function pagination($have_before, $have_after, $page, $fbaction, $args=NULL) { + function pagination($have_before, $have_after, $page, $fbaction, $args=null) { $html = ''; @@ -266,7 +266,7 @@ class FacebookAction extends Action { } } - function pagination_url($fbaction, $args=NULL) { + function pagination_url($fbaction, $args=null) { global $config; $extra = ''; diff --git a/_darcs/pristine/lib/oauthstore.php b/_darcs/pristine/lib/oauthstore.php index aa705be30d..421b618b75 100644 --- a/_darcs/pristine/lib/oauthstore.php +++ b/_darcs/pristine/lib/oauthstore.php @@ -33,7 +33,7 @@ class LaconicaOAuthDataStore extends OAuthDataStore { $con->seed = common_good_rand(16); $con->created = DB_DataObject_Cast::dateTime(); if (!$con->insert()) { - return NULL; + return null; } } return new OAuthConsumer($con->consumer_key, ''); @@ -47,7 +47,7 @@ class LaconicaOAuthDataStore extends OAuthDataStore { if ($t->find(true)) { return new OAuthToken($t->tok, $t->secret); } else { - return NULL; + return null; } } @@ -75,7 +75,7 @@ class LaconicaOAuthDataStore extends OAuthDataStore { $t->state = 0; # unauthorized $t->created = DB_DataObject_Cast::dateTime(); if (!$t->insert()) { - return NULL; + return null; } else { return new OAuthToken($t->tok, $t->secret); } @@ -104,35 +104,35 @@ class LaconicaOAuthDataStore extends OAuthDataStore { if (!$at->insert()) { $e = $at->_lastError; common_debug('access token "'.$at->tok.'" not inserted: "'.$e->message.'"', __FILE__); - return NULL; + return null; } else { common_debug('access token "'.$at->tok.'" inserted', __FILE__); # burn the old one $orig_rt = clone($rt); $rt->state = 2; # used if (!$rt->update($orig_rt)) { - return NULL; + return null; } common_debug('request token "'.$rt->tok.'" updated', __FILE__); # Update subscription # XXX: mixing levels here $sub = Subscription::staticGet('token', $rt->tok); if (!$sub) { - return NULL; + return null; } common_debug('subscription for request token found', __FILE__); $orig_sub = clone($sub); $sub->token = $at->tok; $sub->secret = $at->secret; if (!$sub->update($orig_sub)) { - return NULL; + return null; } else { common_debug('subscription updated to use access token', __FILE__); return new OAuthToken($at->tok, $at->secret); } } } else { - return NULL; + return null; } } diff --git a/_darcs/pristine/lib/omb.php b/_darcs/pristine/lib/omb.php index 94ccc2ecd2..8199b0679d 100644 --- a/_darcs/pristine/lib/omb.php +++ b/_darcs/pristine/lib/omb.php @@ -44,7 +44,7 @@ define('OAUTH_POST_BODY', OAUTH_NAMESPACE.'parameters/post-body'); define('OAUTH_HMAC_SHA1', OAUTH_NAMESPACE.'signature/HMAC-SHA1'); function omb_oauth_consumer() { - static $con = NULL; + static $con = null; if (!$con) { $con = new OAuthConsumer(common_root_url(), ''); } @@ -61,7 +61,7 @@ function omb_oauth_server() { } function omb_oauth_datastore() { - static $store = NULL; + static $store = null; if (!$store) { $store = new LaconicaOAuthDataStore(); } @@ -69,7 +69,7 @@ function omb_oauth_datastore() { } function omb_hmac_sha1() { - static $hmac_method = NULL; + static $hmac_method = null; if (!$hmac_method) { $hmac_method = new OAuthSignatureMethod_HMAC_SHA1(); } @@ -91,22 +91,22 @@ function omb_match_service($service, $type) { function omb_service_uri($service) { if (!$service) { - return NULL; + return null; } $uris = $service->getURIs(); if (!$uris) { - return NULL; + return null; } return $uris[0]; } function omb_local_id($service) { if (!$service) { - return NULL; + return null; } $els = $service->getElements('xrd:LocalID'); if (!$els) { - return NULL; + return null; } $el = $els[0]; return $service->parser->content($el); diff --git a/_darcs/pristine/lib/openid.php b/_darcs/pristine/lib/openid.php index ebc5ed168d..3ca359fa18 100644 --- a/_darcs/pristine/lib/openid.php +++ b/_darcs/pristine/lib/openid.php @@ -32,7 +32,7 @@ define('OPENID_COOKIE_EXPIRY', round(365.25 * 24 * 60 * 60)); define('OPENID_COOKIE_KEY', 'lastusedopenid'); function oid_store() { - static $store = NULL; + static $store = null; if (!$store) { # Can't be called statically $user = new User(); @@ -63,7 +63,7 @@ function oid_get_last() { if ($openid_url && strlen($openid_url) > 0) { return $openid_url; } else { - return NULL; + return null; } } @@ -85,7 +85,7 @@ function oid_link_user($id, $canonical, $display) { } function oid_get_user($openid_url) { - $user = NULL; + $user = null; $oid = User_openid::staticGet('canonical', $openid_url); if ($oid) { $user = User::staticGet('id', $oid->user_id); @@ -93,7 +93,7 @@ function oid_get_user($openid_url) { return $user; } -function oid_check_immediate($openid_url, $backto=NULL) { +function oid_check_immediate($openid_url, $backto=null) { if (!$backto) { $action = $_REQUEST['action']; $args = common_copy_args($_GET); @@ -177,9 +177,9 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) { if (Auth_OpenID::isFailure($form_html)) { $this->show_form(sprintf(_('Could not create OpenID form: %s'), $form_html->message)); } else { - common_show_header(_('OpenID Auto-Submit'), NULL, NULL, '_oid_print_instructions'); + common_show_header(_('OpenID Auto-Submit'), null, null, '_oid_print_instructions'); common_raw($form_html); - common_element('script', NULL, + common_element('script', null, '$(document).ready(function() { ' . ' $("#'. $form_id .'").submit(); '. '});'); diff --git a/_darcs/pristine/lib/personal.php b/_darcs/pristine/lib/personal.php index 1928349a39..7ff9305f1f 100644 --- a/_darcs/pristine/lib/personal.php +++ b/_darcs/pristine/lib/personal.php @@ -32,7 +32,7 @@ class PersonalAction extends Action { function views_menu() { - $user = NULL; + $user = null; $action = $this->trimmed('action'); $nickname = $this->trimmed('nickname'); diff --git a/_darcs/pristine/lib/profilelist.php b/_darcs/pristine/lib/profilelist.php index e32c5c2549..9929c8647c 100644 --- a/_darcs/pristine/lib/profilelist.php +++ b/_darcs/pristine/lib/profilelist.php @@ -24,11 +24,11 @@ define('PROFILES_PER_PAGE', 20); class ProfileList { - var $profile = NULL; - var $owner = NULL; - var $action = NULL; + var $profile = null; + var $owner = null; + var $action = null; - function __construct($profile, $owner=NULL, $action=NULL) { + function __construct($profile, $owner=null, $action=null) { $this->profile = $profile; $this->owner = $owner; $this->action = $action; diff --git a/_darcs/pristine/lib/queuehandler.php b/_darcs/pristine/lib/queuehandler.php index 5e3905f591..ecf58f69f9 100644 --- a/_darcs/pristine/lib/queuehandler.php +++ b/_darcs/pristine/lib/queuehandler.php @@ -29,7 +29,7 @@ class QueueHandler extends Daemon { var $_id = 'generic'; - function QueueHandler($id=NULL) { + function QueueHandler($id=null) { if ($id) { $this->set_id($id); } @@ -52,7 +52,7 @@ class QueueHandler extends Daemon { } function transport() { - return NULL; + return null; } function start() { @@ -83,7 +83,7 @@ class QueueHandler extends Daemon { if (!$result) { $this->log(LOG_WARNING, 'Failed broadcast for notice ID = ' . $notice->id); $orig = $qi; - $qi->claimed = NULL; + $qi->claimed = null; $qi->update($orig); $this->log(LOG_WARNING, 'Abandoned claim for notice ID = ' . $notice->id); continue; @@ -91,7 +91,7 @@ class QueueHandler extends Daemon { $this->log(LOG_INFO, 'finished broadcasting notice ID = ' . $notice->id); $notice->free(); unset($notice); - $notice = NULL; + $notice = null; } else { $this->log(LOG_WARNING, 'queue item for notice that does not exist'); } diff --git a/_darcs/pristine/lib/rssaction.php b/_darcs/pristine/lib/rssaction.php index b647968887..a21ce3a972 100644 --- a/_darcs/pristine/lib/rssaction.php +++ b/_darcs/pristine/lib/rssaction.php @@ -55,7 +55,7 @@ class Rss10Action extends Action { } function get_image() { - return NULL; + return null; } function show_rss($limit=0) { @@ -84,9 +84,9 @@ class Rss10Action extends Action { $image = $this->get_image(); common_element_start('channel', array('rdf:about' => $channel['url'])); - common_element('title', NULL, $channel['title']); - common_element('link', NULL, $channel['link']); - common_element('description', NULL, $channel['description']); + common_element('title', null, $channel['title']); + common_element('link', null, $channel['link']); + common_element('description', null, $channel['description']); common_element('cc:licence', array('rdf:resource' => common_config('license','url'))); if ($image) { @@ -111,9 +111,9 @@ class Rss10Action extends Action { if ($image) { $channel = $this->get_channel(); common_element_start('image', array('rdf:about' => $image)); - common_element('title', NULL, $channel['title']); - common_element('link', NULL, $channel['link']); - common_element('url', NULL, $image); + common_element('title', null, $channel['title']); + common_element('link', null, $channel['link']); + common_element('url', null, $image); common_element_end('image'); } } @@ -124,11 +124,11 @@ class Rss10Action extends Action { $creator_uri = common_profile_uri($profile); common_element_start('item', array('rdf:about' => $notice->uri)); $title = $profile->nickname . ': ' . common_xml_safe_str(trim($notice->content)); - common_element('title', NULL, $title); - common_element('link', NULL, $nurl); - common_element('description', NULL, $profile->nickname."'s status on ".common_exact_date($notice->created)); - common_element('dc:date', NULL, common_date_w3dtf($notice->created)); - common_element('dc:creator', NULL, ($profile->fullname) ? $profile->fullname : $profile->nickname); + common_element('title', null, $title); + common_element('link', null, $nurl); + common_element('description', null, $profile->nickname."'s status on ".common_exact_date($notice->created)); + common_element('dc:date', null, common_date_w3dtf($notice->created)); + common_element('dc:creator', null, ($profile->fullname) ? $profile->fullname : $profile->nickname); common_element('sioc:has_creator', array('rdf:resource' => $creator_uri)); common_element('laconica:postIcon', array('rdf:resource' => common_profile_avatar_url($profile))); common_element('cc:licence', array('rdf:resource' => common_config('license', 'url'))); @@ -141,11 +141,11 @@ class Rss10Action extends Action { $id = $profile->id; $nickname = $profile->nickname; common_element_start('sioc:User', array('rdf:about' => $uri)); - common_element('foaf:nick', NULL, $nickname); + common_element('foaf:nick', null, $nickname); if ($profile->fullname) { - common_element('foaf:name', NULL, $profile->fullname); + common_element('foaf:name', null, $profile->fullname); } - common_element('sioc:id', NULL, $id); + common_element('sioc:id', null, $id); $avatar = common_profile_avatar_url($profile); common_element('sioc:avatar', array('rdf:resource' => $avatar)); common_element_end('sioc:User'); @@ -175,7 +175,7 @@ class Rss10Action extends Action { 'http://laconi.ca/ont/', 'xmlns' => 'http://purl.org/rss/1.0/')); common_element_start('sioc:Site', array('rdf:about' => common_root_url())); - common_element('sioc:name', NULL, common_config('site', 'name')); + common_element('sioc:name', null, common_config('site', 'name')); common_element_start('sioc:container_of'); common_element('sioc:Container', array('rdf:about' => $channel['url'])); diff --git a/_darcs/pristine/lib/searchaction.php b/_darcs/pristine/lib/searchaction.php index 8634bd99cf..3eec918326 100644 --- a/_darcs/pristine/lib/searchaction.php +++ b/_darcs/pristine/lib/searchaction.php @@ -30,7 +30,7 @@ class SearchAction extends Action { $this->show_form(); } - function show_top($arr=NULL) { + function show_top($arr=null) { if ($arr) { $error = $arr[1]; } @@ -47,14 +47,14 @@ class SearchAction extends Action { } function get_title() { - return NULL; + return null; } function show_header($arr) { return; } - function show_form($error=NULL) { + function show_form($error=null) { global $config; $q = $this->trimmed('q'); @@ -99,11 +99,11 @@ class SearchAction extends Action { array( _('People'), _('Find people on this site'), - ($action != 'peoplesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : NULL), + ($action != 'peoplesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : null), 'noticesearch' => array( _('Text'), _('Find content of notices'), - ($action != 'noticesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : NULL) + ($action != 'noticesearch' && $this->trimmed('q')) ? array('q' => $this->trimmed('q')) : null) ); $this->nav_menu($menu); } diff --git a/_darcs/pristine/lib/settingsaction.php b/_darcs/pristine/lib/settingsaction.php index 3021eb192e..208d2a1b68 100644 --- a/_darcs/pristine/lib/settingsaction.php +++ b/_darcs/pristine/lib/settingsaction.php @@ -44,7 +44,7 @@ class SettingsAction extends Action { return false; } - function show_form($msg=NULL, $success=false) { + function show_form($msg=null, $success=false) { return false; } @@ -55,9 +55,9 @@ class SettingsAction extends Action { } } - function form_header($title, $msg=NULL, $success=false) { + function form_header($title, $msg=null, $success=false) { common_show_header($title, - NULL, + null, array($msg, $success), array($this, 'show_top')); } diff --git a/_darcs/pristine/lib/twitter.php b/_darcs/pristine/lib/twitter.php index c1d2de0eae..1212875eab 100644 --- a/_darcs/pristine/lib/twitter.php +++ b/_darcs/pristine/lib/twitter.php @@ -148,13 +148,13 @@ function retreive_twitter_friends($twitter_id, $screen_name, $password) { $data = get_twitter_data($uri . $i, $screen_name, $password); if (!$data) { - return NULL; + return null; } $more_friends = json_decode($data); if (!$more_friends) { - return NULL; + return null; } $friends = array_merge($friends, $more_friends); diff --git a/_darcs/pristine/lib/twitterapi.php b/_darcs/pristine/lib/twitterapi.php index 3122caf12e..ed86c77c44 100644 --- a/_darcs/pristine/lib/twitterapi.php +++ b/_darcs/pristine/lib/twitterapi.php @@ -34,15 +34,15 @@ class TwitterapiAction extends Action { $twitter_user['name'] = $profile->getBestName(); $twitter_user['followers_count'] = $this->count_subscriptions($profile); $twitter_user['screen_name'] = $profile->nickname; - $twitter_user['description'] = ($profile->bio) ? $profile->bio : NULL; - $twitter_user['location'] = ($profile->location) ? $profile->location : NULL; + $twitter_user['description'] = ($profile->bio) ? $profile->bio : null; + $twitter_user['location'] = ($profile->location) ? $profile->location : null; $twitter_user['id'] = intval($profile->id); $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE); $twitter_user['profile_image_url'] = ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE); $twitter_user['protected'] = 'false'; # not supported by Laconica yet - $twitter_user['url'] = ($profile->homepage) ? $profile->homepage : NULL; + $twitter_user['url'] = ($profile->homepage) ? $profile->homepage : null; if ($get_notice) { $notice = $profile->getCurrentNotice(); @@ -63,10 +63,10 @@ class TwitterapiAction extends Action { $twitter_status['text'] = $notice->content; $twitter_status['truncated'] = 'false'; # Not possible on Laconica $twitter_status['created_at'] = $this->date_twitter($notice->created); - $twitter_status['in_reply_to_status_id'] = ($notice->reply_to) ? intval($notice->reply_to) : NULL; + $twitter_status['in_reply_to_status_id'] = ($notice->reply_to) ? intval($notice->reply_to) : null; $twitter_status['source'] = $this->source_link($notice->source); $twitter_status['id'] = intval($notice->id); - $twitter_status['in_reply_to_user_id'] = ($notice->reply_to) ? $this->replier_by_reply(intval($notice->reply_to)) : NULL; + $twitter_status['in_reply_to_user_id'] = ($notice->reply_to) ? $this->replier_by_reply(intval($notice->reply_to)) : null; if (isset($this->auth_user)) { $twitter_status['favorited'] = ($this->auth_user->hasFave($notice)) ? 'true' : 'false'; @@ -157,10 +157,10 @@ class TwitterapiAction extends Action { $this->show_twitter_xml_user($twitter_status['user']); break; case 'text': - common_element($element, NULL, common_xml_safe_str($value)); + common_element($element, null, common_xml_safe_str($value)); break; default: - common_element($element, NULL, $value); + common_element($element, null, $value); } } common_element_end('status'); @@ -172,7 +172,7 @@ class TwitterapiAction extends Action { if ($element == 'status') { $this->show_twitter_xml_status($twitter_user['status']); } else { - common_element($element, NULL, $value); + common_element($element, null, $value); } } common_element_end($role); @@ -180,22 +180,22 @@ class TwitterapiAction extends Action { function show_twitter_rss_item($entry) { common_element_start('item'); - common_element('title', NULL, $entry['title']); - common_element('description', NULL, $entry['description']); - common_element('pubDate', NULL, $entry['pubDate']); - common_element('guid', NULL, $entry['guid']); - common_element('link', NULL, $entry['link']); + common_element('title', null, $entry['title']); + common_element('description', null, $entry['description']); + common_element('pubDate', null, $entry['pubDate']); + common_element('guid', null, $entry['guid']); + common_element('link', null, $entry['link']); common_element_end('item'); } function show_twitter_atom_entry($entry) { common_element_start('entry'); - common_element('title', NULL, $entry['title']); + common_element('title', null, $entry['title']); common_element('content', array('type' => 'html'), $entry['content']); - common_element('id', NULL, $entry['id']); - common_element('published', NULL, $entry['published']); - common_element('updated', NULL, $entry['updated']); - common_element('link', array('href' => $entry['link'], 'rel' => 'alternate', 'type' => 'text/html'), NULL); + common_element('id', null, $entry['id']); + common_element('published', null, $entry['published']); + common_element('updated', null, $entry['updated']); + common_element('link', array('href' => $entry['link'], 'rel' => 'alternate', 'type' => 'text/html'), null); common_element_end('entry'); } @@ -240,10 +240,10 @@ class TwitterapiAction extends Action { $this->show_twitter_xml_user($value, $element); break; case 'text': - common_element($element, NULL, common_xml_safe_str($value)); + common_element($element, null, common_xml_safe_str($value)); break; default: - common_element($element, NULL, $value); + common_element($element, null, $value); } } common_element_end('direct_message'); @@ -270,13 +270,13 @@ class TwitterapiAction extends Action { $this->end_document('xml'); } - function show_rss_timeline($notice, $title, $link, $subtitle, $suplink=NULL) { + function show_rss_timeline($notice, $title, $link, $subtitle, $suplink=null) { $this->init_document('rss'); common_element_start('channel'); - common_element('title', NULL, $title); - common_element('link', NULL, $link); + common_element('title', null, $title); + common_element('link', null, $link); if (!is_null($suplink)) { # For FriendFeed's SUP protocol common_element('link', array('xmlns' => 'http://www.w3.org/2005/Atom', @@ -284,9 +284,9 @@ class TwitterapiAction extends Action { 'href' => $suplink, 'type' => 'application/json')); } - common_element('description', NULL, $subtitle); - common_element('language', NULL, 'en-us'); - common_element('ttl', NULL, '40'); + common_element('description', null, $subtitle); + common_element('language', null, 'en-us'); + common_element('ttl', null, '40'); if (is_array($notice)) { foreach ($notice as $n) { @@ -304,20 +304,20 @@ class TwitterapiAction extends Action { $this->end_twitter_rss(); } - function show_atom_timeline($notice, $title, $id, $link, $subtitle=NULL, $suplink=NULL) { + function show_atom_timeline($notice, $title, $id, $link, $subtitle=null, $suplink=null) { $this->init_document('atom'); - common_element('title', NULL, $title); - common_element('id', NULL, $id); - common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL); + common_element('title', null, $title); + common_element('id', null, $id); + common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), null); if (!is_null($suplink)) { # For FriendFeed's SUP protocol common_element('link', array('rel' => 'http://api.friendfeed.com/2008/03#sup', 'href' => $suplink, 'type' => 'application/json')); } - common_element('subtitle', NULL, $subtitle); + common_element('subtitle', null, $subtitle); if (is_array($notice)) { foreach ($notice as $n) { @@ -377,7 +377,7 @@ class TwitterapiAction extends Action { } else { common_debug("Can't get notice: $reply_id", __FILE__); } - return NULL; + return null; } // XXX: Candidate for a general utility method somewhere? @@ -488,8 +488,8 @@ class TwitterapiAction extends Action { if ($content_type == 'xml') { $this->init_document('xml'); common_element_start('hash'); - common_element('error', NULL, $msg); - common_element('request', NULL, $_SERVER['REQUEST_URI']); + common_element('error', null, $msg); + common_element('request', null, $_SERVER['REQUEST_URI']); common_element_end('hash'); $this->end_document('xml'); } else { @@ -521,7 +521,7 @@ class TwitterapiAction extends Action { common_element_end('feed'); } - function show_profile($profile, $content_type='xml', $notice=NULL) { + function show_profile($profile, $content_type='xml', $notice=null) { $profile_array = $this->twitter_user_array($profile, true); switch ($content_type) { case 'xml': @@ -537,7 +537,7 @@ class TwitterapiAction extends Action { return; } - function get_user($id, $apidata=NULL) { + function get_user($id, $apidata=null) { if (!$id) { return $apidata['user']; } else if (is_numeric($id)) { @@ -556,7 +556,7 @@ class TwitterapiAction extends Action { if ($user) { return $user->getProfile(); } else { - return NULL; + return null; } } } diff --git a/_darcs/pristine/lib/xmppqueuehandler.php b/_darcs/pristine/lib/xmppqueuehandler.php index 33b9872916..10c754a5b4 100644 --- a/_darcs/pristine/lib/xmppqueuehandler.php +++ b/_darcs/pristine/lib/xmppqueuehandler.php @@ -38,14 +38,14 @@ class XmppQueueHandler extends QueueHandler { $this->conn->addEventHandler('message', 'forward_message', $this); $this->conn->addEventHandler('reconnect', 'handle_reconnect', $this); $this->conn->setReconnectTimeout(600); - jabber_send_presence("Send me a message to post a notice", 'available', NULL, 'available', -1); + jabber_send_presence("Send me a message to post a notice", 'available', null, 'available', -1); } return !is_null($this->conn); } function handle_reconnect(&$pl) { $this->conn->processUntil('session_start'); - $this->conn->presence(NULL, 'available', NULL, 'available', -1); + $this->conn->presence(null, 'available', null, 'available', -1); } function idle($timeout=0) { @@ -71,7 +71,7 @@ class XmppQueueHandler extends QueueHandler { return; } $this->log(LOG_INFO, 'Forwarding message from ' . $pl['from'] . ' to ' . $listener); - $this->conn->message($this->listener(), $pl['body'], 'chat', NULL, $this->ofrom($pl['from'])); + $this->conn->message($this->listener(), $pl['body'], 'chat', null, $this->ofrom($pl['from'])); } function ofrom($from) { diff --git a/_darcs/pristine/scripts/enjitqueuehandler.php b/_darcs/pristine/scripts/enjitqueuehandler.php index cfb2537533..1c033603ff 100644 --- a/_darcs/pristine/scripts/enjitqueuehandler.php +++ b/_darcs/pristine/scripts/enjitqueuehandler.php @@ -117,7 +117,7 @@ class EnjitQueueHandler extends QueueHandler { mb_internal_encoding('UTF-8'); -$id = ($argc > 1) ? $argv[1] : NULL; +$id = ($argc > 1) ? $argv[1] : null; $handler = new EnjitQueueHandler($id); diff --git a/_darcs/pristine/scripts/fixup_inboxes.php b/_darcs/pristine/scripts/fixup_inboxes.php index e631a80ed8..a5c8a0a5ac 100644 --- a/_darcs/pristine/scripts/fixup_inboxes.php +++ b/_darcs/pristine/scripts/fixup_inboxes.php @@ -34,7 +34,7 @@ define('LACONICA', true); require_once(INSTALLDIR . '/lib/common.php'); -$start_at = ($argc > 1) ? $argv[1] : NULL; +$start_at = ($argc > 1) ? $argv[1] : null; common_log(LOG_INFO, 'Updating user inboxes.'); diff --git a/_darcs/pristine/scripts/fixup_notices_rendered.php b/_darcs/pristine/scripts/fixup_notices_rendered.php index 1fa9f394e2..c27185546e 100644 --- a/_darcs/pristine/scripts/fixup_notices_rendered.php +++ b/_darcs/pristine/scripts/fixup_notices_rendered.php @@ -31,7 +31,7 @@ require_once(INSTALLDIR . '/lib/common.php'); common_log(LOG_INFO, 'Starting to render old notices.'); -$start_at = ($argc > 1) ? $argv[1] : NULL; +$start_at = ($argc > 1) ? $argv[1] : null; $notice = new Notice(); if ($start_at) { diff --git a/_darcs/pristine/scripts/jabberqueuehandler.php b/_darcs/pristine/scripts/jabberqueuehandler.php index 8e33cfaf0d..271aab22bf 100644 --- a/_darcs/pristine/scripts/jabberqueuehandler.php +++ b/_darcs/pristine/scripts/jabberqueuehandler.php @@ -35,7 +35,7 @@ set_error_handler('common_error_handler'); class JabberQueueHandler extends XmppQueueHandler { - var $conn = NULL; + var $conn = null; function transport() { return 'jabber'; diff --git a/_darcs/pristine/scripts/maildaemon.php b/_darcs/pristine/scripts/maildaemon.php index 6d85075148..886e72ba70 100644 --- a/_darcs/pristine/scripts/maildaemon.php +++ b/_darcs/pristine/scripts/maildaemon.php @@ -42,7 +42,7 @@ class MailerDaemon { function handle_message($fname='php://stdin') { list($from, $to, $msg) = $this->parse_message($fname); if (!$from || !$to || !$msg) { - $this->error(NULL, _('Could not parse message.')); + $this->error(null, _('Could not parse message.')); } common_log(LOG_INFO, "Mail from $from to $to: " .substr($msg, 0, 20)); $user = $this->user_from($from); @@ -74,7 +74,7 @@ class MailerDaemon { function user_from($from_hdr) { $froms = mailparse_rfc822_parse_addresses($from_hdr); if (!$froms) { - return NULL; + return null; } $from = $froms[0]; $addr = common_canonical_email($from['address']); @@ -140,7 +140,7 @@ class MailerDaemon { 'decode_headers' => true, 'decode_bodies' => true)); if (!$parsed) { - return NULL; + return null; } $from = $parsed->headers['from']; @@ -167,7 +167,7 @@ class MailerDaemon { } function unsupported_type($type) { - $this->error(NULL, "Unsupported message type: " . $type); + $this->error(null, "Unsupported message type: " . $type); } function cleanup_msg($msg) { diff --git a/_darcs/pristine/scripts/ombqueuehandler.php b/_darcs/pristine/scripts/ombqueuehandler.php index 31ae20f00c..43c0980b67 100644 --- a/_darcs/pristine/scripts/ombqueuehandler.php +++ b/_darcs/pristine/scripts/ombqueuehandler.php @@ -67,7 +67,7 @@ ini_set("max_input_time", "0"); set_time_limit(0); mb_internal_encoding('UTF-8'); -$id = ($argc > 1) ? $argv[1] : NULL; +$id = ($argc > 1) ? $argv[1] : null; $handler = new OmbQueueHandler($id); diff --git a/_darcs/pristine/scripts/smsqueuehandler.php b/_darcs/pristine/scripts/smsqueuehandler.php index f17429d963..f8b2e9d53e 100644 --- a/_darcs/pristine/scripts/smsqueuehandler.php +++ b/_darcs/pristine/scripts/smsqueuehandler.php @@ -57,7 +57,7 @@ ini_set("max_input_time", "0"); set_time_limit(0); mb_internal_encoding('UTF-8'); -$id = ($argc > 1) ? $argv[1] : NULL; +$id = ($argc > 1) ? $argv[1] : null; $handler = new SmsQueueHandler($id); diff --git a/_darcs/pristine/scripts/xmppconfirmhandler.php b/_darcs/pristine/scripts/xmppconfirmhandler.php index 454616ca09..9e177b3fa3 100644 --- a/_darcs/pristine/scripts/xmppconfirmhandler.php +++ b/_darcs/pristine/scripts/xmppconfirmhandler.php @@ -101,8 +101,8 @@ class XmppConfirmHandler extends XmppQueueHandler { function next_confirm() { $confirm = new Confirm_address(); - $confirm->whereAdd('claimed IS NULL'); - $confirm->whereAdd('sent IS NULL'); + $confirm->whereAdd('claimed IS null'); + $confirm->whereAdd('sent IS null'); # XXX: eventually we could do other confirmations in the queue, too $confirm->address_type = 'jabber'; $confirm->orderBy('modified DESC'); @@ -122,12 +122,12 @@ class XmppConfirmHandler extends XmppQueueHandler { return false; } } - return NULL; + return null; } function clear_old_confirm_claims() { $confirm = new Confirm(); - $confirm->claimed = NULL; + $confirm->claimed = null; $confirm->whereAdd('now() - claimed > '.CLAIM_TIMEOUT); $confirm->update(DB_DATAOBJECT_WHEREADD_ONLY); $confirm->free(); diff --git a/_darcs/pristine/scripts/xmppdaemon.php b/_darcs/pristine/scripts/xmppdaemon.php index cd27a2c149..ead842928f 100644 --- a/_darcs/pristine/scripts/xmppdaemon.php +++ b/_darcs/pristine/scripts/xmppdaemon.php @@ -39,7 +39,7 @@ set_error_handler('common_error_handler'); class XMPPDaemon extends Daemon { - function XMPPDaemon($resource=NULL) { + function XMPPDaemon($resource=null) { static $attrs = array('server', 'port', 'user', 'password', 'host'); foreach ($attrs as $attr) @@ -71,7 +71,7 @@ class XMPPDaemon extends Daemon { $this->conn->setReconnectTimeout(600); jabber_send_presence("Send me a message to post a notice", 'available', - NULL, 'available', 100); + null, 'available', 100); return !$this->conn->isDisconnected(); } @@ -92,7 +92,7 @@ class XMPPDaemon extends Daemon { function handle_reconnect(&$pl) { $this->conn->processUntil('session_start'); - $this->conn->presence('Send me a message to post a notice', 'available', NULL, 'available', 100); + $this->conn->presence('Send me a message to post a notice', 'available', null, 'available', 100); } function get_user($from) { @@ -165,30 +165,30 @@ class XMPPDaemon extends Daemon { $addresses = $xml->sub('addresses'); if (!$addresses) { $this->log(LOG_WARNING, 'Forwarded message without addresses'); - return NULL; + return null; } $address = $addresses->sub('address'); if (!$address) { $this->log(LOG_WARNING, 'Forwarded message without address'); - return NULL; + return null; } if (!array_key_exists('type', $address->attrs)) { $this->log(LOG_WARNING, 'No type for forwarded message'); - return NULL; + return null; } $type = $address->attrs['type']; if ($type != 'ofrom') { $this->log(LOG_WARNING, 'Type of forwarded message is not ofrom'); - return NULL; + return null; } if (!array_key_exists('jid', $address->attrs)) { $this->log(LOG_WARNING, 'No jid for forwarded message'); - return NULL; + return null; } $jid = $address->attrs['jid']; if (!$jid) { $this->log(LOG_WARNING, 'Could not get jid from address'); - return NULL; + return null; } $this->log(LOG_DEBUG, 'Got message forwarded from jid ' . $jid); return $jid; diff --git a/_darcs/tentative_pristine b/_darcs/tentative_pristine index ffadf4b715..62c02a3016 100644 --- a/_darcs/tentative_pristine +++ b/_darcs/tentative_pristine @@ -1,28057 +1,1338 @@ -hunk ./actions/accesstoken.php 25 -- function handle($args) { -- parent::handle($args); -- try { -- common_debug('getting request from env variables', __FILE__); -- common_remove_magic_from_request(); -- $req = OAuthRequest::from_request(); -- common_debug('getting a server', __FILE__); -- $server = omb_oauth_server(); -- common_debug('fetching the access token', __FILE__); -- $token = $server->fetch_access_token($req); -- common_debug('got this token: "'.print_r($token,TRUE).'"', __FILE__); -- common_debug('printing the access token', __FILE__); -- print $token; -- } catch (OAuthException $e) { -- common_server_error($e->getMessage()); -- } -- } -+ function handle($args) { -+ parent::handle($args); -+ try { -+ common_debug('getting request from env variables', __FILE__); -+ common_remove_magic_from_request(); -+ $req = OAuthRequest::from_request(); -+ common_debug('getting a server', __FILE__); -+ $server = omb_oauth_server(); -+ common_debug('fetching the access token', __FILE__); -+ $token = $server->fetch_access_token($req); -+ common_debug('got this token: "'.print_r($token,TRUE).'"', __FILE__); -+ common_debug('printing the access token', __FILE__); -+ print $token; -+ } catch (OAuthException $e) { -+ common_server_error($e->getMessage()); -+ } -+ } -hunk ./actions/all.php 26 -- function handle($args) { -+ function handle($args) { -hunk ./actions/all.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/all.php 30 -- $nickname = common_canonical_nickname($this->arg('nickname')); -- $user = User::staticGet('nickname', $nickname); -+ $nickname = common_canonical_nickname($this->arg('nickname')); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/all.php 33 -- if (!$user) { -- $this->client_error(_('No such user.')); -- return; -- } -+ if (!$user) { -+ $this->client_error(_('No such user.')); -+ return; -+ } -hunk ./actions/all.php 38 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/all.php 40 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/all.php 45 -- # Looks like we're good; show the header -+ # Looks like we're good; show the header -hunk ./actions/all.php 47 -- common_show_header(sprintf(_("%s and friends"), $profile->nickname), -- array($this, 'show_header'), $user, -- array($this, 'show_top')); -+ common_show_header(sprintf(_("%s and friends"), $profile->nickname), -+ array($this, 'show_header'), $user, -+ array($this, 'show_top')); -hunk ./actions/all.php 51 -- $this->show_notices($user); -+ $this->show_notices($user); -hunk ./actions/all.php 53 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/all.php 56 -- function show_header($user) { -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('allrss', array('nickname' => -- $user->nickname)), -- 'type' => 'application/rss+xml', -- 'title' => sprintf(_('Feed for friends of %s'), $user->nickname))); -- } -+ function show_header($user) { -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('allrss', array('nickname' => -+ $user->nickname)), -+ 'type' => 'application/rss+xml', -+ 'title' => sprintf(_('Feed for friends of %s'), $user->nickname))); -+ } -hunk ./actions/all.php 64 -- function show_top($user) { -- $cur = common_current_user(); -+ function show_top($user) { -+ $cur = common_current_user(); -hunk ./actions/all.php 67 -- if ($cur && $cur->id == $user->id) { -- common_notice_form('all'); -- } -+ if ($cur && $cur->id == $user->id) { -+ common_notice_form('all'); -+ } -hunk ./actions/all.php 71 -- $this->views_menu(); -+ $this->views_menu(); -hunk ./actions/all.php 73 -- $this->show_feeds_list(array(0=>array('href'=>common_local_url('allrss', array('nickname' => $user->nickname)), -- 'type' => 'rss', -- 'version' => 'RSS 1.0', -- 'item' => 'allrss'))); -- } -+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('allrss', array('nickname' => $user->nickname)), -+ 'type' => 'rss', -+ 'version' => 'RSS 1.0', -+ 'item' => 'allrss'))); -+ } -hunk ./actions/all.php 79 -- function show_notices($user) { -+ function show_notices($user) { -hunk ./actions/all.php 81 -- $page = $this->trimmed('page'); -- if (!$page) { -- $page = 1; -- } -+ $page = $this->trimmed('page'); -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/all.php 86 -- $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -+ $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -hunk ./actions/all.php 90 -- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'all', array('nickname' => $user->nickname)); -- } -+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'all', array('nickname' => $user->nickname)); -+ } hunk ./actions/allrss.php 28 -- var $user = NULL; -+ var $user = NULL; -hunk ./actions/allrss.php 30 -- function init() { -- $nickname = $this->trimmed('nickname'); -- $this->user = User::staticGet('nickname', $nickname); -+ function init() { -+ $nickname = $this->trimmed('nickname'); -+ $this->user = User::staticGet('nickname', $nickname); -hunk ./actions/allrss.php 34 -- if (!$this->user) { -- common_user_error(_('No such user.')); -- return false; -- } else { -- return true; -- } -- } -+ if (!$this->user) { -+ common_user_error(_('No such user.')); -+ return false; -+ } else { -+ return true; -+ } -+ } -hunk ./actions/allrss.php 42 -- function get_notices($limit=0) { -+ function get_notices($limit=0) { -hunk ./actions/allrss.php 44 -- $user = $this->user; -- -- $notice = $user->noticesWithFriends(0, $limit); -- -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ $user = $this->user; -+ -+ $notice = $user->noticesWithFriends(0, $limit); -+ -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./actions/allrss.php 52 -- return $notices; -- } -+ return $notices; -+ } -hunk ./actions/allrss.php 55 -- function get_channel() { -- $user = $this->user; -- $c = array('url' => common_local_url('allrss', -- array('nickname' => -- $user->nickname)), -- 'title' => sprintf(_('%s and friends'), $user->nickname), -- 'link' => common_local_url('all', -- array('nickname' => -- $user->nickname)), -- 'description' => sprintf(_('Feed for friends of %s'), $user->nickname)); -- return $c; -- } -+ function get_channel() { -+ $user = $this->user; -+ $c = array('url' => common_local_url('allrss', -+ array('nickname' => -+ $user->nickname)), -+ 'title' => sprintf(_('%s and friends'), $user->nickname), -+ 'link' => common_local_url('all', -+ array('nickname' => -+ $user->nickname)), -+ 'description' => sprintf(_('Feed for friends of %s'), $user->nickname)); -+ return $c; -+ } -hunk ./actions/allrss.php 68 -- function get_image() { -- $user = $this->user; -- $profile = $user->getProfile(); -- if (!$profile) { -- return NULL; -- } -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -- return ($avatar) ? $avatar->url : NULL; -- } -+ function get_image() { -+ $user = $this->user; -+ $profile = $user->getProfile(); -+ if (!$profile) { -+ return NULL; -+ } -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ return ($avatar) ? $avatar->url : NULL; -+ } -hunk ./actions/api.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/api.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/api.php 24 -- var $user; -- var $content_type; -- var $api_arg; -- var $api_method; -- var $api_action; -+ var $user; -+ var $content_type; -+ var $api_arg; -+ var $api_method; -+ var $api_action; -hunk ./actions/api.php 30 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/api.php 33 -- $this->api_action = $this->arg('apiaction'); -- $method = $this->arg('method'); -- $argument = $this->arg('argument'); -+ $this->api_action = $this->arg('apiaction'); -+ $method = $this->arg('method'); -+ $argument = $this->arg('argument'); -hunk ./actions/api.php 37 -- if (isset($argument)) { -- $cmdext = explode('.', $argument); -- $this->api_arg = $cmdext[0]; -- $this->api_method = $method; -- $this->content_type = strtolower($cmdext[1]); -- } else { -+ if (isset($argument)) { -+ $cmdext = explode('.', $argument); -+ $this->api_arg = $cmdext[0]; -+ $this->api_method = $method; -+ $this->content_type = strtolower($cmdext[1]); -+ } else { -hunk ./actions/api.php 44 -- # Requested format / content-type will be an extension on the method -- $cmdext = explode('.', $method); -- $this->api_method = $cmdext[0]; -- $this->content_type = strtolower($cmdext[1]); -- } -+ # Requested format / content-type will be an extension on the method -+ $cmdext = explode('.', $method); -+ $this->api_method = $cmdext[0]; -+ $this->content_type = strtolower($cmdext[1]); -+ } -hunk ./actions/api.php 50 -- if ($this->requires_auth()) { -- if (!isset($_SERVER['PHP_AUTH_USER'])) { -+ if ($this->requires_auth()) { -+ if (!isset($_SERVER['PHP_AUTH_USER'])) { -hunk ./actions/api.php 53 -- # This header makes basic auth go -- header('WWW-Authenticate: Basic realm="Laconica API"'); -+ # This header makes basic auth go -+ header('WWW-Authenticate: Basic realm="Laconica API"'); -hunk ./actions/api.php 56 -- # If the user hits cancel -- bam! -- $this->show_basic_auth_error(); -- } else { -- $nickname = $_SERVER['PHP_AUTH_USER']; -- $password = $_SERVER['PHP_AUTH_PW']; -- $user = common_check_user($nickname, $password); -+ # If the user hits cancel -- bam! -+ $this->show_basic_auth_error(); -+ } else { -+ $nickname = $_SERVER['PHP_AUTH_USER']; -+ $password = $_SERVER['PHP_AUTH_PW']; -+ $user = common_check_user($nickname, $password); -hunk ./actions/api.php 63 -- if ($user) { -- $this->user = $user; -- $this->process_command(); -- } else { -- # basic authentication failed -- $this->show_basic_auth_error(); -- } -- } -- } else { -+ if ($user) { -+ $this->user = $user; -+ $this->process_command(); -+ } else { -+ # basic authentication failed -+ $this->show_basic_auth_error(); -+ } -+ } -+ } else { -hunk ./actions/api.php 73 -- # Look for the user in the session -- if (common_logged_in()) { -- $this->user = common_current_user(); -- } -+ # Look for the user in the session -+ if (common_logged_in()) { -+ $this->user = common_current_user(); -+ } -hunk ./actions/api.php 78 -- $this->process_command(); -- } -- } -+ $this->process_command(); -+ } -+ } -hunk ./actions/api.php 82 -- function process_command() { -- $action = "twitapi$this->api_action"; -- $actionfile = INSTALLDIR."/actions/$action.php"; -+ function process_command() { -+ $action = "twitapi$this->api_action"; -+ $actionfile = INSTALLDIR."/actions/$action.php"; -hunk ./actions/api.php 86 -- if (file_exists($actionfile)) { -- require_once($actionfile); -- $action_class = ucfirst($action)."Action"; -- $action_obj = new $action_class(); -+ if (file_exists($actionfile)) { -+ require_once($actionfile); -+ $action_class = ucfirst($action)."Action"; -+ $action_obj = new $action_class(); -hunk ./actions/api.php 95 -- if (method_exists($action_obj, $this->api_method)) { -- $apidata = array( 'content-type' => $this->content_type, -- 'api_method' => $this->api_method, -- 'api_arg' => $this->api_arg, -- 'user' => $this->user); -+ if (method_exists($action_obj, $this->api_method)) { -+ $apidata = array( 'content-type' => $this->content_type, -+ 'api_method' => $this->api_method, -+ 'api_arg' => $this->api_arg, -+ 'user' => $this->user); -hunk ./actions/api.php 101 -- call_user_func(array($action_obj, $this->api_method), $_REQUEST, $apidata); -- } else { -- common_user_error("API method not found!", $code=404); -- } -- } else { -- common_user_error("API method not found!", $code=404); -- } -- } -+ call_user_func(array($action_obj, $this->api_method), $_REQUEST, $apidata); -+ } else { -+ common_user_error("API method not found!", $code=404); -+ } -+ } else { -+ common_user_error("API method not found!", $code=404); -+ } -+ } -hunk ./actions/api.php 110 -- # Whitelist of API methods that don't need authentication -- function requires_auth() { -- static $noauth = array( 'statuses/public_timeline', -- 'statuses/show', -- 'users/show', -- 'help/test', -- 'help/downtime_schedule'); -+ # Whitelist of API methods that don't need authentication -+ function requires_auth() { -+ static $noauth = array( 'statuses/public_timeline', -+ 'statuses/show', -+ 'users/show', -+ 'help/test', -+ 'help/downtime_schedule'); -hunk ./actions/api.php 118 -- static $bareauth = array('statuses/user_timeline', -- 'statuses/friends', -- 'statuses/followers', -- 'favorites/favorites'); -+ static $bareauth = array('statuses/user_timeline', -+ 'statuses/friends', -+ 'statuses/followers', -+ 'favorites/favorites'); -hunk ./actions/api.php 129 -- $fullname = "$this->api_action/$this->api_method"; -+ $fullname = "$this->api_action/$this->api_method"; -hunk ./actions/api.php 131 -- if (in_array($fullname, $bareauth)) { -- # bareauth: only needs auth if without an argument -- if ($this->api_arg) { -- return false; -- } else { -- return true; -- } -- } else if (in_array($fullname, $noauth)) { -- # noauth: never needs auth -- return false; -- } else { -- # everybody else needs auth -- return true; -- } -- } -+ if (in_array($fullname, $bareauth)) { -+ # bareauth: only needs auth if without an argument -+ if ($this->api_arg) { -+ return false; -+ } else { -+ return true; -+ } -+ } else if (in_array($fullname, $noauth)) { -+ # noauth: never needs auth -+ return false; -+ } else { -+ # everybody else needs auth -+ return true; -+ } -+ } -hunk ./actions/api.php 147 -- function show_basic_auth_error() { -- header('HTTP/1.1 401 Unauthorized'); -- $msg = 'Could not authenticate you.'; -+ function show_basic_auth_error() { -+ header('HTTP/1.1 401 Unauthorized'); -+ $msg = 'Could not authenticate you.'; -hunk ./actions/api.php 151 -- if ($this->content_type == 'xml') { -- header('Content-Type: application/xml; charset=utf-8'); -- common_start_xml(); -- common_element_start('hash'); -- common_element('error', NULL, $msg); -- common_element('request', NULL, $_SERVER['REQUEST_URI']); -- common_element_end('hash'); -- common_end_xml(); -- } else if ($this->content_type == 'json') { -- header('Content-Type: application/json; charset=utf-8'); -- $error_array = array('error' => $msg, 'request' => $_SERVER['REQUEST_URI']); -- print(json_encode($error_array)); -- } else { -- header('Content-type: text/plain'); -- print "$msg\n"; -- } -- } -+ if ($this->content_type == 'xml') { -+ header('Content-Type: application/xml; charset=utf-8'); -+ common_start_xml(); -+ common_element_start('hash'); -+ common_element('error', NULL, $msg); -+ common_element('request', NULL, $_SERVER['REQUEST_URI']); -+ common_element_end('hash'); -+ common_end_xml(); -+ } else if ($this->content_type == 'json') { -+ header('Content-Type: application/json; charset=utf-8'); -+ $error_array = array('error' => $msg, 'request' => $_SERVER['REQUEST_URI']); -+ print(json_encode($error_array)); -+ } else { -+ header('Content-type: text/plain'); -+ print "$msg\n"; -+ } -+ } -hunk ./actions/api.php 169 -- function is_readonly() { -- # NOTE: before handle(), can't use $this->arg -- $apiaction = $_REQUEST['apiaction']; -- $method = $_REQUEST['method']; -- list($cmdtext, $fmt) = explode('.', $method); -+ function is_readonly() { -+ # NOTE: before handle(), can't use $this->arg -+ $apiaction = $_REQUEST['apiaction']; -+ $method = $_REQUEST['method']; -+ list($cmdtext, $fmt) = explode('.', $method); -hunk ./actions/api.php 175 -- static $write_methods = array( -- 'account' => array('update_location', 'update_delivery_device', 'end_session'), -- 'blocks' => array('create', 'destroy'), -- 'direct_messages' => array('create', 'destroy'), -- 'favorites' => array('create', 'destroy'), -- 'friendships' => array('create', 'destroy'), -- 'help' => array(), -- 'notifications' => array('follow', 'leave'), -- 'statuses' => array('update', 'destroy'), -- 'users' => array() -- ); -+ static $write_methods = array( -+ 'account' => array('update_location', 'update_delivery_device', 'end_session'), -+ 'blocks' => array('create', 'destroy'), -+ 'direct_messages' => array('create', 'destroy'), -+ 'favorites' => array('create', 'destroy'), -+ 'friendships' => array('create', 'destroy'), -+ 'help' => array(), -+ 'notifications' => array('follow', 'leave'), -+ 'statuses' => array('update', 'destroy'), -+ 'users' => array() -+ ); -hunk ./actions/api.php 187 -- if (array_key_exists($apiaction, $write_methods)) { -- if (!in_array($cmdtext, $write_methods[$apiaction])) { -- return true; -- } -- } -+ if (array_key_exists($apiaction, $write_methods)) { -+ if (!in_array($cmdtext, $write_methods[$apiaction])) { -+ return true; -+ } -+ } -hunk ./actions/api.php 193 -- return false; -- } -+ return false; -+ } -hunk ./actions/avatarbynickname.php 27 -- $this->client_error(_('No nickname.')); -- return; -- } -- $size = $this->trimmed('size'); -+ $this->client_error(_('No nickname.')); -+ return; -+ } -+ $size = $this->trimmed('size'); -hunk ./actions/avatarbynickname.php 32 -- $this->client_error(_('No size.')); -- return; -- } -- $size = strtolower($size); -- if (!in_array($size, array('original', '96', '48', '24'))) { -- $this->client_error(_('Invalid size.')); -- return; -- } -+ $this->client_error(_('No size.')); -+ return; -+ } -+ $size = strtolower($size); -+ if (!in_array($size, array('original', '96', '48', '24'))) { -+ $this->client_error(_('Invalid size.')); -+ return; -+ } -hunk ./actions/avatarbynickname.php 41 -- $user = User::staticGet('nickname', $nickname); -- if (!$user) { -- $this->client_error(_('No such user.')); -- return; -- } -- $profile = $user->getProfile(); -- if (!$profile) { -- $this->client_error(_('User has no profile.')); -- return; -- } -- if ($size == 'original') { -- $avatar = $profile->getOriginal(); -- } else { -- $avatar = $profile->getAvatar($size+0); -- } -+ $user = User::staticGet('nickname', $nickname); -+ if (!$user) { -+ $this->client_error(_('No such user.')); -+ return; -+ } -+ $profile = $user->getProfile(); -+ if (!$profile) { -+ $this->client_error(_('User has no profile.')); -+ return; -+ } -+ if ($size == 'original') { -+ $avatar = $profile->getOriginal(); -+ } else { -+ $avatar = $profile->getAvatar($size+0); -+ } -hunk ./actions/avatarbynickname.php 57 -- if ($avatar) { -- $url = $avatar->url; -- } else { -- if ($size == 'original') { -- $url = common_default_avatar(AVATAR_PROFILE_SIZE); -- } else { -- $url = common_default_avatar($size+0); -- } -- } -- common_redirect($url, 302); -- } -+ if ($avatar) { -+ $url = $avatar->url; -+ } else { -+ if ($size == 'original') { -+ $url = common_default_avatar(AVATAR_PROFILE_SIZE); -+ } else { -+ $url = common_default_avatar($size+0); -+ } -+ } -+ common_redirect($url, 302); -+ } -hunk ./actions/block.php 35 -- $token = $this->trimmed('token'); -+ $token = $this->trimmed('token'); -hunk ./actions/block.php 37 -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/block.php 78 -- common_show_header(_('Block user')); -+ common_show_header(_('Block user')); -hunk ./actions/confirmaddress.php 46 -- $type = $confirm->address_type; -- if (!in_array($type, array('email', 'jabber', 'sms'))) { -- $this->server_error(sprintf(_('Unrecognized address type %s'), $type)); -- return; -- } -+ $type = $confirm->address_type; -+ if (!in_array($type, array('email', 'jabber', 'sms'))) { -+ $this->server_error(sprintf(_('Unrecognized address type %s'), $type)); -+ return; -+ } -hunk ./actions/confirmaddress.php 53 -- return; -- } -+ return; -+ } -hunk ./actions/confirmaddress.php 60 -- $cur->$type = $confirm->address; -+ $cur->$type = $confirm->address; -hunk ./actions/confirmaddress.php 62 -- if ($type == 'sms') { -- $cur->carrier = ($confirm->address_extra)+0; -- $carrier = Sms_carrier::staticGet($cur->carrier); -- $cur->smsemail = $carrier->toEmailAddress($cur->sms); -- } -+ if ($type == 'sms') { -+ $cur->carrier = ($confirm->address_extra)+0; -+ $carrier = Sms_carrier::staticGet($cur->carrier); -+ $cur->smsemail = $carrier->toEmailAddress($cur->sms); -+ } -hunk ./actions/confirmaddress.php 68 -- $result = $cur->updateKeys($orig_user); -+ $result = $cur->updateKeys($orig_user); -hunk ./actions/confirmaddress.php 71 -- common_log_db_error($cur, 'UPDATE', __FILE__); -+ common_log_db_error($cur, 'UPDATE', __FILE__); -hunk ./actions/confirmaddress.php 76 -- if ($type == 'email') { -- $cur->emailChanged(); -- } -+ if ($type == 'email') { -+ $cur->emailChanged(); -+ } -hunk ./actions/confirmaddress.php 83 -- common_log_db_error($confirm, 'DELETE', __FILE__); -+ common_log_db_error($confirm, 'DELETE', __FILE__); -hunk ./actions/deletenotice.php 25 -- function handle($args) { -- parent::handle($args); -- # XXX: Ajax! -+ function handle($args) { -+ parent::handle($args); -+ # XXX: Ajax! -hunk ./actions/deletenotice.php 29 -- if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $this->delete_notice(); -- } else if ($_SERVER['REQUEST_METHOD'] == 'GET') { -- $this->show_form(); -- } -- } -+ if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $this->delete_notice(); -+ } else if ($_SERVER['REQUEST_METHOD'] == 'GET') { -+ $this->show_form(); -+ } -+ } -hunk ./actions/deletenotice.php 36 -- function get_instructions() { -- return _('You are about to permanently delete a notice. Once this is done, it cannot be undone.'); -- } -+ function get_instructions() { -+ return _('You are about to permanently delete a notice. Once this is done, it cannot be undone.'); -+ } -hunk ./actions/deletenotice.php 40 -- function get_title() { -- return _('Delete notice'); -- } -+ function get_title() { -+ return _('Delete notice'); -+ } +- var $user = NULL; ++ var $user = null; +hunk ./actions/allrss.php 72 +- return NULL; ++ return null; +hunk ./actions/allrss.php 75 +- return ($avatar) ? $avatar->url : NULL; ++ return ($avatar) ? $avatar->url : null; +hunk ./actions/api.php 155 +- common_element('error', NULL, $msg); +- common_element('request', NULL, $_SERVER['REQUEST_URI']); ++ common_element('error', null, $msg); ++ common_element('request', null, $_SERVER['REQUEST_URI']); +hunk ./actions/block.php 24 +- var $profile = NULL; ++ var $profile = null; +hunk ./actions/block.php 80 +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/confirmaddress.php 91 +- common_element('p', NULL, ++ common_element('p', null, hunk ./actions/deletenotice.php 44 -- function show_form($error=NULL) { -- $user = common_current_user(); -+ function show_form($error=NULL) { -+ $user = common_current_user(); -hunk ./actions/deletenotice.php 47 -- common_show_header($this->get_title(), array($this, 'show_header'), $error, -- array($this, 'show_top')); -- common_element_start('form', array('id' => 'notice_delete_form', -- 'method' => 'post', -- 'action' => common_local_url('deletenotice'))); -- common_hidden('token', common_session_token()); -- common_hidden('notice', $this->trimmed('notice')); -- common_element_start('p'); -- common_element('span', array('id' => 'confirmation_text'), _('Are you sure you want to delete this notice?')); -+ common_show_header($this->get_title(), array($this, 'show_header'), $error, -+ array($this, 'show_top')); -+ common_element_start('form', array('id' => 'notice_delete_form', -+ 'method' => 'post', -+ 'action' => common_local_url('deletenotice'))); -+ common_hidden('token', common_session_token()); -+ common_hidden('notice', $this->trimmed('notice')); -+ common_element_start('p'); -+ common_element('span', array('id' => 'confirmation_text'), _('Are you sure you want to delete this notice?')); -hunk ./actions/deletenotice.php 57 -- common_element('input', array('id' => 'submit_no', -- 'name' => 'submit', -- 'type' => 'submit', -- 'value' => _('No'))); -- common_element('input', array('id' => 'submit_yes', -- 'name' => 'submit', -- 'type' => 'submit', -- 'value' => _('Yes'))); -- common_element_end('p'); -- common_element_end('form'); -- common_show_footer(); -- } -+ common_element('input', array('id' => 'submit_no', -+ 'name' => 'submit', -+ 'type' => 'submit', -+ 'value' => _('No'))); -+ common_element('input', array('id' => 'submit_yes', -+ 'name' => 'submit', -+ 'type' => 'submit', -+ 'value' => _('Yes'))); -+ common_element_end('p'); -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/deletenotice.php 70 -- function delete_notice() { -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -- $url = common_get_returnto(); -- $confirmed = $this->trimmed('submit'); -- if ($confirmed == _('Yes')) { -- $user = common_current_user(); -- $notice_id = $this->trimmed('notice'); -- $notice = Notice::staticGet($notice_id); -- $replies = new Reply; -- $replies->get('notice_id', $notice_id); -+ function delete_notice() { -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -+ $url = common_get_returnto(); -+ $confirmed = $this->trimmed('submit'); -+ if ($confirmed == _('Yes')) { -+ $user = common_current_user(); -+ $notice_id = $this->trimmed('notice'); -+ $notice = Notice::staticGet($notice_id); -+ $replies = new Reply; -+ $replies->get('notice_id', $notice_id); -hunk ./actions/deletenotice.php 86 -- common_dequeue_notice($notice); -- if (common_config('memcached', 'enabled')) { -- $notice->blowSubsCache(); -- } -- $replies->delete(); -- $notice->delete(); -- } else { -- if ($url) { -- common_set_returnto(NULL); -- } else { -- $url = common_local_url('public'); -- } -- } -- common_redirect($url); -- } -+ common_dequeue_notice($notice); -+ if (common_config('memcached', 'enabled')) { -+ $notice->blowSubsCache(); -+ } -+ $replies->delete(); -+ $notice->delete(); -+ } else { -+ if ($url) { -+ common_set_returnto(NULL); -+ } else { -+ $url = common_local_url('public'); -+ } -+ } -+ common_redirect($url); -+ } -hunk ./actions/deleteprofile.php 35 -- function get_instructions() { -- return _('Export and delete your user information.'); -- } -+ function get_instructions() { -+ return _('Export and delete your user information.'); -+ } +- function show_form($error=NULL) { ++ function show_form($error=null) { +hunk ./actions/deletenotice.php 94 +- common_set_returnto(NULL); ++ common_set_returnto(null); hunk ./actions/deleteprofile.php 39 -- function form_header($title, $msg=NULL, $success=false) { -- common_show_header($title, -- NULL, -- array($msg, $success), -- array($this, 'show_top')); -- } -+ function form_header($title, $msg=NULL, $success=false) { -+ common_show_header($title, -+ NULL, -+ array($msg, $success), -+ array($this, 'show_top')); -+ } -hunk ./actions/deleteprofile.php 46 -- function show_feeds_list($feeds) { -- common_element_start('div', array('class' => 'feedsdel')); -- common_element('p', null, 'Feeds:'); -- common_element_start('ul', array('class' => 'xoxo')); -+ function show_feeds_list($feeds) { -+ common_element_start('div', array('class' => 'feedsdel')); -+ common_element('p', null, 'Feeds:'); -+ common_element_start('ul', array('class' => 'xoxo')); -hunk ./actions/deleteprofile.php 51 -- foreach ($feeds as $key => $value) { -- $this->common_feed_item($feeds[$key]); -- } -- common_element_end('ul'); -- common_element_end('div'); -- } -+ foreach ($feeds as $key => $value) { -+ $this->common_feed_item($feeds[$key]); -+ } -+ common_element_end('ul'); -+ common_element_end('div'); -+ } -hunk ./actions/deleteprofile.php 59 -- function common_feed_item($feed) { -+ function common_feed_item($feed) { -hunk ./actions/deleteprofile.php 61 -- $nickname = $user->nickname; -+ $nickname = $user->nickname; -hunk ./actions/deleteprofile.php 63 -- switch($feed['item']) { -- case 'notices': default: -- $feed_classname = $feed['type']; -- $feed_mimetype = "application/".$feed['type']."+xml"; -- $feed_title = "$nickname's ".$feed['version']." notice feed"; -- $feed['textContent'] = "RSS"; -- break; -+ switch($feed['item']) { -+ case 'notices': default: -+ $feed_classname = $feed['type']; -+ $feed_mimetype = "application/".$feed['type']."+xml"; -+ $feed_title = "$nickname's ".$feed['version']." notice feed"; -+ $feed['textContent'] = "RSS"; -+ break; -hunk ./actions/deleteprofile.php 71 -- case 'foaf': -- $feed_classname = "foaf"; -- $feed_mimetype = "application/".$feed['type']."+xml"; -- $feed_title = "$nickname's FOAF file"; -- $feed['textContent'] = "FOAF"; -- break; -- } -- common_element_start('li'); -- common_element('a', array('href' => $feed['href'], -- 'class' => $feed_classname, -- 'type' => $feed_mimetype, -- 'title' => $feed_title), -- $feed['textContent']); -- common_element_end('li'); -- } -+ case 'foaf': -+ $feed_classname = "foaf"; -+ $feed_mimetype = "application/".$feed['type']."+xml"; -+ $feed_title = "$nickname's FOAF file"; -+ $feed['textContent'] = "FOAF"; -+ break; -+ } -+ common_element_start('li'); -+ common_element('a', array('href' => $feed['href'], -+ 'class' => $feed_classname, -+ 'type' => $feed_mimetype, -+ 'title' => $feed_title), -+ $feed['textContent']); -+ common_element_end('li'); -+ } +- function form_header($title, $msg=NULL, $success=false) { ++ function form_header($title, $msg=null, $success=false) { +hunk ./actions/deleteprofile.php 41 +- NULL, ++ null, hunk ./actions/deleteprofile.php 87 -- function show_form($msg=NULL, $success=false) { -- $this->form_header(_('Delete my account'), $msg, $success); -- common_element('h2', NULL, _('Delete my account confirmation')); -- $this->show_confirm_delete_form(); -- common_show_footer(); -- } -+ function show_form($msg=NULL, $success=false) { -+ $this->form_header(_('Delete my account'), $msg, $success); -+ common_element('h2', NULL, _('Delete my account confirmation')); -+ $this->show_confirm_delete_form(); -+ common_show_footer(); -+ } -hunk ./actions/deleteprofile.php 94 -- function show_confirm_delete_form() { -- $user = common_current_user(); -+ function show_confirm_delete_form() { -+ $user = common_current_user(); -hunk ./actions/deleteprofile.php 100 -- common_element_start('form', array('method' => 'POST', -- 'id' => 'delete', -- 'action' => -- common_local_url('deleteprofile'))); -+ common_element_start('form', array('method' => 'POST', -+ 'id' => 'delete', -+ 'action' => -+ common_local_url('deleteprofile'))); -hunk ./actions/deleteprofile.php 105 -- common_hidden('token', common_session_token()); -+ common_hidden('token', common_session_token()); -hunk ./actions/deleteprofile.php 108 -- $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)), -- 'type' => 'rss', -- 'version' => 'RSS 1.0', -- 'item' => 'notices'), -- 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)), -- 'type' => 'rdf', -- 'version' => 'FOAF', -- 'item' => 'foaf'))); -+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)), -+ 'type' => 'rss', -+ 'version' => 'RSS 1.0', -+ 'item' => 'notices'), -+ 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)), -+ 'type' => 'rdf', -+ 'version' => 'FOAF', -+ 'item' => 'foaf'))); -hunk ./actions/deleteprofile.php 119 -- common_submit('deleteaccount', _('Delete my account')); -- common_element_end('form'); -+ common_submit('deleteaccount', _('Delete my account')); -+ common_element_end('form'); -hunk ./actions/deleteprofile.php 123 -- function handle_post() { -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ function handle_post() { -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/deleteprofile.php 137 -- function delete_account() { -- $user = common_current_user(); -- assert(!is_null($user)); # should already be checked -+ function delete_account() { -+ $user = common_current_user(); -+ assert(!is_null($user)); # should already be checked -hunk ./actions/deleteprofile.php 222 -- function show_top($arr) { -- $msg = $arr[0]; -- $success = $arr[1]; -- if ($msg) { -- $this->message($msg, $success); -- } else { -- $inst = $this->get_instructions(); -- $output = common_markup_to_html($inst); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- } -- $this->settings_menu(); -- } -+ function show_top($arr) { -+ $msg = $arr[0]; -+ $success = $arr[1]; -+ if ($msg) { -+ $this->message($msg, $success); -+ } else { -+ $inst = $this->get_instructions(); -+ $output = common_markup_to_html($inst); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ } -+ $this->settings_menu(); -+ } -hunk ./actions/deleteprofile.php 239 -- $menu = -- array('profilesettings' => -- array(_('Profile'), -- _('Change your profile settings')), -- 'emailsettings' => -- array(_('Email'), -- _('Change email handling')), -- 'openidsettings' => -- array(_('OpenID'), -- _('Add or remove OpenIDs')), -- 'smssettings' => -- array(_('SMS'), -- _('Updates by SMS')), -- 'imsettings' => -- array(_('IM'), -- _('Updates by instant messenger (IM)')), -- 'twittersettings' => -- array(_('Twitter'), -- _('Twitter integration options')), -- 'othersettings' => -- array(_('Other'), -- _('Other options'))); -+ $menu = -+ array('profilesettings' => -+ array(_('Profile'), -+ _('Change your profile settings')), -+ 'emailsettings' => -+ array(_('Email'), -+ _('Change email handling')), -+ 'openidsettings' => -+ array(_('OpenID'), -+ _('Add or remove OpenIDs')), -+ 'smssettings' => -+ array(_('SMS'), -+ _('Updates by SMS')), -+ 'imsettings' => -+ array(_('IM'), -+ _('Updates by instant messenger (IM)')), -+ 'twittersettings' => -+ array(_('Twitter'), -+ _('Twitter integration options')), -+ 'othersettings' => -+ array(_('Other'), -+ _('Other options'))); -hunk ./actions/deleteprofile.php 265 -- if ($menuaction == 'imsettings' && -- !common_config('xmpp', 'enabled')) { -- continue; -- } -+ if ($menuaction == 'imsettings' && -+ !common_config('xmpp', 'enabled')) { -+ continue; -+ } -hunk ./actions/disfavor.php 24 -- function handle($args) { -+ function handle($args) { -hunk ./actions/disfavor.php 26 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/disfavor.php 28 -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- return; -- } -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ return; -+ } -hunk ./actions/disfavor.php 33 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/disfavor.php 35 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname))); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname))); -+ return; -+ } -hunk ./actions/disfavor.php 40 -- $id = $this->trimmed('notice'); -+ $id = $this->trimmed('notice'); -hunk ./actions/disfavor.php 42 -- $notice = Notice::staticGet($id); -+ $notice = Notice::staticGet($id); -hunk ./actions/disfavor.php 44 -- $token = $this->trimmed('token-'.$notice->id); -+ $token = $this->trimmed('token-'.$notice->id); -hunk ./actions/disfavor.php 46 -- if (!$token || $token != common_session_token()) { -- $this->client_error(_("There was a problem with your session token. Try again, please.")); -- return; -- } -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_("There was a problem with your session token. Try again, please.")); -+ return; -+ } -hunk ./actions/disfavor.php 51 -- $fave = new Fave(); -- $fave->user_id = $this->id; -- $fave->notice_id = $notice->id; -- if (!$fave->find(true)) { -- $this->client_error(_('This notice is not a favorite!')); -- return; -- } -+ $fave = new Fave(); -+ $fave->user_id = $this->id; -+ $fave->notice_id = $notice->id; -+ if (!$fave->find(true)) { -+ $this->client_error(_('This notice is not a favorite!')); -+ return; -+ } -hunk ./actions/disfavor.php 59 -- $result = $fave->delete(); -+ $result = $fave->delete(); -hunk ./actions/disfavor.php 61 -- if (!$result) { -- common_log_db_error($fave, 'DELETE', __FILE__); -- $this->server_error(_('Could not delete favorite.')); -- return; -- } -- -- $user->blowFavesCache(); -+ if (!$result) { -+ common_log_db_error($fave, 'DELETE', __FILE__); -+ $this->server_error(_('Could not delete favorite.')); -+ return; -+ } -+ -+ $user->blowFavesCache(); -hunk ./actions/disfavor.php 69 -- if ($this->boolean('ajax')) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Add to favorites')); -- common_element_end('head'); -- common_element_start('body'); -- common_favor_form($notice); -- common_element_end('body'); -- common_element_end('html'); -- } else { -- common_redirect(common_local_url('showfavorites', -- array('nickname' => $user->nickname))); -- } -- } -+ if ($this->boolean('ajax')) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Add to favorites')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_favor_form($notice); -+ common_element_end('body'); -+ common_element_end('html'); -+ } else { -+ common_redirect(common_local_url('showfavorites', -+ array('nickname' => $user->nickname))); -+ } -+ } -hunk ./actions/doc.php 24 -- function handle($args) { -- parent::handle($args); -- $title = $this->trimmed('title'); -- $filename = INSTALLDIR.'/doc/'.$title; -- if (!file_exists($filename)) { -- common_user_error(_('No such document.')); -- return; -- } -- $c = file_get_contents($filename); -- $output = common_markup_to_html($c); -- common_show_header(_(ucfirst($title))); -- common_raw($output); -- common_show_footer(); -- } -+ function handle($args) { -+ parent::handle($args); -+ $title = $this->trimmed('title'); -+ $filename = INSTALLDIR.'/doc/'.$title; -+ if (!file_exists($filename)) { -+ common_user_error(_('No such document.')); -+ return; -+ } -+ $c = file_get_contents($filename); -+ $output = common_markup_to_html($c); -+ common_show_header(_(ucfirst($title))); -+ common_raw($output); -+ common_show_footer(); -+ } -hunk ./actions/emailsettings.php 26 -- function get_instructions() { -- return _('Manage how you get email from %%site.name%%.'); -- } -+ function get_instructions() { -+ return _('Manage how you get email from %%site.name%%.'); -+ } +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { +hunk ./actions/deleteprofile.php 89 +- common_element('h2', NULL, _('Delete my account confirmation')); ++ common_element('h2', null, _('Delete my account confirmation')); +hunk ./actions/deleteprofile.php 216 +- common_set_user(NULL); ++ common_set_user(null); hunk ./actions/emailsettings.php 30 -- function show_form($msg=NULL, $success=false) { -- $user = common_current_user(); -- $this->form_header(_('Email Settings'), $msg, $success); -- common_element_start('form', array('method' => 'post', -- 'id' => 'emailsettings', -- 'action' => -- common_local_url('emailsettings'))); -- common_hidden('token', common_session_token()); -+ function show_form($msg=NULL, $success=false) { -+ $user = common_current_user(); -+ $this->form_header(_('Email Settings'), $msg, $success); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'emailsettings', -+ 'action' => -+ common_local_url('emailsettings'))); -+ common_hidden('token', common_session_token()); +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { hunk ./actions/emailsettings.php 39 -- common_element('h2', NULL, _('Address')); -+ common_element('h2', NULL, _('Address')); -hunk ./actions/emailsettings.php 41 -- if ($user->email) { -- common_element_start('p'); -- common_element('span', 'address confirmed', $user->email); -- common_element('span', 'input_instructions', -- _('Current confirmed email address.')); -- common_hidden('email', $user->email); -- common_element_end('p'); -- common_submit('remove', _('Remove')); -- } else { -- $confirm = $this->get_confirmation(); -- if ($confirm) { -- common_element_start('p'); -- common_element('span', 'address unconfirmed', $confirm->address); -- common_element('span', 'input_instructions', -- _('Awaiting confirmation on this address. Check your inbox (and spam box!) for a message with further instructions.')); -- common_hidden('email', $confirm->address); -- common_element_end('p'); -- common_submit('cancel', _('Cancel')); -- } else { -- common_input('email', _('Email Address'), -- ($this->arg('email')) ? $this->arg('email') : NULL, -- _('Email address, like "UserName@example.org"')); -- common_submit('add', _('Add')); -- } -- } -+ if ($user->email) { -+ common_element_start('p'); -+ common_element('span', 'address confirmed', $user->email); -+ common_element('span', 'input_instructions', -+ _('Current confirmed email address.')); -+ common_hidden('email', $user->email); -+ common_element_end('p'); -+ common_submit('remove', _('Remove')); -+ } else { -+ $confirm = $this->get_confirmation(); -+ if ($confirm) { -+ common_element_start('p'); -+ common_element('span', 'address unconfirmed', $confirm->address); -+ common_element('span', 'input_instructions', -+ _('Awaiting confirmation on this address. Check your inbox (and spam box!) for a message with further instructions.')); -+ common_hidden('email', $confirm->address); -+ common_element_end('p'); -+ common_submit('cancel', _('Cancel')); -+ } else { -+ common_input('email', _('Email Address'), -+ ($this->arg('email')) ? $this->arg('email') : NULL, -+ _('Email address, like "UserName@example.org"')); -+ common_submit('add', _('Add')); -+ } -+ } -hunk ./actions/emailsettings.php 67 -- if ($user->email) { -- common_element('h2', NULL, _('Incoming email')); -- -- if ($user->incomingemail) { -- common_element_start('p'); -- common_element('span', 'address', $user->incomingemail); -- common_element('span', 'input_instructions', -- _('Send email to this address to post new notices.')); -- common_element_end('p'); -- common_submit('removeincoming', _('Remove')); -- } -- -- common_element_start('p'); -- common_element('span', 'input_instructions', -- _('Make a new email address for posting to; cancels the old one.')); -- common_element_end('p'); -- common_submit('newincoming', _('New')); -- } -- -- common_element('h2', NULL, _('Preferences')); -+ if ($user->email) { -+ common_element('h2', NULL, _('Incoming email')); -+ -+ if ($user->incomingemail) { -+ common_element_start('p'); -+ common_element('span', 'address', $user->incomingemail); -+ common_element('span', 'input_instructions', -+ _('Send email to this address to post new notices.')); -+ common_element_end('p'); -+ common_submit('removeincoming', _('Remove')); -+ } -+ -+ common_element_start('p'); -+ common_element('span', 'input_instructions', -+ _('Make a new email address for posting to; cancels the old one.')); -+ common_element_end('p'); -+ common_submit('newincoming', _('New')); -+ } -+ -+ common_element('h2', NULL, _('Preferences')); -hunk ./actions/emailsettings.php 88 -- common_checkbox('emailnotifysub', -- _('Send me notices of new subscriptions through email.'), -- $user->emailnotifysub); -- common_checkbox('emailnotifyfav', -- _('Send me email when someone adds my notice as a favorite.'), -- $user->emailnotifyfav); -- common_checkbox('emailnotifymsg', -- _('Send me email when someone sends me a private message.'), -- $user->emailnotifymsg); -- common_checkbox('emailnotifynudge', -- _('Allow friends to nudge me and send me an email.'), -- $user->emailnotifynudge); -- common_checkbox('emailpost', -- _('I want to post notices by email.'), -- $user->emailpost); -- common_checkbox('emailmicroid', -- _('Publish a MicroID for my email address.'), -- $user->emailmicroid); -+ common_checkbox('emailnotifysub', -+ _('Send me notices of new subscriptions through email.'), -+ $user->emailnotifysub); -+ common_checkbox('emailnotifyfav', -+ _('Send me email when someone adds my notice as a favorite.'), -+ $user->emailnotifyfav); -+ common_checkbox('emailnotifymsg', -+ _('Send me email when someone sends me a private message.'), -+ $user->emailnotifymsg); -+ common_checkbox('emailnotifynudge', -+ _('Allow friends to nudge me and send me an email.'), -+ $user->emailnotifynudge); -+ common_checkbox('emailpost', -+ _('I want to post notices by email.'), -+ $user->emailpost); -+ common_checkbox('emailmicroid', -+ _('Publish a MicroID for my email address.'), -+ $user->emailmicroid); -hunk ./actions/emailsettings.php 107 -- common_submit('save', _('Save')); -- -- common_element_end('form'); -- common_show_footer(); -- } -+ common_submit('save', _('Save')); -+ -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/emailsettings.php 113 -- function get_confirmation() { -- $user = common_current_user(); -- $confirm = new Confirm_address(); -- $confirm->user_id = $user->id; -- $confirm->address_type = 'email'; -- if ($confirm->find(TRUE)) { -- return $confirm; -- } else { -- return NULL; -- } -- } -+ function get_confirmation() { -+ $user = common_current_user(); -+ $confirm = new Confirm_address(); -+ $confirm->user_id = $user->id; -+ $confirm->address_type = 'email'; -+ if ($confirm->find(TRUE)) { -+ return $confirm; -+ } else { -+ return NULL; -+ } -+ } -hunk ./actions/emailsettings.php 125 -- function handle_post() { -+ function handle_post() { -hunk ./actions/emailsettings.php 127 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/emailsettings.php 134 -- if ($this->arg('save')) { -- $this->save_preferences(); -- } else if ($this->arg('add')) { -- $this->add_address(); -- } else if ($this->arg('cancel')) { -- $this->cancel_confirmation(); -- } else if ($this->arg('remove')) { -- $this->remove_address(); -- } else if ($this->arg('removeincoming')) { -- $this->remove_incoming(); -- } else if ($this->arg('newincoming')) { -- $this->new_incoming(); -- } else { -- $this->show_form(_('Unexpected form submission.')); -- } -- } -+ if ($this->arg('save')) { -+ $this->save_preferences(); -+ } else if ($this->arg('add')) { -+ $this->add_address(); -+ } else if ($this->arg('cancel')) { -+ $this->cancel_confirmation(); -+ } else if ($this->arg('remove')) { -+ $this->remove_address(); -+ } else if ($this->arg('removeincoming')) { -+ $this->remove_incoming(); -+ } else if ($this->arg('newincoming')) { -+ $this->new_incoming(); -+ } else { -+ $this->show_form(_('Unexpected form submission.')); -+ } -+ } -hunk ./actions/emailsettings.php 151 -- function save_preferences() { -+ function save_preferences() { -hunk ./actions/emailsettings.php 153 -- $emailnotifysub = $this->boolean('emailnotifysub'); -- $emailnotifyfav = $this->boolean('emailnotifyfav'); -- $emailnotifymsg = $this->boolean('emailnotifymsg'); -- $emailnotifynudge = $this->boolean('emailnotifynudge'); -- $emailmicroid = $this->boolean('emailmicroid'); -- $emailpost = $this->boolean('emailpost'); -+ $emailnotifysub = $this->boolean('emailnotifysub'); -+ $emailnotifyfav = $this->boolean('emailnotifyfav'); -+ $emailnotifymsg = $this->boolean('emailnotifymsg'); -+ $emailnotifynudge = $this->boolean('emailnotifynudge'); -+ $emailmicroid = $this->boolean('emailmicroid'); -+ $emailpost = $this->boolean('emailpost'); -hunk ./actions/emailsettings.php 160 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/emailsettings.php 162 -- assert(!is_null($user)); # should already be checked -+ assert(!is_null($user)); # should already be checked -hunk ./actions/emailsettings.php 164 -- $user->query('BEGIN'); -+ $user->query('BEGIN'); -hunk ./actions/emailsettings.php 166 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/emailsettings.php 168 -- $user->emailnotifysub = $emailnotifysub; -- $user->emailnotifyfav = $emailnotifyfav; -- $user->emailnotifymsg = $emailnotifymsg; -- $user->emailnotifynudge = $emailnotifynudge; -- $user->emailmicroid = $emailmicroid; -- $user->emailpost = $emailpost; -+ $user->emailnotifysub = $emailnotifysub; -+ $user->emailnotifyfav = $emailnotifyfav; -+ $user->emailnotifymsg = $emailnotifymsg; -+ $user->emailnotifynudge = $emailnotifynudge; -+ $user->emailmicroid = $emailmicroid; -+ $user->emailpost = $emailpost; -hunk ./actions/emailsettings.php 175 -- $result = $user->update($original); -+ $result = $user->update($original); -hunk ./actions/emailsettings.php 177 -- if ($result === FALSE) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } -hunk ./actions/emailsettings.php 183 -- $user->query('COMMIT'); -+ $user->query('COMMIT'); -hunk ./actions/emailsettings.php 185 -- $this->show_form(_('Preferences saved.'), true); -- } -+ $this->show_form(_('Preferences saved.'), true); -+ } -hunk ./actions/emailsettings.php 188 -- function add_address() { -+ function add_address() { -hunk ./actions/emailsettings.php 190 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/emailsettings.php 192 -- $email = $this->trimmed('email'); -+ $email = $this->trimmed('email'); -hunk ./actions/emailsettings.php 194 -- # Some validation -+ # Some validation -hunk ./actions/emailsettings.php 196 -- if (!$email) { -- $this->show_form(_('No email address.')); -- return; -- } -+ if (!$email) { -+ $this->show_form(_('No email address.')); -+ return; -+ } -hunk ./actions/emailsettings.php 201 -- $email = common_canonical_email($email); -+ $email = common_canonical_email($email); -hunk ./actions/emailsettings.php 203 -- if (!$email) { -- $this->show_form(_('Cannot normalize that email address')); -- return; -- } -- if (!Validate::email($email, true)) { -- $this->show_form(_('Not a valid email address')); -- return; -- } else if ($user->email == $email) { -- $this->show_form(_('That is already your email address.')); -- return; -- } else if ($this->email_exists($email)) { -- $this->show_form(_('That email address already belongs to another user.')); -- return; -- } -+ if (!$email) { -+ $this->show_form(_('Cannot normalize that email address')); -+ return; -+ } -+ if (!Validate::email($email, true)) { -+ $this->show_form(_('Not a valid email address')); -+ return; -+ } else if ($user->email == $email) { -+ $this->show_form(_('That is already your email address.')); -+ return; -+ } else if ($this->email_exists($email)) { -+ $this->show_form(_('That email address already belongs to another user.')); -+ return; -+ } -hunk ./actions/emailsettings.php 218 -- $confirm = new Confirm_address(); -- $confirm->address = $email; -- $confirm->address_type = 'email'; -- $confirm->user_id = $user->id; -- $confirm->code = common_confirmation_code(64); -+ $confirm = new Confirm_address(); -+ $confirm->address = $email; -+ $confirm->address_type = 'email'; -+ $confirm->user_id = $user->id; -+ $confirm->code = common_confirmation_code(64); -hunk ./actions/emailsettings.php 224 -- $result = $confirm->insert(); -+ $result = $confirm->insert(); -hunk ./actions/emailsettings.php 226 -- if ($result === FALSE) { -- common_log_db_error($confirm, 'INSERT', __FILE__); -- common_server_error(_('Couldn\'t insert confirmation code.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($confirm, 'INSERT', __FILE__); -+ common_server_error(_('Couldn\'t insert confirmation code.')); -+ return; -+ } -hunk ./actions/emailsettings.php 232 -- mail_confirm_address($user, $confirm->code, $user->nickname, $email); -+ mail_confirm_address($user, $confirm->code, $user->nickname, $email); -hunk ./actions/emailsettings.php 234 -- $msg = _('A confirmation code was sent to the email address you added. Check your inbox (and spam box!) for the code and instructions on how to use it.'); -+ $msg = _('A confirmation code was sent to the email address you added. Check your inbox (and spam box!) for the code and instructions on how to use it.'); -hunk ./actions/emailsettings.php 236 -- $this->show_form($msg, TRUE); -- } -+ $this->show_form($msg, TRUE); -+ } -hunk ./actions/emailsettings.php 239 -- function cancel_confirmation() { -- $email = $this->arg('email'); -- $confirm = $this->get_confirmation(); -- if (!$confirm) { -- $this->show_form(_('No pending confirmation to cancel.')); -- return; -- } -- if ($confirm->address != $email) { -- $this->show_form(_('That is the wrong IM address.')); -- return; -- } -+ function cancel_confirmation() { -+ $email = $this->arg('email'); -+ $confirm = $this->get_confirmation(); -+ if (!$confirm) { -+ $this->show_form(_('No pending confirmation to cancel.')); -+ return; -+ } -+ if ($confirm->address != $email) { -+ $this->show_form(_('That is the wrong IM address.')); -+ return; -+ } -hunk ./actions/emailsettings.php 254 -- common_log_db_error($confirm, 'DELETE', __FILE__); -+ common_log_db_error($confirm, 'DELETE', __FILE__); -hunk ./actions/emailsettings.php 260 -- } -+ } -hunk ./actions/emailsettings.php 262 -- function remove_address() { -+ function remove_address() { -hunk ./actions/emailsettings.php 264 -- $user = common_current_user(); -- $email = $this->arg('email'); -+ $user = common_current_user(); -+ $email = $this->arg('email'); -hunk ./actions/emailsettings.php 267 -- # Maybe an old tab open...? -+ # Maybe an old tab open...? -hunk ./actions/emailsettings.php 269 -- if ($user->email != $email) { -- $this->show_form(_('That is not your email address.')); -- return; -- } -+ if ($user->email != $email) { -+ $this->show_form(_('That is not your email address.')); -+ return; -+ } -hunk ./actions/emailsettings.php 274 -- $user->query('BEGIN'); -- $original = clone($user); -- $user->email = NULL; -- $result = $user->updateKeys($original); -- if (!$result) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } -- $user->query('COMMIT'); -+ $user->query('BEGIN'); -+ $original = clone($user); -+ $user->email = NULL; -+ $result = $user->updateKeys($original); -+ if (!$result) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } -+ $user->query('COMMIT'); -hunk ./actions/emailsettings.php 285 -- $this->show_form(_('The address was removed.'), TRUE); -- } -+ $this->show_form(_('The address was removed.'), TRUE); -+ } -hunk ./actions/emailsettings.php 288 -- function remove_incoming() { -- $user = common_current_user(); -- -- if (!$user->incomingemail) { -- $this->show_form(_('No incoming email address.')); -- return; -- } -- -- $orig = clone($user); -- $user->incomingemail = NULL; -+ function remove_incoming() { -+ $user = common_current_user(); -+ -+ if (!$user->incomingemail) { -+ $this->show_form(_('No incoming email address.')); -+ return; -+ } -+ -+ $orig = clone($user); -+ $user->incomingemail = NULL; -hunk ./actions/emailsettings.php 299 -- if (!$user->updateKeys($orig)) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- $this->server_error(_("Couldn't update user record.")); -- } -- -- $this->show_form(_('Incoming email address removed.'), TRUE); -- } -+ if (!$user->updateKeys($orig)) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ $this->server_error(_("Couldn't update user record.")); -+ } -+ -+ $this->show_form(_('Incoming email address removed.'), TRUE); -+ } -hunk ./actions/emailsettings.php 307 -- function new_incoming() { -- $user = common_current_user(); -- -- $orig = clone($user); -- $user->incomingemail = mail_new_incoming_address(); -- -- if (!$user->updateKeys($orig)) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- $this->server_error(_("Couldn't update user record.")); -- } -+ function new_incoming() { -+ $user = common_current_user(); -+ -+ $orig = clone($user); -+ $user->incomingemail = mail_new_incoming_address(); -+ -+ if (!$user->updateKeys($orig)) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ $this->server_error(_("Couldn't update user record.")); -+ } -hunk ./actions/emailsettings.php 318 -- $this->show_form(_('New incoming email address added.'), TRUE); -- } -- -- function email_exists($email) { -- $user = common_current_user(); -- $other = User::staticGet('email', $email); -- if (!$other) { -- return false; -- } else { -- return $other->id != $user->id; -- } -- } -+ $this->show_form(_('New incoming email address added.'), TRUE); -+ } -+ -+ function email_exists($email) { -+ $user = common_current_user(); -+ $other = User::staticGet('email', $email); -+ if (!$other) { -+ return false; -+ } else { -+ return $other->id != $user->id; -+ } -+ } -hunk ./actions/facebookhome.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/facebookhome.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/facebookhome.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/facebookhome.php 29 -- $this->login(); -- } -+ $this->login(); -+ } -hunk ./actions/facebookhome.php 32 -- function login() { -+ function login() { -hunk ./actions/facebookhome.php 34 -- $user = null; -+ $user = null; -hunk ./actions/facebookhome.php 36 -- $facebook = $this->get_facebook(); -- $fbuid = $facebook->require_login(); -+ $facebook = $this->get_facebook(); -+ $fbuid = $facebook->require_login(); -hunk ./actions/facebookhome.php 39 -- # check to see whether there's already a Facebook link for this user -- $flink = Foreign_link::getByForeignID($fbuid, 2); // 2 == Facebook -+ # check to see whether there's already a Facebook link for this user -+ $flink = Foreign_link::getByForeignID($fbuid, 2); // 2 == Facebook -hunk ./actions/facebookhome.php 42 -- if ($flink) { -+ if ($flink) { -hunk ./actions/facebookhome.php 44 -- $user = $flink->getUser(); -- $this->show_home($facebook, $fbuid, $user); -+ $user = $flink->getUser(); -+ $this->show_home($facebook, $fbuid, $user); -hunk ./actions/facebookhome.php 47 -- } else { -+ } else { -hunk ./actions/facebookhome.php 49 -- # Make the user put in her Laconica creds -- $nickname = common_canonical_nickname($this->trimmed('nickname')); -- $password = $this->arg('password'); -+ # Make the user put in her Laconica creds -+ $nickname = common_canonical_nickname($this->trimmed('nickname')); -+ $password = $this->arg('password'); -hunk ./actions/facebookhome.php 53 -- if ($nickname) { -+ if ($nickname) { -hunk ./actions/facebookhome.php 55 -- if (common_check_user($nickname, $password)) { -+ if (common_check_user($nickname, $password)) { -hunk ./actions/facebookhome.php 58 -- $user = User::staticGet('nickname', $nickname); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/facebookhome.php 60 -- if (!$user) { -- echo ''; -- $this->show_login_form(); -- } -+ if (!$user) { -+ echo ''; -+ $this->show_login_form(); -+ } -hunk ./actions/facebookhome.php 65 -- $flink = DB_DataObject::factory('foreign_link'); -- $flink->user_id = $user->id; -- $flink->foreign_id = $fbuid; -- $flink->service = 2; # Facebook -- $flink->created = common_sql_now(); -+ $flink = DB_DataObject::factory('foreign_link'); -+ $flink->user_id = $user->id; -+ $flink->foreign_id = $fbuid; -+ $flink->service = 2; # Facebook -+ $flink->created = common_sql_now(); -hunk ./actions/facebookhome.php 71 -- # $this->set_flags($flink, $noticesync, $replysync, $friendsync); -+ # $this->set_flags($flink, $noticesync, $replysync, $friendsync); -hunk ./actions/facebookhome.php 73 -- $flink_id = $flink->insert(); -+ $flink_id = $flink->insert(); -hunk ./actions/facebookhome.php 75 -- if ($flink_id) { -- echo ''; -- } -+ if ($flink_id) { -+ echo ''; -+ } -hunk ./actions/facebookhome.php 79 -- $this->show_home($facebook, $fbuid, $user); -+ $this->show_home($facebook, $fbuid, $user); -hunk ./actions/facebookhome.php 81 -- return; -- } else { -- echo ''; -- } -- } -+ return; -+ } else { -+ echo ''; -+ } -+ } -hunk ./actions/facebookhome.php 87 -- $this->show_login_form(); -- } -+ $this->show_login_form(); -+ } -hunk ./actions/facebookhome.php 90 -- } -+ } -hunk ./actions/facebookhome.php 92 -- function show_home($facebook, $fbuid, $user) { -+ function show_home($facebook, $fbuid, $user) { -hunk ./actions/facebookhome.php 94 -- $this->show_header('Home'); -+ $this->show_header('Home'); -hunk ./actions/facebookhome.php 96 -- echo $this->show_notices($user); -- $this->update_profile_box($facebook, $fbuid, $user); -+ echo $this->show_notices($user); -+ $this->update_profile_box($facebook, $fbuid, $user); -hunk ./actions/facebookhome.php 99 -- $this->show_footer(); -- } -+ $this->show_footer(); -+ } -hunk ./actions/facebookhome.php 102 -- function show_notices($user) { -+ function show_notices($user) { -hunk ./actions/facebookhome.php 104 -- $page = $this->trimmed('page'); -- if (!$page) { -- $page = 1; -- } -+ $page = $this->trimmed('page'); -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/facebookhome.php 109 -- $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -+ $notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -hunk ./actions/facebookhome.php 111 -- echo '
    '; -+ echo '
      '; -hunk ./actions/facebookhome.php 113 -- $cnt = 0; -+ $cnt = 0; -hunk ./actions/facebookhome.php 115 -- while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) { -- $cnt++; -+ while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) { -+ $cnt++; -hunk ./actions/facebookhome.php 118 -- if ($cnt > NOTICES_PER_PAGE) { -- break; -- } -+ if ($cnt > NOTICES_PER_PAGE) { -+ break; -+ } -hunk ./actions/facebookhome.php 122 -- echo $this->render_notice($notice); -- } -+ echo $this->render_notice($notice); -+ } -hunk ./actions/facebookhome.php 125 -- echo '
        '; -+ echo '
          '; -hunk ./actions/facebookhome.php 127 -- $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'index.php', array('nickname' => $user->nickname)); -+ $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'index.php', array('nickname' => $user->nickname)); -hunk ./actions/facebookhome.php 130 -- } -+ } -hunk ./actions/facebookinvite.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/facebookinvite.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/facebookinvite.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/facebookinvite.php 29 -- $this->display(); -- } -+ $this->display(); -+ } -hunk ./actions/facebookinvite.php 32 -- function display() { -+ function display() { -hunk ./actions/facebookinvite.php 34 -- $facebook = $this->get_facebook(); -+ $facebook = $this->get_facebook(); -hunk ./actions/facebookinvite.php 36 -- $fbuid = $facebook->require_login(); -+ $fbuid = $facebook->require_login(); -hunk ./actions/facebookinvite.php 38 -- $this->show_header('Invite'); -+ $this->show_header('Invite'); -hunk ./actions/facebookinvite.php 40 -- echo '

          Coming soon...

          '; -+ echo '

          Coming soon...

          '; -hunk ./actions/facebookinvite.php 42 -- $this->show_footer(); -+ $this->show_footer(); -hunk ./actions/facebookinvite.php 44 -- } -+ } -hunk ./actions/facebookremove.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/facebookremove.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/facebookremove.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/facebookremove.php 29 -- $secret = common_config('facebook', 'secret'); -+ $secret = common_config('facebook', 'secret'); -hunk ./actions/facebookremove.php 31 -- $sig = ''; -+ $sig = ''; -hunk ./actions/facebookremove.php 33 -- ksort($_POST); -+ ksort($_POST); -hunk ./actions/facebookremove.php 35 -- foreach ($_POST as $key => $val) { -- if (substr($key, 0, 7) == 'fb_sig_') { -- $sig .= substr($key, 7) . '=' . $val; -- } -- } -+ foreach ($_POST as $key => $val) { -+ if (substr($key, 0, 7) == 'fb_sig_') { -+ $sig .= substr($key, 7) . '=' . $val; -+ } -+ } -hunk ./actions/facebookremove.php 41 -- $sig .= $secret; -- $verify = md5($sig); -+ $sig .= $secret; -+ $verify = md5($sig); -hunk ./actions/facebookremove.php 44 -- if ($verify == $this->arg('fb_sig')) { -+ if ($verify == $this->arg('fb_sig')) { -hunk ./actions/facebookremove.php 46 -- $flink = Foreign_link::getByForeignID($this->arg('fb_sig_user'), 2); -+ $flink = Foreign_link::getByForeignID($this->arg('fb_sig_user'), 2); -hunk ./actions/facebookremove.php 48 -- common_debug("Removing foreign link to Facebook - local user ID: $flink->user_id, Facebook ID: $flink->foreign_id"); -+ common_debug("Removing foreign link to Facebook - local user ID: $flink->user_id, Facebook ID: $flink->foreign_id"); -hunk ./actions/facebookremove.php 50 -- $result = $flink->delete(); -+ $result = $flink->delete(); -hunk ./actions/facebookremove.php 52 -- if (!$result) { -- common_log_db_error($flink, 'DELETE', __FILE__); -- common_server_error(_('Couldn\'t remove Facebook user.')); -- return; -- } -+ if (!$result) { -+ common_log_db_error($flink, 'DELETE', __FILE__); -+ common_server_error(_('Couldn\'t remove Facebook user.')); -+ return; -+ } -hunk ./actions/facebookremove.php 58 -- } else { -- # Someone bad tried to remove facebook link? -- common_log(LOG_ERR, "Someone from $_SERVER[REMOTE_ADDR] " . -- 'unsuccessfully tried to remove a foreign link to Facebook!'); -- } -- } -+ } else { -+ # Someone bad tried to remove facebook link? -+ common_log(LOG_ERR, "Someone from $_SERVER[REMOTE_ADDR] " . -+ 'unsuccessfully tried to remove a foreign link to Facebook!'); -+ } -+ } -hunk ./actions/facebooksettings.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/facebooksettings.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/facebooksettings.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/facebooksettings.php 29 -- $this->display(); -- } -+ $this->display(); -+ } -hunk ./actions/facebooksettings.php 32 -- function display() { -+ function display() { -hunk ./actions/facebooksettings.php 34 -- $facebook = $this->get_facebook(); -+ $facebook = $this->get_facebook(); -hunk ./actions/facebooksettings.php 36 -- $fbuid = $facebook->require_login(); -+ $fbuid = $facebook->require_login(); -hunk ./actions/facebooksettings.php 38 -- $fbml = '' -- .'

          Add an Identi.ca box to your profile!

          ' -- .'' -- .'
          '; -+ $fbml = '' -+ .'

          Add an Identi.ca box to your profile!

          ' -+ .'' -+ .'
          '; -hunk ./actions/facebooksettings.php 44 -- $this->show_header('Settings'); -+ $this->show_header('Settings'); -hunk ./actions/facebooksettings.php 46 -- echo $fbml; -+ echo $fbml; -hunk ./actions/facebooksettings.php 48 -- $this->show_footer(); -+ $this->show_footer(); -hunk ./actions/facebooksettings.php 50 -- } -+ } -hunk ./actions/favor.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/favor.php 29 -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- return; -- } -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ return; -+ } -hunk ./actions/favor.php 34 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/favor.php 36 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname))); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ common_redirect(common_local_url('showfavorites', array('nickname' => $user->nickname))); -+ return; -+ } -hunk ./actions/favor.php 41 -- $id = $this->trimmed('notice'); -+ $id = $this->trimmed('notice'); -hunk ./actions/favor.php 43 -- $notice = Notice::staticGet($id); -+ $notice = Notice::staticGet($id); -hunk ./actions/favor.php 45 -- # CSRF protection -+ # CSRF protection -hunk ./actions/favor.php 47 -- $token = $this->trimmed('token-'.$notice->id); -- if (!$token || $token != common_session_token()) { -- $this->client_error(_("There was a problem with your session token. Try again, please.")); -- return; -- } -+ $token = $this->trimmed('token-'.$notice->id); -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_("There was a problem with your session token. Try again, please.")); -+ return; -+ } -hunk ./actions/favor.php 53 -- if ($user->hasFave($notice)) { -- $this->client_error(_('This notice is already a favorite!')); -- return; -- } -+ if ($user->hasFave($notice)) { -+ $this->client_error(_('This notice is already a favorite!')); -+ return; -+ } -hunk ./actions/favor.php 58 -- $fave = Fave::addNew($user, $notice); -+ $fave = Fave::addNew($user, $notice); -hunk ./actions/favor.php 60 -- if (!$fave) { -- $this->server_error(_('Could not create favorite.')); -- return; -- } -+ if (!$fave) { -+ $this->server_error(_('Could not create favorite.')); -+ return; -+ } -hunk ./actions/favor.php 65 -- $this->notify($fave, $notice, $user); -- $user->blowFavesCache(); -- -- if ($this->boolean('ajax')) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Disfavor favorite')); -- common_element_end('head'); -- common_element_start('body'); -- common_disfavor_form($notice); -- common_element_end('body'); -- common_element_end('html'); -- } else { -- common_redirect(common_local_url('showfavorites', -- array('nickname' => $user->nickname))); -- } -- } -+ $this->notify($fave, $notice, $user); -+ $user->blowFavesCache(); -+ -+ if ($this->boolean('ajax')) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Disfavor favorite')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_disfavor_form($notice); -+ common_element_end('body'); -+ common_element_end('html'); -+ } else { -+ common_redirect(common_local_url('showfavorites', -+ array('nickname' => $user->nickname))); -+ } -+ } -hunk ./actions/favor.php 83 -- function notify($fave, $notice, $user) { -- $other = User::staticGet('id', $notice->profile_id); -- if ($other && $other->id != $user->id) { -- if ($other->email && $other->emailnotifyfav) { -- mail_notify_fave($other, $user, $notice); -- } -- # XXX: notify by IM -- # XXX: notify by SMS -- } -- } -+ function notify($fave, $notice, $user) { -+ $other = User::staticGet('id', $notice->profile_id); -+ if ($other && $other->id != $user->id) { -+ if ($other->email && $other->emailnotifyfav) { -+ mail_notify_fave($other, $user, $notice); -+ } -+ # XXX: notify by IM -+ # XXX: notify by SMS -+ } -+ } -hunk ./actions/favorited.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/favorited.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/favorited.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/favorited.php 29 -- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -hunk ./actions/favorited.php 31 -- common_show_header(_('Popular notices'), -- array($this, 'show_header'), NULL, -- array($this, 'show_top')); -+ common_show_header(_('Popular notices'), -+ array($this, 'show_header'), NULL, -+ array($this, 'show_top')); -hunk ./actions/favorited.php 35 -- $this->show_notices($page); -+ $this->show_notices($page); -hunk ./actions/favorited.php 37 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/favorited.php 40 -- function show_top() { -- $instr = $this->get_instructions(); -- $output = common_markup_to_html($instr); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- $this->public_views_menu(); -- } -+ function show_top() { -+ $instr = $this->get_instructions(); -+ $output = common_markup_to_html($instr); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ $this->public_views_menu(); -+ } -hunk ./actions/favorited.php 49 -- function show_header() { -+ function show_header() { -hunk ./actions/favorited.php 51 -- } -+ } -hunk ./actions/favorited.php 53 -- function get_instructions() { -- return _('Showing recently popular notices'); -- } -+ function get_instructions() { -+ return _('Showing recently popular notices'); -+ } -hunk ./actions/favorited.php 57 -- function show_notices($page) { -+ function show_notices($page) { -hunk ./actions/favorited.php 59 -- $qry = 'SELECT notice.*, sum(exp(-(now() - fave.modified) / %s)) as weight ' . -- 'FROM notice JOIN fave ON notice.id = fave.notice_id ' . -- 'GROUP BY fave.notice_id ' . -- 'ORDER BY weight DESC'; -+ $qry = 'SELECT notice.*, sum(exp(-(now() - fave.modified) / %s)) as weight ' . -+ 'FROM notice JOIN fave ON notice.id = fave.notice_id ' . -+ 'GROUP BY fave.notice_id ' . -+ 'ORDER BY weight DESC'; -hunk ./actions/favorited.php 64 -- $offset = ($page - 1) * NOTICES_PER_PAGE; -- $limit = NOTICES_PER_PAGE + 1; -+ $offset = ($page - 1) * NOTICES_PER_PAGE; -+ $limit = NOTICES_PER_PAGE + 1; -hunk ./actions/favorited.php 67 -- if (common_config('db','type') == 'pgsql') { -- $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; -- } else { -- $qry .= ' LIMIT ' . $offset . ', ' . $limit; -- } -+ if (common_config('db','type') == 'pgsql') { -+ $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; -+ } else { -+ $qry .= ' LIMIT ' . $offset . ', ' . $limit; -+ } -hunk ./actions/favorited.php 73 -- # Figure out how to cache this query -+ # Figure out how to cache this query -hunk ./actions/favorited.php 75 -- $notice = new Notice; -- $notice->query(sprintf($qry, common_config('popular', 'dropoff'))); -+ $notice = new Notice; -+ $notice->query(sprintf($qry, common_config('popular', 'dropoff'))); -hunk ./actions/favorited.php 78 -- common_element_start('ul', array('id' => 'notices')); -+ common_element_start('ul', array('id' => 'notices')); -hunk ./actions/favorited.php 80 -- $cnt = 0; -+ $cnt = 0; -hunk ./actions/favorited.php 82 -- while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) { -- $cnt++; -+ while ($notice->fetch() && $cnt <= NOTICES_PER_PAGE) { -+ $cnt++; -hunk ./actions/favorited.php 85 -- if ($cnt > NOTICES_PER_PAGE) { -- break; -- } -+ if ($cnt > NOTICES_PER_PAGE) { -+ break; -+ } -hunk ./actions/favorited.php 91 -- } -+ } -hunk ./actions/favorited.php 93 -- common_element_end('ul'); -+ common_element_end('ul'); -hunk ./actions/favorited.php 95 -- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'favorited'); -- } -+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'favorited'); -+ } +- common_element('h2', NULL, _('Address')); ++ common_element('h2', null, _('Address')); +hunk ./actions/emailsettings.php 61 +- ($this->arg('email')) ? $this->arg('email') : NULL, ++ ($this->arg('email')) ? $this->arg('email') : null, +hunk ./actions/emailsettings.php 68 +- common_element('h2', NULL, _('Incoming email')); ++ common_element('h2', null, _('Incoming email')); +hunk ./actions/emailsettings.php 86 +- common_element('h2', NULL, _('Preferences')); ++ common_element('h2', null, _('Preferences')); +hunk ./actions/emailsettings.php 121 +- return NULL; ++ return null; +hunk ./actions/emailsettings.php 276 +- $user->email = NULL; ++ $user->email = null; +hunk ./actions/emailsettings.php 297 +- $user->incomingemail = NULL; ++ $user->incomingemail = null; +hunk ./actions/favorited.php 32 +- array($this, 'show_header'), NULL, ++ array($this, 'show_header'), null, hunk ./actions/favoritesrss.php 28 -- var $user = NULL; -- -- function init() { -- $nickname = $this->trimmed('nickname'); -- $this->user = User::staticGet('nickname', $nickname); -+ var $user = NULL; -+ -+ function init() { -+ $nickname = $this->trimmed('nickname'); -+ $this->user = User::staticGet('nickname', $nickname); -hunk ./actions/favoritesrss.php 34 -- if (!$this->user) { -- common_user_error(_('No such user.')); -- return false; -- } else { -- return true; -- } -- } -+ if (!$this->user) { -+ common_user_error(_('No such user.')); -+ return false; -+ } else { -+ return true; -+ } -+ } -hunk ./actions/favoritesrss.php 42 -- function get_notices($limit=0) { -+ function get_notices($limit=0) { -hunk ./actions/favoritesrss.php 44 -- $user = $this->user; -+ $user = $this->user; -hunk ./actions/favoritesrss.php 46 -- $notice = $user->favoriteNotices(0, $limit); -+ $notice = $user->favoriteNotices(0, $limit); -hunk ./actions/favoritesrss.php 48 -- $notices = array(); -+ $notices = array(); -hunk ./actions/favoritesrss.php 50 -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./actions/favoritesrss.php 54 -- return $notices; -- } -+ return $notices; -+ } -hunk ./actions/favoritesrss.php 57 -- function get_channel() { -- $user = $this->user; -- $c = array('url' => common_local_url('favoritesrss', -- array('nickname' => -- $user->nickname)), -- 'title' => sprintf(_("%s favorite notices"), $user->nickname), -- 'link' => common_local_url('showfavorites', -- array('nickname' => -- $user->nickname)), -- 'description' => sprintf(_('Feed of favorite notices of %s'), $user->nickname)); -- return $c; -- } -+ function get_channel() { -+ $user = $this->user; -+ $c = array('url' => common_local_url('favoritesrss', -+ array('nickname' => -+ $user->nickname)), -+ 'title' => sprintf(_("%s favorite notices"), $user->nickname), -+ 'link' => common_local_url('showfavorites', -+ array('nickname' => -+ $user->nickname)), -+ 'description' => sprintf(_('Feed of favorite notices of %s'), $user->nickname)); -+ return $c; -+ } -hunk ./actions/favoritesrss.php 70 -- function get_image() { -- return NULL; -- } -+ function get_image() { -+ return NULL; -+ } -hunk ./actions/featured.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/featured.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/featured.php 27 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/featured.php 30 -- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -hunk ./actions/featured.php 32 -- common_show_header(_('Featured users'), -- array($this, 'show_header'), NULL, -- array($this, 'show_top')); -+ common_show_header(_('Featured users'), -+ array($this, 'show_header'), NULL, -+ array($this, 'show_top')); -hunk ./actions/featured.php 36 -- $this->show_notices($page); -+ $this->show_notices($page); -hunk ./actions/featured.php 38 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/featured.php 41 -- function show_top() { -- $instr = $this->get_instructions(); -- $output = common_markup_to_html($instr); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- $this->public_views_menu(); -- } -+ function show_top() { -+ $instr = $this->get_instructions(); -+ $output = common_markup_to_html($instr); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ $this->public_views_menu(); -+ } -hunk ./actions/featured.php 50 -- function show_header() { -- } -+ function show_header() { -+ } -hunk ./actions/featured.php 53 -- function get_instructions() { -- return _('Featured users'); -- } -+ function get_instructions() { -+ return _('Featured users'); -+ } -hunk ./actions/featured.php 57 -- function show_notices($page) { -+ function show_notices($page) { -hunk ./actions/featured.php 59 -- // XXX: Note I'm doing it this two-stage way because a raw query -- // with a JOIN was *not* working. --Zach -+ // XXX: Note I'm doing it this two-stage way because a raw query -+ // with a JOIN was *not* working. --Zach -hunk ./actions/featured.php 62 -- $featured_nicks = common_config('nickname', 'featured'); -+ $featured_nicks = common_config('nickname', 'featured'); -hunk ./actions/featured.php 64 -- if (count($featured_nicks) > 0) { -+ if (count($featured_nicks) > 0) { -hunk ./actions/featured.php 66 -- $quoted = array(); -+ $quoted = array(); -hunk ./actions/featured.php 68 -- foreach ($featured_nicks as $nick) { -- $quoted[] = "'$nick'"; -- } -+ foreach ($featured_nicks as $nick) { -+ $quoted[] = "'$nick'"; -+ } -hunk ./actions/featured.php 72 -- $user = new User; -- $user->whereAdd(sprintf('nickname IN (%s)', implode(',', $quoted))); -- $user->limit(($page - 1) * PROFILES_PER_PAGE, PROFILES_PER_PAGE + 1); -- $user->orderBy('user.nickname ASC'); -+ $user = new User; -+ $user->whereAdd(sprintf('nickname IN (%s)', implode(',', $quoted))); -+ $user->limit(($page - 1) * PROFILES_PER_PAGE, PROFILES_PER_PAGE + 1); -+ $user->orderBy('user.nickname ASC'); -hunk ./actions/featured.php 77 -- $user->find(); -+ $user->find(); -hunk ./actions/featured.php 79 -- $profile_ids = array(); -+ $profile_ids = array(); -hunk ./actions/featured.php 81 -- while ($user->fetch()) { -- $profile_ids[] = $user->id; -- } -+ while ($user->fetch()) { -+ $profile_ids[] = $user->id; -+ } -hunk ./actions/featured.php 85 -- $profile = new Profile; -- $profile->whereAdd(sprintf('profile.id IN (%s)', implode(',', $profile_ids))); -- $profile->orderBy('nickname ASC'); -+ $profile = new Profile; -+ $profile->whereAdd(sprintf('profile.id IN (%s)', implode(',', $profile_ids))); -+ $profile->orderBy('nickname ASC'); -hunk ./actions/featured.php 89 -- $cnt = $profile->find(); -+ $cnt = $profile->find(); -hunk ./actions/featured.php 91 -- if ($cnt > 0) { -- $featured = new ProfileList($profile); -- $featured->show_list(); -- } -+ if ($cnt > 0) { -+ $featured = new ProfileList($profile); -+ $featured->show_list(); -+ } -hunk ./actions/featured.php 96 -- $profile->free(); -+ $profile->free(); -hunk ./actions/featured.php 98 -- common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, $page, 'featured'); -- } -- } -+ common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, $page, 'featured'); -+ } -+ } -hunk ./actions/finishaddopenid.php 26 -- function handle($args) { -- parent::handle($args); -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- } else { -- $this->try_login(); -- } -- } -- -- function try_login() { -+ function handle($args) { -+ parent::handle($args); -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ } else { -+ $this->try_login(); -+ } -+ } -+ -+ function try_login() { -hunk ./actions/finishaddopenid.php 37 -- $consumer =& oid_consumer(); -+ $consumer =& oid_consumer(); -hunk ./actions/finishaddopenid.php 39 -- $response = $consumer->complete(common_local_url('finishaddopenid')); -+ $response = $consumer->complete(common_local_url('finishaddopenid')); -hunk ./actions/finishaddopenid.php 41 -- if ($response->status == Auth_OpenID_CANCEL) { -- $this->message(_('OpenID authentication cancelled.')); -- return; -- } else if ($response->status == Auth_OpenID_FAILURE) { -- // Authentication failed; display the error message. -- $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message)); -- } else if ($response->status == Auth_OpenID_SUCCESS) { -+ if ($response->status == Auth_OpenID_CANCEL) { -+ $this->message(_('OpenID authentication cancelled.')); -+ return; -+ } else if ($response->status == Auth_OpenID_FAILURE) { -+ // Authentication failed; display the error message. -+ $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message)); -+ } else if ($response->status == Auth_OpenID_SUCCESS) { -hunk ./actions/finishaddopenid.php 49 -- $display = $response->getDisplayIdentifier(); -- $canonical = ($response->endpoint && $response->endpoint->canonicalID) ? -- $response->endpoint->canonicalID : $display; -+ $display = $response->getDisplayIdentifier(); -+ $canonical = ($response->endpoint && $response->endpoint->canonicalID) ? -+ $response->endpoint->canonicalID : $display; -hunk ./actions/finishaddopenid.php 53 -- $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response); -+ $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response); -hunk ./actions/finishaddopenid.php 55 -- if ($sreg_resp) { -- $sreg = $sreg_resp->contents(); -- } -+ if ($sreg_resp) { -+ $sreg = $sreg_resp->contents(); -+ } -hunk ./actions/finishaddopenid.php 59 -- $cur =& common_current_user(); -- $other = oid_get_user($canonical); -+ $cur =& common_current_user(); -+ $other = oid_get_user($canonical); -hunk ./actions/finishaddopenid.php 62 -- if ($other) { -- if ($other->id == $cur->id) { -- $this->message(_('You already have this OpenID!')); -- } else { -- $this->message(_('Someone else already has this OpenID.')); -- } -- return; -- } -+ if ($other) { -+ if ($other->id == $cur->id) { -+ $this->message(_('You already have this OpenID!')); -+ } else { -+ $this->message(_('Someone else already has this OpenID.')); -+ } -+ return; -+ } -hunk ./actions/finishaddopenid.php 71 -- # start a transaction -+ # start a transaction -hunk ./actions/finishaddopenid.php 73 -- $cur->query('BEGIN'); -+ $cur->query('BEGIN'); -hunk ./actions/finishaddopenid.php 75 -- $result = oid_link_user($cur->id, $canonical, $display); -+ $result = oid_link_user($cur->id, $canonical, $display); -hunk ./actions/finishaddopenid.php 77 -- if (!$result) { -- $this->message(_('Error connecting user.')); -- return; -- } -- if ($sreg) { -- if (!oid_update_user($cur, $sreg)) { -- $this->message(_('Error updating profile')); -- return; -- } -- } -+ if (!$result) { -+ $this->message(_('Error connecting user.')); -+ return; -+ } -+ if ($sreg) { -+ if (!oid_update_user($cur, $sreg)) { -+ $this->message(_('Error updating profile')); -+ return; -+ } -+ } -hunk ./actions/finishaddopenid.php 88 -- # success! -+ # success! -hunk ./actions/finishaddopenid.php 90 -- $cur->query('COMMIT'); -+ $cur->query('COMMIT'); -hunk ./actions/finishaddopenid.php 92 -- oid_set_last($display); -+ oid_set_last($display); -hunk ./actions/finishaddopenid.php 94 -- common_redirect(common_local_url('openidsettings')); -- } -- } -+ common_redirect(common_local_url('openidsettings')); -+ } -+ } -hunk ./actions/finishaddopenid.php 98 -- function message($msg) { -- common_show_header(_('OpenID Login')); -- common_element('p', NULL, $msg); -- common_show_footer(); -- } -+ function message($msg) { -+ common_show_header(_('OpenID Login')); -+ common_element('p', NULL, $msg); -+ common_show_footer(); -+ } -hunk ./actions/finishimmediate.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/finishimmediate.php 29 -- $consumer = oid_consumer(); -+ $consumer = oid_consumer(); -hunk ./actions/finishimmediate.php 31 -- $response = $consumer->complete(common_local_url('finishimmediate')); -+ $response = $consumer->complete(common_local_url('finishimmediate')); -hunk ./actions/finishimmediate.php 33 -- if ($response->status == Auth_OpenID_SUCCESS) { -- $display = $response->getDisplayIdentifier(); -- $canonical = ($response->endpoint->canonicalID) ? -- $response->endpoint->canonicalID : $response->getDisplayIdentifier(); -+ if ($response->status == Auth_OpenID_SUCCESS) { -+ $display = $response->getDisplayIdentifier(); -+ $canonical = ($response->endpoint->canonicalID) ? -+ $response->endpoint->canonicalID : $response->getDisplayIdentifier(); -hunk ./actions/finishimmediate.php 38 -- $user = oid_get_user($canonical); -+ $user = oid_get_user($canonical); -hunk ./actions/finishimmediate.php 40 -- if ($user) { -- oid_update_user($user, $sreg); -- oid_set_last($display); # refresh for another year -- common_set_user($user->nickname); -- $this->go_backto(); -- return; -- } -- } -+ if ($user) { -+ oid_update_user($user, $sreg); -+ oid_set_last($display); # refresh for another year -+ common_set_user($user->nickname); -+ $this->go_backto(); -+ return; -+ } -+ } -hunk ./actions/finishimmediate.php 49 -- # Failure! Clear openid so we don't try it again -+ # Failure! Clear openid so we don't try it again -hunk ./actions/finishimmediate.php 51 -- oid_clear_last(); -- $this->go_backto(); -- return; -- } -+ oid_clear_last(); -+ $this->go_backto(); -+ return; -+ } -hunk ./actions/finishimmediate.php 56 -- function go_backto() { -- common_ensure_session(); -- $backto = $_SESSION['openid_immediate_backto']; -- if (!$backto) { -- # gar. Well, push them to the public page -- $backto = common_local_url('public'); -- } -- common_redirect($backto); -- } -+ function go_backto() { -+ common_ensure_session(); -+ $backto = $_SESSION['openid_immediate_backto']; -+ if (!$backto) { -+ # gar. Well, push them to the public page -+ $backto = common_local_url('public'); -+ } -+ common_redirect($backto); -+ } -hunk ./actions/finishopenidlogin.php 26 -- function handle($args) { -- parent::handle($args); -- if (common_logged_in()) { -- common_user_error(_('Already logged in.')); -- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -- if ($this->arg('create')) { -- if (!$this->boolean('license')) { -- $this->show_form(_('You can\'t register if you don\'t agree to the license.'), -- $this->trimmed('newname')); -- return; -- } -- $this->create_new_user(); -- } else if ($this->arg('connect')) { -- $this->connect_user(); -- } else { -- common_debug(print_r($this->args, true), __FILE__); -- $this->show_form(_('Something weird happened.'), -- $this->trimmed('newname')); -- } -- } else { -- $this->try_login(); -- } -- } -+ function handle($args) { -+ parent::handle($args); -+ if (common_logged_in()) { -+ common_user_error(_('Already logged in.')); -+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -+ if ($this->arg('create')) { -+ if (!$this->boolean('license')) { -+ $this->show_form(_('You can\'t register if you don\'t agree to the license.'), -+ $this->trimmed('newname')); -+ return; -+ } -+ $this->create_new_user(); -+ } else if ($this->arg('connect')) { -+ $this->connect_user(); -+ } else { -+ common_debug(print_r($this->args, true), __FILE__); -+ $this->show_form(_('Something weird happened.'), -+ $this->trimmed('newname')); -+ } -+ } else { -+ $this->try_login(); -+ } -+ } +- var $user = NULL; ++ var $user = null; +hunk ./actions/favoritesrss.php 71 +- return NULL; ++ return null; +hunk ./actions/featured.php 33 +- array($this, 'show_header'), NULL, ++ array($this, 'show_header'), null, +hunk ./actions/finishaddopenid.php 100 +- common_element('p', NULL, $msg); ++ common_element('p', null, $msg); hunk ./actions/finishopenidlogin.php 55 -- function show_top($error=NULL) { -- if ($error) { -- common_element('div', array('class' => 'error'), $error); -- } else { -- global $config; -- common_element('div', 'instructions', -- sprintf(_('This is the first time you\'ve logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one.'), $config['site']['name'])); -- } -- } -+ function show_top($error=NULL) { -+ if ($error) { -+ common_element('div', array('class' => 'error'), $error); -+ } else { -+ global $config; -+ common_element('div', 'instructions', -+ sprintf(_('This is the first time you\'ve logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one.'), $config['site']['name'])); -+ } -+ } +- function show_top($error=NULL) { ++ function show_top($error=null) { hunk ./actions/finishopenidlogin.php 65 -- function show_form($error=NULL, $username=NULL) { -- common_show_header(_('OpenID Account Setup'), NULL, $error, -- array($this, 'show_top')); -+ function show_form($error=NULL, $username=NULL) { -+ common_show_header(_('OpenID Account Setup'), NULL, $error, -+ array($this, 'show_top')); -hunk ./actions/finishopenidlogin.php 69 -- common_element_start('form', array('method' => 'post', -- 'id' => 'account_connect', -- 'action' => common_local_url('finishopenidlogin'))); -- common_hidden('token', common_session_token()); -- common_element('h2', NULL, -- _('Create new account')); -- common_element('p', NULL, -- _('Create a new user with this nickname.')); -- common_input('newname', _('New nickname'), -- ($username) ? $username : '', -- _('1-64 lowercase letters or numbers, no punctuation or spaces')); -- common_element_start('p'); -- common_element('input', array('type' => 'checkbox', -- 'id' => 'license', -- 'name' => 'license', -- 'value' => 'true')); -- common_text(_('My text and files are available under ')); -- common_element('a', array(href => common_config('license', 'url')), -- common_config('license', 'title')); -- common_text(_(' except this private data: password, email address, IM address, phone number.')); -- common_element_end('p'); -- common_submit('create', _('Create')); -- common_element('h2', NULL, -- _('Connect existing account')); -- common_element('p', NULL, -- _('If you already have an account, login with your username and password to connect it to your OpenID.')); -- common_input('nickname', _('Existing nickname')); -- common_password('password', _('Password')); -- common_submit('connect', _('Connect')); -- common_element_end('form'); -- common_show_footer(); -- } -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'account_connect', -+ 'action' => common_local_url('finishopenidlogin'))); -+ common_hidden('token', common_session_token()); -+ common_element('h2', NULL, -+ _('Create new account')); -+ common_element('p', NULL, -+ _('Create a new user with this nickname.')); -+ common_input('newname', _('New nickname'), -+ ($username) ? $username : '', -+ _('1-64 lowercase letters or numbers, no punctuation or spaces')); -+ common_element_start('p'); -+ common_element('input', array('type' => 'checkbox', -+ 'id' => 'license', -+ 'name' => 'license', -+ 'value' => 'true')); -+ common_text(_('My text and files are available under ')); -+ common_element('a', array(href => common_config('license', 'url')), -+ common_config('license', 'title')); -+ common_text(_(' except this private data: password, email address, IM address, phone number.')); -+ common_element_end('p'); -+ common_submit('create', _('Create')); -+ common_element('h2', NULL, -+ _('Connect existing account')); -+ common_element('p', NULL, -+ _('If you already have an account, login with your username and password to connect it to your OpenID.')); -+ common_input('nickname', _('Existing nickname')); -+ common_password('password', _('Password')); -+ common_submit('connect', _('Connect')); -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/finishopenidlogin.php 102 -- function try_login() { -+ function try_login() { -hunk ./actions/finishopenidlogin.php 104 -- $consumer = oid_consumer(); -+ $consumer = oid_consumer(); -hunk ./actions/finishopenidlogin.php 106 -- $response = $consumer->complete(common_local_url('finishopenidlogin')); -+ $response = $consumer->complete(common_local_url('finishopenidlogin')); -hunk ./actions/finishopenidlogin.php 108 -- if ($response->status == Auth_OpenID_CANCEL) { -- $this->message(_('OpenID authentication cancelled.')); -- return; -- } else if ($response->status == Auth_OpenID_FAILURE) { -- // Authentication failed; display the error message. -- $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message)); -- } else if ($response->status == Auth_OpenID_SUCCESS) { -- // This means the authentication succeeded; extract the -- // identity URL and Simple Registration data (if it was -- // returned). -- $display = $response->getDisplayIdentifier(); -- $canonical = ($response->endpoint->canonicalID) ? -- $response->endpoint->canonicalID : $response->getDisplayIdentifier(); -+ if ($response->status == Auth_OpenID_CANCEL) { -+ $this->message(_('OpenID authentication cancelled.')); -+ return; -+ } else if ($response->status == Auth_OpenID_FAILURE) { -+ // Authentication failed; display the error message. -+ $this->message(sprintf(_('OpenID authentication failed: %s'), $response->message)); -+ } else if ($response->status == Auth_OpenID_SUCCESS) { -+ // This means the authentication succeeded; extract the -+ // identity URL and Simple Registration data (if it was -+ // returned). -+ $display = $response->getDisplayIdentifier(); -+ $canonical = ($response->endpoint->canonicalID) ? -+ $response->endpoint->canonicalID : $response->getDisplayIdentifier(); -hunk ./actions/finishopenidlogin.php 122 -- $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response); -+ $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response); -hunk ./actions/finishopenidlogin.php 124 -- if ($sreg_resp) { -- $sreg = $sreg_resp->contents(); -- } -+ if ($sreg_resp) { -+ $sreg = $sreg_resp->contents(); -+ } -hunk ./actions/finishopenidlogin.php 128 -- $user = oid_get_user($canonical); -+ $user = oid_get_user($canonical); -hunk ./actions/finishopenidlogin.php 130 -- if ($user) { -- oid_set_last($display); -- # XXX: commented out at @edd's request until better -- # control over how data flows from OpenID provider. -- # oid_update_user($user, $sreg); -- common_set_user($user); -- common_real_login(true); -- if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) { -- common_rememberme($user); -- } -+ if ($user) { -+ oid_set_last($display); -+ # XXX: commented out at @edd's request until better -+ # control over how data flows from OpenID provider. -+ # oid_update_user($user, $sreg); -+ common_set_user($user); -+ common_real_login(true); -+ if (isset($_SESSION['openid_rememberme']) && $_SESSION['openid_rememberme']) { -+ common_rememberme($user); -+ } -hunk ./actions/finishopenidlogin.php 141 -- $this->go_home($user->nickname); -- } else { -- $this->save_values($display, $canonical, $sreg); -- $this->show_form(NULL, $this->best_new_nickname($display, $sreg)); -- } -- } -- } -+ $this->go_home($user->nickname); -+ } else { -+ $this->save_values($display, $canonical, $sreg); -+ $this->show_form(NULL, $this->best_new_nickname($display, $sreg)); -+ } -+ } -+ } -hunk ./actions/finishopenidlogin.php 149 -- function message($msg) { -- common_show_header(_('OpenID Login')); -- common_element('p', NULL, $msg); -- common_show_footer(); -- } -+ function message($msg) { -+ common_show_header(_('OpenID Login')); -+ common_element('p', NULL, $msg); -+ common_show_footer(); -+ } -hunk ./actions/finishopenidlogin.php 155 -- function save_values($display, $canonical, $sreg) { -- common_ensure_session(); -- $_SESSION['openid_display'] = $display; -- $_SESSION['openid_canonical'] = $canonical; -- $_SESSION['openid_sreg'] = $sreg; -- } -+ function save_values($display, $canonical, $sreg) { -+ common_ensure_session(); -+ $_SESSION['openid_display'] = $display; -+ $_SESSION['openid_canonical'] = $canonical; -+ $_SESSION['openid_sreg'] = $sreg; -+ } -hunk ./actions/finishopenidlogin.php 162 -- function get_saved_values() { -- return array($_SESSION['openid_display'], -- $_SESSION['openid_canonical'], -- $_SESSION['openid_sreg']); -- } -+ function get_saved_values() { -+ return array($_SESSION['openid_display'], -+ $_SESSION['openid_canonical'], -+ $_SESSION['openid_sreg']); -+ } -hunk ./actions/finishopenidlogin.php 168 -- function create_new_user() { -+ function create_new_user() { -hunk ./actions/finishopenidlogin.php 172 -- if (common_config('site', 'closed') || common_config('site', 'inviteonly')) { -- common_user_error(_('Registration not allowed.')); -+ if (common_config('site', 'closed') || common_config('site', 'inviteonly')) { -+ common_user_error(_('Registration not allowed.')); -hunk ./actions/finishopenidlogin.php 177 -- $nickname = $this->trimmed('newname'); -+ $nickname = $this->trimmed('newname'); -hunk ./actions/finishopenidlogin.php 179 -- if (!Validate::string($nickname, array('min_length' => 1, -- 'max_length' => 64, -- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -- $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.')); -- return; -- } -+ if (!Validate::string($nickname, array('min_length' => 1, -+ 'max_length' => 64, -+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -+ $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 186 -- if (!User::allowed_nickname($nickname)) { -- $this->show_form(_('Nickname not allowed.')); -- return; -- } -+ if (!User::allowed_nickname($nickname)) { -+ $this->show_form(_('Nickname not allowed.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 191 -- if (User::staticGet('nickname', $nickname)) { -- $this->show_form(_('Nickname already in use. Try another one.')); -- return; -- } -+ if (User::staticGet('nickname', $nickname)) { -+ $this->show_form(_('Nickname already in use. Try another one.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 196 -- list($display, $canonical, $sreg) = $this->get_saved_values(); -+ list($display, $canonical, $sreg) = $this->get_saved_values(); -hunk ./actions/finishopenidlogin.php 198 -- if (!$display || !$canonical) { -- common_server_error(_('Stored OpenID not found.')); -- return; -- } -+ if (!$display || !$canonical) { -+ common_server_error(_('Stored OpenID not found.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 203 -- # Possible race condition... let's be paranoid -+ # Possible race condition... let's be paranoid -hunk ./actions/finishopenidlogin.php 205 -- $other = oid_get_user($canonical); -+ $other = oid_get_user($canonical); -hunk ./actions/finishopenidlogin.php 207 -- if ($other) { -- common_server_error(_('Creating new account for OpenID that already has a user.')); -- return; -- } -+ if ($other) { -+ common_server_error(_('Creating new account for OpenID that already has a user.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 212 -- if ($sreg['country']) { -- if ($sreg['postcode']) { -- # XXX: use postcode to get city and region -- # XXX: also, store postcode somewhere -- it's valuable! -- $location = $sreg['postcode'] . ', ' . $sreg['country']; -- } else { -- $location = $sreg['country']; -- } -- } -+ if ($sreg['country']) { -+ if ($sreg['postcode']) { -+ # XXX: use postcode to get city and region -+ # XXX: also, store postcode somewhere -- it's valuable! -+ $location = $sreg['postcode'] . ', ' . $sreg['country']; -+ } else { -+ $location = $sreg['country']; -+ } -+ } -hunk ./actions/finishopenidlogin.php 222 -- if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) { -- $fullname = $sreg['fullname']; -- } -+ if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) { -+ $fullname = $sreg['fullname']; -+ } -hunk ./actions/finishopenidlogin.php 226 -- if ($sreg['email'] && Validate::email($sreg['email'], true)) { -- $email = $sreg['email']; -- } -+ if ($sreg['email'] && Validate::email($sreg['email'], true)) { -+ $email = $sreg['email']; -+ } -hunk ./actions/finishopenidlogin.php 230 -- # XXX: add language -- # XXX: add timezone -+ # XXX: add language -+ # XXX: add timezone -hunk ./actions/finishopenidlogin.php 233 -- $user = User::register(array('nickname' => $nickname, -- 'email' => $email, -- 'fullname' => $fullname, -- 'location' => $location)); -+ $user = User::register(array('nickname' => $nickname, -+ 'email' => $email, -+ 'fullname' => $fullname, -+ 'location' => $location)); -hunk ./actions/finishopenidlogin.php 238 -- $result = oid_link_user($user->id, $canonical, $display); -+ $result = oid_link_user($user->id, $canonical, $display); -hunk ./actions/finishopenidlogin.php 240 -- oid_set_last($display); -- common_set_user($user); -- common_real_login(true); -+ oid_set_last($display); -+ common_set_user($user); -+ common_real_login(true); -hunk ./actions/finishopenidlogin.php 244 -- common_rememberme($user); -- } -+ common_rememberme($user); -+ } -hunk ./actions/finishopenidlogin.php 247 -- common_redirect(common_local_url('showstream', array('nickname' => $user->nickname))); -- } -+ common_redirect(common_local_url('showstream', array('nickname' => $user->nickname))); -+ } -hunk ./actions/finishopenidlogin.php 250 -- function connect_user() { -+ function connect_user() { -hunk ./actions/finishopenidlogin.php 252 -- $nickname = $this->trimmed('nickname'); -- $password = $this->trimmed('password'); -+ $nickname = $this->trimmed('nickname'); -+ $password = $this->trimmed('password'); -hunk ./actions/finishopenidlogin.php 255 -- if (!common_check_user($nickname, $password)) { -- $this->show_form(_('Invalid username or password.')); -- return; -- } -+ if (!common_check_user($nickname, $password)) { -+ $this->show_form(_('Invalid username or password.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 260 -- # They're legit! -+ # They're legit! -hunk ./actions/finishopenidlogin.php 262 -- $user = User::staticGet('nickname', $nickname); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/finishopenidlogin.php 264 -- list($display, $canonical, $sreg) = $this->get_saved_values(); -+ list($display, $canonical, $sreg) = $this->get_saved_values(); -hunk ./actions/finishopenidlogin.php 266 -- if (!$display || !$canonical) { -- common_server_error(_('Stored OpenID not found.')); -- return; -- } -+ if (!$display || !$canonical) { -+ common_server_error(_('Stored OpenID not found.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 271 -- $result = oid_link_user($user->id, $canonical, $display); -+ $result = oid_link_user($user->id, $canonical, $display); -hunk ./actions/finishopenidlogin.php 273 -- if (!$result) { -- common_server_error(_('Error connecting user to OpenID.')); -- return; -- } -+ if (!$result) { -+ common_server_error(_('Error connecting user to OpenID.')); -+ return; -+ } -hunk ./actions/finishopenidlogin.php 278 -- oid_update_user($user, $sreg); -- oid_set_last($display); -- common_set_user($user); -- common_real_login(true); -+ oid_update_user($user, $sreg); -+ oid_set_last($display); -+ common_set_user($user); -+ common_real_login(true); -hunk ./actions/finishopenidlogin.php 283 -- common_rememberme($user); -- } -- unset($_SESSION['openid_rememberme']); -- $this->go_home($user->nickname); -- } -+ common_rememberme($user); -+ } -+ unset($_SESSION['openid_rememberme']); -+ $this->go_home($user->nickname); -+ } -hunk ./actions/finishopenidlogin.php 289 -- function go_home($nickname) { -- $url = common_get_returnto(); -- if ($url) { -- # We don't have to return to it again -- common_set_returnto(NULL); -- } else { -- $url = common_local_url('all', -- array('nickname' => -- $nickname)); -- } -- common_redirect($url); -- } -+ function go_home($nickname) { -+ $url = common_get_returnto(); -+ if ($url) { -+ # We don't have to return to it again -+ common_set_returnto(NULL); -+ } else { -+ $url = common_local_url('all', -+ array('nickname' => -+ $nickname)); -+ } -+ common_redirect($url); -+ } -hunk ./actions/finishopenidlogin.php 302 -- function best_new_nickname($display, $sreg) { -+ function best_new_nickname($display, $sreg) { -hunk ./actions/finishopenidlogin.php 304 -- # Try the passed-in nickname -+ # Try the passed-in nickname -hunk ./actions/finishopenidlogin.php 306 -- if ($sreg['nickname']) { -- $nickname = $this->nicknamize($sreg['nickname']); -- if ($this->is_new_nickname($nickname)) { -- return $nickname; -- } -- } -+ if ($sreg['nickname']) { -+ $nickname = $this->nicknamize($sreg['nickname']); -+ if ($this->is_new_nickname($nickname)) { -+ return $nickname; -+ } -+ } -hunk ./actions/finishopenidlogin.php 313 -- # Try the full name -+ # Try the full name -hunk ./actions/finishopenidlogin.php 315 -- if ($sreg['fullname']) { -- $fullname = $this->nicknamize($sreg['fullname']); -- if ($this->is_new_nickname($fullname)) { -- return $fullname; -- } -- } -+ if ($sreg['fullname']) { -+ $fullname = $this->nicknamize($sreg['fullname']); -+ if ($this->is_new_nickname($fullname)) { -+ return $fullname; -+ } -+ } -hunk ./actions/finishopenidlogin.php 322 -- # Try the URL -+ # Try the URL -hunk ./actions/finishopenidlogin.php 324 -- $from_url = $this->openid_to_nickname($display); -+ $from_url = $this->openid_to_nickname($display); -hunk ./actions/finishopenidlogin.php 326 -- if ($from_url && $this->is_new_nickname($from_url)) { -- return $from_url; -- } -+ if ($from_url && $this->is_new_nickname($from_url)) { -+ return $from_url; -+ } -hunk ./actions/finishopenidlogin.php 330 -- # XXX: others? -+ # XXX: others? +- function show_form($error=NULL, $username=NULL) { +- common_show_header(_('OpenID Account Setup'), NULL, $error, ++ function show_form($error=null, $username=null) { ++ common_show_header(_('OpenID Account Setup'), null, $error, +hunk ./actions/finishopenidlogin.php 73 +- common_element('h2', NULL, ++ common_element('h2', null, +hunk ./actions/finishopenidlogin.php 75 +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/finishopenidlogin.php 91 +- common_element('h2', NULL, ++ common_element('h2', null, +hunk ./actions/finishopenidlogin.php 93 +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/finishopenidlogin.php 144 +- $this->show_form(NULL, $this->best_new_nickname($display, $sreg)); ++ $this->show_form(null, $this->best_new_nickname($display, $sreg)); +hunk ./actions/finishopenidlogin.php 151 +- common_element('p', NULL, $msg); ++ common_element('p', null, $msg); +hunk ./actions/finishopenidlogin.php 293 +- common_set_returnto(NULL); ++ common_set_returnto(null); hunk ./actions/finishopenidlogin.php 332 -- return NULL; -- } -+ return NULL; -+ } -hunk ./actions/finishopenidlogin.php 335 -- function is_new_nickname($str) { -- if (!Validate::string($str, array('min_length' => 1, -- 'max_length' => 64, -- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -- return false; -- } -- if (!User::allowed_nickname($str)) { -- return false; -- } -- if (User::staticGet('nickname', $str)) { -- return false; -- } -- return true; -- } -+ function is_new_nickname($str) { -+ if (!Validate::string($str, array('min_length' => 1, -+ 'max_length' => 64, -+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -+ return false; -+ } -+ if (!User::allowed_nickname($str)) { -+ return false; -+ } -+ if (User::staticGet('nickname', $str)) { -+ return false; -+ } -+ return true; -+ } -hunk ./actions/finishopenidlogin.php 350 -- function openid_to_nickname($openid) { -+ function openid_to_nickname($openid) { -hunk ./actions/finishopenidlogin.php 352 -- return $this->xri_to_nickname($openid); -- } else { -- return $this->url_to_nickname($openid); -- } -- } -+ return $this->xri_to_nickname($openid); -+ } else { -+ return $this->url_to_nickname($openid); -+ } -+ } -hunk ./actions/finishopenidlogin.php 358 -- # We try to use an OpenID URL as a legal Laconica user name in this order -- # 1. Plain hostname, like http://evanp.myopenid.com/ -- # 2. One element in path, like http://profile.typekey.com/EvanProdromou/ -- # or http://getopenid.com/evanprodromou -+ # We try to use an OpenID URL as a legal Laconica user name in this order -+ # 1. Plain hostname, like http://evanp.myopenid.com/ -+ # 2. One element in path, like http://profile.typekey.com/EvanProdromou/ -+ # or http://getopenid.com/evanprodromou -hunk ./actions/finishopenidlogin.php 364 -- static $bad = array('query', 'user', 'password', 'port', 'fragment'); -+ static $bad = array('query', 'user', 'password', 'port', 'fragment'); -hunk ./actions/finishopenidlogin.php 366 -- $parts = parse_url($openid); -+ $parts = parse_url($openid); -hunk ./actions/finishopenidlogin.php 368 -- # If any of these parts exist, this won't work -+ # If any of these parts exist, this won't work -hunk ./actions/finishopenidlogin.php 370 -- foreach ($bad as $badpart) { -- if (array_key_exists($badpart, $parts)) { -- return NULL; -- } -- } -+ foreach ($bad as $badpart) { -+ if (array_key_exists($badpart, $parts)) { -+ return NULL; -+ } -+ } -hunk ./actions/finishopenidlogin.php 376 -- # We just have host and/or path -+ # We just have host and/or path -hunk ./actions/finishopenidlogin.php 378 -- # If it's just a host... -- if (array_key_exists('host', $parts) && -- (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0)) -- { -- $hostparts = explode('.', $parts['host']); -+ # If it's just a host... -+ if (array_key_exists('host', $parts) && -+ (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0)) -+ { -+ $hostparts = explode('.', $parts['host']); -hunk ./actions/finishopenidlogin.php 384 -- # Try to catch common idiom of nickname.service.tld -+ # Try to catch common idiom of nickname.service.tld -hunk ./actions/finishopenidlogin.php 386 -- if ((count($hostparts) > 2) && -- (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au -- (strcmp($hostparts[0], 'www') != 0)) -- { -- return $this->nicknamize($hostparts[0]); -- } else { -- # Do the whole hostname -- return $this->nicknamize($parts['host']); -- } -- } else { -- if (array_key_exists('path', $parts)) { -- # Strip starting, ending slashes -- $path = preg_replace('@/$@', '', $parts['path']); -- $path = preg_replace('@^/@', '', $path); -- if (strpos($path, '/') === false) { -- return $this->nicknamize($path); -- } -- } -- } -+ if ((count($hostparts) > 2) && -+ (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au -+ (strcmp($hostparts[0], 'www') != 0)) -+ { -+ return $this->nicknamize($hostparts[0]); -+ } else { -+ # Do the whole hostname -+ return $this->nicknamize($parts['host']); -+ } -+ } else { -+ if (array_key_exists('path', $parts)) { -+ # Strip starting, ending slashes -+ $path = preg_replace('@/$@', '', $parts['path']); -+ $path = preg_replace('@^/@', '', $path); -+ if (strpos($path, '/') === false) { -+ return $this->nicknamize($path); -+ } -+ } -+ } +- return NULL; ++ return null; +hunk ./actions/finishopenidlogin.php 372 +- return NULL; ++ return null; hunk ./actions/finishopenidlogin.php 406 -- return NULL; -- } -+ return NULL; -+ } -hunk ./actions/finishopenidlogin.php 409 -- function xri_to_nickname($xri) { -- $base = $this->xri_base($xri); -+ function xri_to_nickname($xri) { -+ $base = $this->xri_base($xri); -hunk ./actions/finishopenidlogin.php 412 -- if (!$base) { -- return NULL; -- } else { -- # =evan.prodromou -- # or @gratis*evan.prodromou -- $parts = explode('*', substr($base, 1)); -- return $this->nicknamize(array_pop($parts)); -- } -- } -+ if (!$base) { -+ return NULL; -+ } else { -+ # =evan.prodromou -+ # or @gratis*evan.prodromou -+ $parts = explode('*', substr($base, 1)); -+ return $this->nicknamize(array_pop($parts)); -+ } -+ } -hunk ./actions/finishopenidlogin.php 422 -- function xri_base($xri) { -- if (substr($xri, 0, 6) == 'xri://') { -- return substr($xri, 6); -- } else { -- return $xri; -- } -- } -+ function xri_base($xri) { -+ if (substr($xri, 0, 6) == 'xri://') { -+ return substr($xri, 6); -+ } else { -+ return $xri; -+ } -+ } -hunk ./actions/finishopenidlogin.php 430 -- # Given a string, try to make it work as a nickname -+ # Given a string, try to make it work as a nickname -hunk ./actions/finishopenidlogin.php 432 -- function nicknamize($str) { -- $str = preg_replace('/\W/', '', $str); -- return strtolower($str); -- } -+ function nicknamize($str) { -+ $str = preg_replace('/\W/', '', $str); -+ return strtolower($str); -+ } -hunk ./actions/finishremotesubscribe.php 26 -- function handle($args) { -+ function handle($args) { -hunk ./actions/finishremotesubscribe.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/finishremotesubscribe.php 30 -- if (common_logged_in()) { -- common_user_error(_('You can use the local subscription!')); -- return; -- } -+ if (common_logged_in()) { -+ common_user_error(_('You can use the local subscription!')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 35 -- $omb = $_SESSION['oauth_authorization_request']; -+ $omb = $_SESSION['oauth_authorization_request']; -hunk ./actions/finishremotesubscribe.php 37 -- if (!$omb) { -- common_user_error(_('Not expecting this response!')); -- return; -- } -+ if (!$omb) { -+ common_user_error(_('Not expecting this response!')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 42 -- common_debug('stored request: '.print_r($omb,true), __FILE__); -+ common_debug('stored request: '.print_r($omb,true), __FILE__); -hunk ./actions/finishremotesubscribe.php 44 -- common_remove_magic_from_request(); -- $req = OAuthRequest::from_request(); -+ common_remove_magic_from_request(); -+ $req = OAuthRequest::from_request(); -hunk ./actions/finishremotesubscribe.php 47 -- $token = $req->get_parameter('oauth_token'); -+ $token = $req->get_parameter('oauth_token'); -hunk ./actions/finishremotesubscribe.php 49 -- # I think this is the success metric -+ # I think this is the success metric -hunk ./actions/finishremotesubscribe.php 51 -- if ($token != $omb['token']) { -- common_user_error(_('Not authorized.')); -- return; -- } -+ if ($token != $omb['token']) { -+ common_user_error(_('Not authorized.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 56 -- $version = $req->get_parameter('omb_version'); -+ $version = $req->get_parameter('omb_version'); -hunk ./actions/finishremotesubscribe.php 58 -- if ($version != OMB_VERSION_01) { -- common_user_error(_('Unknown version of OMB protocol.')); -- return; -- } -+ if ($version != OMB_VERSION_01) { -+ common_user_error(_('Unknown version of OMB protocol.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 63 -- $nickname = $req->get_parameter('omb_listener_nickname'); -+ $nickname = $req->get_parameter('omb_listener_nickname'); -hunk ./actions/finishremotesubscribe.php 65 -- if (!$nickname) { -- common_user_error(_('No nickname provided by remote server.')); -- return; -- } -+ if (!$nickname) { -+ common_user_error(_('No nickname provided by remote server.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 70 -- $profile_url = $req->get_parameter('omb_listener_profile'); -+ $profile_url = $req->get_parameter('omb_listener_profile'); -hunk ./actions/finishremotesubscribe.php 72 -- if (!$profile_url) { -- common_user_error(_('No profile URL returned by server.')); -- return; -- } -+ if (!$profile_url) { -+ common_user_error(_('No profile URL returned by server.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 77 -- if (!Validate::uri($profile_url, array('allowed_schemes' => array('http', 'https')))) { -- common_user_error(_('Invalid profile URL returned by server.')); -- return; -- } -+ if (!Validate::uri($profile_url, array('allowed_schemes' => array('http', 'https')))) { -+ common_user_error(_('Invalid profile URL returned by server.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 82 -- if ($profile_url == common_local_url('showstream', array('nickname' => $nickname))) { -- common_user_error(_('You can use the local subscription!')); -- return; -- } -+ if ($profile_url == common_local_url('showstream', array('nickname' => $nickname))) { -+ common_user_error(_('You can use the local subscription!')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 87 -- common_debug('listenee: "'.$omb['listenee'].'"', __FILE__); -+ common_debug('listenee: "'.$omb['listenee'].'"', __FILE__); -hunk ./actions/finishremotesubscribe.php 89 -- $user = User::staticGet('nickname', $omb['listenee']); -+ $user = User::staticGet('nickname', $omb['listenee']); -hunk ./actions/finishremotesubscribe.php 91 -- if (!$user) { -- common_user_error(_('User being listened to doesn\'t exist.')); -- return; -- } -+ if (!$user) { -+ common_user_error(_('User being listened to doesn\'t exist.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 96 -- $other = User::staticGet('uri', $omb['listener']); -+ $other = User::staticGet('uri', $omb['listener']); -hunk ./actions/finishremotesubscribe.php 98 -- if ($other) { -- common_user_error(_('You can use the local subscription!')); -- return; -- } -+ if ($other) { -+ common_user_error(_('You can use the local subscription!')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 103 -- $fullname = $req->get_parameter('omb_listener_fullname'); -- $homepage = $req->get_parameter('omb_listener_homepage'); -- $bio = $req->get_parameter('omb_listener_bio'); -- $location = $req->get_parameter('omb_listener_location'); -- $avatar_url = $req->get_parameter('omb_listener_avatar'); -+ $fullname = $req->get_parameter('omb_listener_fullname'); -+ $homepage = $req->get_parameter('omb_listener_homepage'); -+ $bio = $req->get_parameter('omb_listener_bio'); -+ $location = $req->get_parameter('omb_listener_location'); -+ $avatar_url = $req->get_parameter('omb_listener_avatar'); -hunk ./actions/finishremotesubscribe.php 109 -- list($newtok, $newsecret) = $this->access_token($omb); -+ list($newtok, $newsecret) = $this->access_token($omb); -hunk ./actions/finishremotesubscribe.php 111 -- if (!$newtok || !$newsecret) { -- common_user_error(_('Couldn\'t convert request tokens to access tokens.')); -- return; -- } -+ if (!$newtok || !$newsecret) { -+ common_user_error(_('Couldn\'t convert request tokens to access tokens.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 116 -- # XXX: possible attack point; subscribe and return someone else's profile URI -+ # XXX: possible attack point; subscribe and return someone else's profile URI -hunk ./actions/finishremotesubscribe.php 118 -- $remote = Remote_profile::staticGet('uri', $omb['listener']); -+ $remote = Remote_profile::staticGet('uri', $omb['listener']); -hunk ./actions/finishremotesubscribe.php 120 -- if ($remote) { -- $exists = true; -- $profile = Profile::staticGet($remote->id); -- $orig_remote = clone($remote); -- $orig_profile = clone($profile); -- # XXX: compare current postNotice and updateProfile URLs to the ones -- # stored in the DB to avoid (possibly...) above attack -- } else { -- $exists = false; -- $remote = new Remote_profile(); -- $remote->uri = $omb['listener']; -- $profile = new Profile(); -- } -+ if ($remote) { -+ $exists = true; -+ $profile = Profile::staticGet($remote->id); -+ $orig_remote = clone($remote); -+ $orig_profile = clone($profile); -+ # XXX: compare current postNotice and updateProfile URLs to the ones -+ # stored in the DB to avoid (possibly...) above attack -+ } else { -+ $exists = false; -+ $remote = new Remote_profile(); -+ $remote->uri = $omb['listener']; -+ $profile = new Profile(); -+ } -hunk ./actions/finishremotesubscribe.php 134 -- $profile->nickname = $nickname; -- $profile->profileurl = $profile_url; -+ $profile->nickname = $nickname; -+ $profile->profileurl = $profile_url; -hunk ./actions/finishremotesubscribe.php 137 -- if ($fullname) { -- $profile->fullname = $fullname; -- } -- if ($homepage) { -- $profile->homepage = $homepage; -- } -- if ($bio) { -- $profile->bio = $bio; -- } -- if ($location) { -- $profile->location = $location; -- } -+ if ($fullname) { -+ $profile->fullname = $fullname; -+ } -+ if ($homepage) { -+ $profile->homepage = $homepage; -+ } -+ if ($bio) { -+ $profile->bio = $bio; -+ } -+ if ($location) { -+ $profile->location = $location; -+ } -hunk ./actions/finishremotesubscribe.php 150 -- if ($exists) { -- $profile->update($orig_profile); -- } else { -- $profile->created = DB_DataObject_Cast::dateTime(); # current time -- $id = $profile->insert(); -- if (!$id) { -- common_server_error(_('Error inserting new profile')); -- return; -- } -- $remote->id = $id; -- } -+ if ($exists) { -+ $profile->update($orig_profile); -+ } else { -+ $profile->created = DB_DataObject_Cast::dateTime(); # current time -+ $id = $profile->insert(); -+ if (!$id) { -+ common_server_error(_('Error inserting new profile')); -+ return; -+ } -+ $remote->id = $id; -+ } -hunk ./actions/finishremotesubscribe.php 162 -- if ($avatar_url) { -- if (!$this->add_avatar($profile, $avatar_url)) { -- common_server_error(_('Error inserting avatar')); -- return; -- } -- } -+ if ($avatar_url) { -+ if (!$this->add_avatar($profile, $avatar_url)) { -+ common_server_error(_('Error inserting avatar')); -+ return; -+ } -+ } -hunk ./actions/finishremotesubscribe.php 169 -- $remote->postnoticeurl = $omb['post_notice_url']; -- $remote->updateprofileurl = $omb['update_profile_url']; -+ $remote->postnoticeurl = $omb['post_notice_url']; -+ $remote->updateprofileurl = $omb['update_profile_url']; -hunk ./actions/finishremotesubscribe.php 172 -- if ($exists) { -- if (!$remote->update($orig_remote)) { -- common_server_error(_('Error updating remote profile')); -- return; -- } -- } else { -- $remote->created = DB_DataObject_Cast::dateTime(); # current time -- if (!$remote->insert()) { -- common_server_error(_('Error inserting remote profile')); -- return; -- } -- } -+ if ($exists) { -+ if (!$remote->update($orig_remote)) { -+ common_server_error(_('Error updating remote profile')); -+ return; -+ } -+ } else { -+ $remote->created = DB_DataObject_Cast::dateTime(); # current time -+ if (!$remote->insert()) { -+ common_server_error(_('Error inserting remote profile')); -+ return; -+ } -+ } -hunk ./actions/finishremotesubscribe.php 190 -- $sub = new Subscription(); -+ $sub = new Subscription(); -hunk ./actions/finishremotesubscribe.php 192 -- $sub->subscriber = $remote->id; -- $sub->subscribed = $user->id; -+ $sub->subscriber = $remote->id; -+ $sub->subscribed = $user->id; -hunk ./actions/finishremotesubscribe.php 205 -- $sub->token = $newtok; -- $sub->secret = $newsecret; -+ $sub->token = $newtok; -+ $sub->secret = $newsecret; -hunk ./actions/finishremotesubscribe.php 214 -- if (!$result) { -+ if (!$result) { -hunk ./actions/finishremotesubscribe.php 216 -- common_user_error(_('Couldn\'t insert new subscription.')); -- return; -- } -+ common_user_error(_('Couldn\'t insert new subscription.')); -+ return; -+ } -hunk ./actions/finishremotesubscribe.php 220 -- # Notify user, if necessary -+ # Notify user, if necessary -hunk ./actions/finishremotesubscribe.php 222 -- mail_subscribe_notify_profile($user, $profile); -+ mail_subscribe_notify_profile($user, $profile); -hunk ./actions/finishremotesubscribe.php 224 -- # Clear the data -- unset($_SESSION['oauth_authorization_request']); -+ # Clear the data -+ unset($_SESSION['oauth_authorization_request']); -hunk ./actions/finishremotesubscribe.php 227 -- # If we show subscriptions in reverse chron order, this should -- # show up close to the top of the page -+ # If we show subscriptions in reverse chron order, this should -+ # show up close to the top of the page -hunk ./actions/finishremotesubscribe.php 230 -- common_redirect(common_local_url('subscribers', array('nickname' => -- $user->nickname))); -- } -+ common_redirect(common_local_url('subscribers', array('nickname' => -+ $user->nickname))); -+ } -hunk ./actions/finishremotesubscribe.php 234 -- function add_avatar($profile, $url) { -- $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar'); -- copy($url, $temp_filename); -- return $profile->setOriginal($temp_filename); -- } -+ function add_avatar($profile, $url) { -+ $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar'); -+ copy($url, $temp_filename); -+ return $profile->setOriginal($temp_filename); -+ } -hunk ./actions/finishremotesubscribe.php 240 -- function access_token($omb) { -+ function access_token($omb) { -hunk ./actions/finishremotesubscribe.php 242 -- common_debug('starting request for access token', __FILE__); -+ common_debug('starting request for access token', __FILE__); -hunk ./actions/finishremotesubscribe.php 244 -- $con = omb_oauth_consumer(); -- $tok = new OAuthToken($omb['token'], $omb['secret']); -+ $con = omb_oauth_consumer(); -+ $tok = new OAuthToken($omb['token'], $omb['secret']); -hunk ./actions/finishremotesubscribe.php 247 -- common_debug('using request token "'.$tok.'"', __FILE__); -+ common_debug('using request token "'.$tok.'"', __FILE__); -hunk ./actions/finishremotesubscribe.php 249 -- $url = $omb['access_token_url']; -+ $url = $omb['access_token_url']; -hunk ./actions/finishremotesubscribe.php 251 -- common_debug('using access token url "'.$url.'"', __FILE__); -+ common_debug('using access token url "'.$url.'"', __FILE__); -hunk ./actions/finishremotesubscribe.php 253 -- # XXX: Is this the right thing to do? Strip off GET params and make them -- # POST params? Seems wrong to me. -+ # XXX: Is this the right thing to do? Strip off GET params and make them -+ # POST params? Seems wrong to me. -hunk ./actions/finishremotesubscribe.php 256 -- $parsed = parse_url($url); -- $params = array(); -- parse_str($parsed['query'], $params); -+ $parsed = parse_url($url); -+ $params = array(); -+ parse_str($parsed['query'], $params); -hunk ./actions/finishremotesubscribe.php 260 -- $req = OAuthRequest::from_consumer_and_token($con, $tok, "POST", $url, $params); -+ $req = OAuthRequest::from_consumer_and_token($con, $tok, "POST", $url, $params); -hunk ./actions/finishremotesubscribe.php 262 -- $req->set_parameter('omb_version', OMB_VERSION_01); -+ $req->set_parameter('omb_version', OMB_VERSION_01); -hunk ./actions/finishremotesubscribe.php 264 -- # XXX: test to see if endpoint accepts this signature method -+ # XXX: test to see if endpoint accepts this signature method -hunk ./actions/finishremotesubscribe.php 266 -- $req->sign_request(omb_hmac_sha1(), $con, $tok); -+ $req->sign_request(omb_hmac_sha1(), $con, $tok); -hunk ./actions/finishremotesubscribe.php 268 -- # We re-use this tool's fetcher, since it's pretty good -+ # We re-use this tool's fetcher, since it's pretty good -hunk ./actions/finishremotesubscribe.php 270 -- common_debug('posting to access token url "'.$req->get_normalized_http_url().'"', __FILE__); -- common_debug('posting request data "'.$req->to_postdata().'"', __FILE__); -+ common_debug('posting to access token url "'.$req->get_normalized_http_url().'"', __FILE__); -+ common_debug('posting request data "'.$req->to_postdata().'"', __FILE__); -hunk ./actions/finishremotesubscribe.php 273 -- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); -- $result = $fetcher->post($req->get_normalized_http_url(), -- $req->to_postdata(), -+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); -+ $result = $fetcher->post($req->get_normalized_http_url(), -+ $req->to_postdata(), -hunk ./actions/finishremotesubscribe.php 278 -- common_debug('got result: "'.print_r($result,TRUE).'"', __FILE__); -+ common_debug('got result: "'.print_r($result,TRUE).'"', __FILE__); -hunk ./actions/finishremotesubscribe.php 280 -- if ($result->status != 200) { -- return NULL; -- } -+ if ($result->status != 200) { -+ return NULL; -+ } -hunk ./actions/finishremotesubscribe.php 284 -- parse_str($result->body, $return); -+ parse_str($result->body, $return); -hunk ./actions/finishremotesubscribe.php 286 -- return array($return['oauth_token'], $return['oauth_token_secret']); -- } -+ return array($return['oauth_token'], $return['oauth_token_secret']); -+ } -hunk ./actions/foaf.php 28 -- function is_readonly() { -- return true; -- } -+ function is_readonly() { -+ return true; -+ } -hunk ./actions/foaf.php 32 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/foaf.php 35 -- $nickname = $this->trimmed('nickname'); -+ $nickname = $this->trimmed('nickname'); -hunk ./actions/foaf.php 37 -- $user = User::staticGet('nickname', $nickname); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/foaf.php 39 -- if (!$user) { -- common_user_error(_('No such user.'), 404); -- return; -- } -+ if (!$user) { -+ common_user_error(_('No such user.'), 404); -+ return; -+ } -hunk ./actions/foaf.php 44 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/foaf.php 46 -- if (!$profile) { -- common_server_error(_('User has no profile.'), 500); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.'), 500); -+ return; -+ } -hunk ./actions/foaf.php 51 -- header('Content-Type: application/rdf+xml'); -+ header('Content-Type: application/rdf+xml'); -hunk ./actions/foaf.php 53 -- common_start_xml(); -- common_element_start('rdf:RDF', array('xmlns:rdf' => -- 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', -- 'xmlns:rdfs' => -- 'http://www.w3.org/2000/01/rdf-schema#', -- 'xmlns:geo' => -- 'http://www.w3.org/2003/01/geo/wgs84_pos#', -- 'xmlns' => 'http://xmlns.com/foaf/0.1/')); -+ common_start_xml(); -+ common_element_start('rdf:RDF', array('xmlns:rdf' => -+ 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', -+ 'xmlns:rdfs' => -+ 'http://www.w3.org/2000/01/rdf-schema#', -+ 'xmlns:geo' => -+ 'http://www.w3.org/2003/01/geo/wgs84_pos#', -+ 'xmlns' => 'http://xmlns.com/foaf/0.1/')); -hunk ./actions/foaf.php 62 -- # This is the document about the user -+ # This is the document about the user -hunk ./actions/foaf.php 64 -- $this->show_ppd('', $user->uri); -+ $this->show_ppd('', $user->uri); -hunk ./actions/foaf.php 66 -- # XXX: might not be a person -- common_element_start('Person', array('rdf:about' => -- $user->uri)); -- common_element('mbox_sha1sum', NULL, sha1('mailto:' . $user->email)); -- if ($profile->fullname) { -- common_element('name', NULL, $profile->fullname); -- } -- if ($profile->homepage) { -- common_element('homepage', array('rdf:resource' => $profile->homepage)); -- } -- if ($profile->bio) { -- common_element('rdfs:comment', NULL, $profile->bio); -- } -- # XXX: more structured location data -- if ($profile->location) { -- common_element_start('based_near'); -- common_element_start('geo:SpatialThing'); -- common_element('name', NULL, $profile->location); -- common_element_end('geo:SpatialThing'); -- common_element_end('based_near'); -- } -+ # XXX: might not be a person -+ common_element_start('Person', array('rdf:about' => -+ $user->uri)); -+ common_element('mbox_sha1sum', NULL, sha1('mailto:' . $user->email)); -+ if ($profile->fullname) { -+ common_element('name', NULL, $profile->fullname); -+ } -+ if ($profile->homepage) { -+ common_element('homepage', array('rdf:resource' => $profile->homepage)); -+ } -+ if ($profile->bio) { -+ common_element('rdfs:comment', NULL, $profile->bio); -+ } -+ # XXX: more structured location data -+ if ($profile->location) { -+ common_element_start('based_near'); -+ common_element_start('geo:SpatialThing'); -+ common_element('name', NULL, $profile->location); -+ common_element_end('geo:SpatialThing'); -+ common_element_end('based_near'); -+ } -hunk ./actions/foaf.php 88 -- $this->show_microblogging_account($profile, common_root_url()); -+ $this->show_microblogging_account($profile, common_root_url()); -hunk ./actions/foaf.php 90 -- $avatar = $profile->getOriginalAvatar(); -+ $avatar = $profile->getOriginalAvatar(); -hunk ./actions/foaf.php 92 -- if ($avatar) { -- common_element_start('img'); -- common_element_start('Image', array('rdf:about' => $avatar->url)); -- foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) { -- $scaled = $profile->getAvatar($size); -- if (!$scaled->original) { # sometimes the original has one of our scaled sizes -- common_element_start('thumbnail'); -- common_element('Image', array('rdf:about' => $scaled->url)); -- common_element_end('thumbnail'); -- } -- } -- common_element_end('Image'); -- common_element_end('img'); -- } -+ if ($avatar) { -+ common_element_start('img'); -+ common_element_start('Image', array('rdf:about' => $avatar->url)); -+ foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) { -+ $scaled = $profile->getAvatar($size); -+ if (!$scaled->original) { # sometimes the original has one of our scaled sizes -+ common_element_start('thumbnail'); -+ common_element('Image', array('rdf:about' => $scaled->url)); -+ common_element_end('thumbnail'); -+ } -+ } -+ common_element_end('Image'); -+ common_element_end('img'); -+ } -hunk ./actions/foaf.php 107 -- # Get people user is subscribed to -+ # Get people user is subscribed to -hunk ./actions/foaf.php 109 -- $person = array(); -+ $person = array(); -hunk ./actions/foaf.php 111 -- $sub = new Subscription(); -- $sub->subscriber = $profile->id; -- $sub->whereAdd('subscriber != subscribed'); -- -- if ($sub->find()) { -- while ($sub->fetch()) { -- if ($sub->token) { -- $other = Remote_profile::staticGet('id', $sub->subscribed); -- } else { -- $other = User::staticGet('id', $sub->subscribed); -- } -- if (!$other) { -- common_debug('Got a bad subscription: '.print_r($sub,TRUE)); -- continue; -- } -- common_element('knows', array('rdf:resource' => $other->uri)); -- $person[$other->uri] = array(LISTENEE, $other); -- } -- } -+ $sub = new Subscription(); -+ $sub->subscriber = $profile->id; -+ $sub->whereAdd('subscriber != subscribed'); -+ -+ if ($sub->find()) { -+ while ($sub->fetch()) { -+ if ($sub->token) { -+ $other = Remote_profile::staticGet('id', $sub->subscribed); -+ } else { -+ $other = User::staticGet('id', $sub->subscribed); -+ } -+ if (!$other) { -+ common_debug('Got a bad subscription: '.print_r($sub,TRUE)); -+ continue; -+ } -+ common_element('knows', array('rdf:resource' => $other->uri)); -+ $person[$other->uri] = array(LISTENEE, $other); -+ } -+ } -hunk ./actions/foaf.php 131 -- # Get people who subscribe to user -+ # Get people who subscribe to user -hunk ./actions/foaf.php 133 -- $sub = new Subscription(); -- $sub->subscribed = $profile->id; -- $sub->whereAdd('subscriber != subscribed'); -+ $sub = new Subscription(); -+ $sub->subscribed = $profile->id; -+ $sub->whereAdd('subscriber != subscribed'); -hunk ./actions/foaf.php 137 -- if ($sub->find()) { -- while ($sub->fetch()) { -- if ($sub->token) { -- $other = Remote_profile::staticGet('id', $sub->subscriber); -- } else { -- $other = User::staticGet('id', $sub->subscriber); -- } -- if (!$other) { -- common_debug('Got a bad subscription: '.print_r($sub,TRUE)); -- continue; -- } -- if (array_key_exists($other->uri, $person)) { -- $person[$other->uri][0] = BOTH; -- } else { -- $person[$other->uri] = array(LISTENER, $other); -- } -- } -- } -+ if ($sub->find()) { -+ while ($sub->fetch()) { -+ if ($sub->token) { -+ $other = Remote_profile::staticGet('id', $sub->subscriber); -+ } else { -+ $other = User::staticGet('id', $sub->subscriber); -+ } -+ if (!$other) { -+ common_debug('Got a bad subscription: '.print_r($sub,TRUE)); -+ continue; -+ } -+ if (array_key_exists($other->uri, $person)) { -+ $person[$other->uri][0] = BOTH; -+ } else { -+ $person[$other->uri] = array(LISTENER, $other); -+ } -+ } -+ } -hunk ./actions/foaf.php 156 -- common_element_end('Person'); -+ common_element_end('Person'); -hunk ./actions/foaf.php 158 -- foreach ($person as $uri => $p) { -- $foaf_url = NULL; -- if ($p[1] instanceof User) { -- $foaf_url = common_local_url('foaf', array('nickname' => $p[1]->nickname)); -- } -- $profile = Profile::staticGet($p[1]->id); -- common_element_start('Person', array('rdf:about' => $uri)); -- if ($p[0] == LISTENER || $p[0] == BOTH) { -- common_element('knows', array('rdf:resource' => $user->uri)); -- } -- $this->show_microblogging_account($profile, ($p[1] instanceof User) ? -- common_root_url() : NULL); -- if ($foaf_url) { -- common_element('rdfs:seeAlso', array('rdf:resource' => $foaf_url)); -- } -- common_element_end('Person'); -- if ($foaf_url) { -- $this->show_ppd($foaf_url, $uri); -- } -- } -+ foreach ($person as $uri => $p) { -+ $foaf_url = NULL; -+ if ($p[1] instanceof User) { -+ $foaf_url = common_local_url('foaf', array('nickname' => $p[1]->nickname)); -+ } -+ $profile = Profile::staticGet($p[1]->id); -+ common_element_start('Person', array('rdf:about' => $uri)); -+ if ($p[0] == LISTENER || $p[0] == BOTH) { -+ common_element('knows', array('rdf:resource' => $user->uri)); -+ } -+ $this->show_microblogging_account($profile, ($p[1] instanceof User) ? -+ common_root_url() : NULL); -+ if ($foaf_url) { -+ common_element('rdfs:seeAlso', array('rdf:resource' => $foaf_url)); -+ } -+ common_element_end('Person'); -+ if ($foaf_url) { -+ $this->show_ppd($foaf_url, $uri); -+ } -+ } -hunk ./actions/foaf.php 179 -- common_element_end('rdf:RDF'); -- } -+ common_element_end('rdf:RDF'); -+ } -hunk ./actions/foaf.php 182 -- function show_ppd($foaf_url, $person_uri) { -- common_element_start('PersonalProfileDocument', array('rdf:about' => $foaf_url)); -- common_element('maker', array('rdf:resource' => $person_uri)); -- common_element('primaryTopic', array('rdf:resource' => $person_uri)); -- common_element_end('PersonalProfileDocument'); -- } -+ function show_ppd($foaf_url, $person_uri) { -+ common_element_start('PersonalProfileDocument', array('rdf:about' => $foaf_url)); -+ common_element('maker', array('rdf:resource' => $person_uri)); -+ common_element('primaryTopic', array('rdf:resource' => $person_uri)); -+ common_element_end('PersonalProfileDocument'); -+ } +- return NULL; ++ return null; +hunk ./actions/finishopenidlogin.php 413 +- return NULL; ++ return null; +hunk ./actions/finishremotesubscribe.php 281 +- return NULL; ++ return null; +hunk ./actions/foaf.php 69 +- common_element('mbox_sha1sum', NULL, sha1('mailto:' . $user->email)); ++ common_element('mbox_sha1sum', null, sha1('mailto:' . $user->email)); +hunk ./actions/foaf.php 71 +- common_element('name', NULL, $profile->fullname); ++ common_element('name', null, $profile->fullname); +hunk ./actions/foaf.php 77 +- common_element('rdfs:comment', NULL, $profile->bio); ++ common_element('rdfs:comment', null, $profile->bio); +hunk ./actions/foaf.php 83 +- common_element('name', NULL, $profile->location); ++ common_element('name', null, $profile->location); +hunk ./actions/foaf.php 159 +- $foaf_url = NULL; ++ $foaf_url = null; +hunk ./actions/foaf.php 169 +- common_root_url() : NULL); ++ common_root_url() : null); hunk ./actions/foaf.php 189 -- function show_microblogging_account($profile, $service=NULL) { -- # Their account -- common_element_start('holdsAccount'); -- common_element_start('OnlineAccount'); -- if ($service) { -- common_element('accountServiceHomepage', array('rdf:resource' => -- $service)); -- } -- common_element('accountName', NULL, $profile->nickname); -- common_element('homepage', array('rdf:resource' => $profile->profileurl)); -- common_element_end('OnlineAccount'); -- common_element_end('holdsAccount'); -- } -+ function show_microblogging_account($profile, $service=NULL) { -+ # Their account -+ common_element_start('holdsAccount'); -+ common_element_start('OnlineAccount'); -+ if ($service) { -+ common_element('accountServiceHomepage', array('rdf:resource' => -+ $service)); -+ } -+ common_element('accountName', NULL, $profile->nickname); -+ common_element('homepage', array('rdf:resource' => $profile->profileurl)); -+ common_element_end('OnlineAccount'); -+ common_element_end('holdsAccount'); -+ } -hunk ./actions/imsettings.php 27 -- function get_instructions() { -- return _('You can send and receive notices through Jabber/GTalk [instant messages](%%doc.im%%). Configure your address and settings below.'); -- } -+ function get_instructions() { -+ return _('You can send and receive notices through Jabber/GTalk [instant messages](%%doc.im%%). Configure your address and settings below.'); -+ } +- function show_microblogging_account($profile, $service=NULL) { ++ function show_microblogging_account($profile, $service=null) { +hunk ./actions/foaf.php 197 +- common_element('accountName', NULL, $profile->nickname); ++ common_element('accountName', null, $profile->nickname); hunk ./actions/imsettings.php 31 -- function show_form($msg=NULL, $success=false) { -- $user = common_current_user(); -- $this->form_header(_('IM Settings'), $msg, $success); -- common_element_start('form', array('method' => 'post', -- 'id' => 'imsettings', -- 'action' => -- common_local_url('imsettings'))); -- common_hidden('token', common_session_token()); -+ function show_form($msg=NULL, $success=false) { -+ $user = common_current_user(); -+ $this->form_header(_('IM Settings'), $msg, $success); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'imsettings', -+ 'action' => -+ common_local_url('imsettings'))); -+ common_hidden('token', common_session_token()); +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { hunk ./actions/imsettings.php 40 -- common_element('h2', NULL, _('Address')); -+ common_element('h2', NULL, _('Address')); -hunk ./actions/imsettings.php 42 -- if ($user->jabber) { -- common_element_start('p'); -- common_element('span', 'address confirmed', $user->jabber); -- common_element('span', 'input_instructions', -- _('Current confirmed Jabber/GTalk address.')); -- common_hidden('jabber', $user->jabber); -- common_element_end('p'); -- common_submit('remove', _('Remove')); -- } else { -- $confirm = $this->get_confirmation(); -- if ($confirm) { -- common_element_start('p'); -- common_element('span', 'address unconfirmed', $confirm->address); -- common_element('span', 'input_instructions', -- sprintf(_('Awaiting confirmation on this address. Check your Jabber/GTalk account for a message with further instructions. (Did you add %s to your buddy list?)'), jabber_daemon_address())); -- common_hidden('jabber', $confirm->address); -- common_element_end('p'); -- common_submit('cancel', _('Cancel')); -- } else { -- common_input('jabber', _('IM Address'), -- ($this->arg('jabber')) ? $this->arg('jabber') : NULL, -- sprintf(_('Jabber or GTalk address, like "UserName@example.org". First, make sure to add %s to your buddy list in your IM client or on GTalk.'), jabber_daemon_address())); -- common_submit('add', _('Add')); -- } -- } -+ if ($user->jabber) { -+ common_element_start('p'); -+ common_element('span', 'address confirmed', $user->jabber); -+ common_element('span', 'input_instructions', -+ _('Current confirmed Jabber/GTalk address.')); -+ common_hidden('jabber', $user->jabber); -+ common_element_end('p'); -+ common_submit('remove', _('Remove')); -+ } else { -+ $confirm = $this->get_confirmation(); -+ if ($confirm) { -+ common_element_start('p'); -+ common_element('span', 'address unconfirmed', $confirm->address); -+ common_element('span', 'input_instructions', -+ sprintf(_('Awaiting confirmation on this address. Check your Jabber/GTalk account for a message with further instructions. (Did you add %s to your buddy list?)'), jabber_daemon_address())); -+ common_hidden('jabber', $confirm->address); -+ common_element_end('p'); -+ common_submit('cancel', _('Cancel')); -+ } else { -+ common_input('jabber', _('IM Address'), -+ ($this->arg('jabber')) ? $this->arg('jabber') : NULL, -+ sprintf(_('Jabber or GTalk address, like "UserName@example.org". First, make sure to add %s to your buddy list in your IM client or on GTalk.'), jabber_daemon_address())); -+ common_submit('add', _('Add')); -+ } -+ } +- common_element('h2', NULL, _('Address')); ++ common_element('h2', null, _('Address')); +hunk ./actions/imsettings.php 62 +- ($this->arg('jabber')) ? $this->arg('jabber') : NULL, ++ ($this->arg('jabber')) ? $this->arg('jabber') : null, hunk ./actions/imsettings.php 68 -- common_element('h2', NULL, _('Preferences')); -+ common_element('h2', NULL, _('Preferences')); -hunk ./actions/imsettings.php 70 -- common_checkbox('jabbernotify', -- _('Send me notices through Jabber/GTalk.'), -- $user->jabbernotify); -- common_checkbox('updatefrompresence', -- _('Post a notice when my Jabber/GTalk status changes.'), -- $user->updatefrompresence); -- common_checkbox('jabberreplies', -- _('Send me replies through Jabber/GTalk from people I\'m not subscribed to.'), -- $user->jabberreplies); -- common_checkbox('jabbermicroid', -- _('Publish a MicroID for my Jabber/GTalk address.'), -- $user->jabbermicroid); -- common_submit('save', _('Save')); -+ common_checkbox('jabbernotify', -+ _('Send me notices through Jabber/GTalk.'), -+ $user->jabbernotify); -+ common_checkbox('updatefrompresence', -+ _('Post a notice when my Jabber/GTalk status changes.'), -+ $user->updatefrompresence); -+ common_checkbox('jabberreplies', -+ _('Send me replies through Jabber/GTalk from people I\'m not subscribed to.'), -+ $user->jabberreplies); -+ common_checkbox('jabbermicroid', -+ _('Publish a MicroID for my Jabber/GTalk address.'), -+ $user->jabbermicroid); -+ common_submit('save', _('Save')); -hunk ./actions/imsettings.php 84 -- common_element_end('form'); -- common_show_footer(); -- } -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/imsettings.php 88 -- function get_confirmation() { -- $user = common_current_user(); -- $confirm = new Confirm_address(); -- $confirm->user_id = $user->id; -- $confirm->address_type = 'jabber'; -- if ($confirm->find(TRUE)) { -- return $confirm; -- } else { -- return NULL; -- } -- } -+ function get_confirmation() { -+ $user = common_current_user(); -+ $confirm = new Confirm_address(); -+ $confirm->user_id = $user->id; -+ $confirm->address_type = 'jabber'; -+ if ($confirm->find(TRUE)) { -+ return $confirm; -+ } else { -+ return NULL; -+ } -+ } -hunk ./actions/imsettings.php 100 -- function handle_post() { -+ function handle_post() { -hunk ./actions/imsettings.php 102 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/imsettings.php 109 -- if ($this->arg('save')) { -- $this->save_preferences(); -- } else if ($this->arg('add')) { -- $this->add_address(); -- } else if ($this->arg('cancel')) { -- $this->cancel_confirmation(); -- } else if ($this->arg('remove')) { -- $this->remove_address(); -- } else { -- $this->show_form(_('Unexpected form submission.')); -- } -- } -+ if ($this->arg('save')) { -+ $this->save_preferences(); -+ } else if ($this->arg('add')) { -+ $this->add_address(); -+ } else if ($this->arg('cancel')) { -+ $this->cancel_confirmation(); -+ } else if ($this->arg('remove')) { -+ $this->remove_address(); -+ } else { -+ $this->show_form(_('Unexpected form submission.')); -+ } -+ } -hunk ./actions/imsettings.php 122 -- function save_preferences() { -+ function save_preferences() { -hunk ./actions/imsettings.php 124 -- $jabbernotify = $this->boolean('jabbernotify'); -- $updatefrompresence = $this->boolean('updatefrompresence'); -- $jabberreplies = $this->boolean('jabberreplies'); -- $jabbermicroid = $this->boolean('jabbermicroid'); -+ $jabbernotify = $this->boolean('jabbernotify'); -+ $updatefrompresence = $this->boolean('updatefrompresence'); -+ $jabberreplies = $this->boolean('jabberreplies'); -+ $jabbermicroid = $this->boolean('jabbermicroid'); -hunk ./actions/imsettings.php 129 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/imsettings.php 131 -- assert(!is_null($user)); # should already be checked -+ assert(!is_null($user)); # should already be checked -hunk ./actions/imsettings.php 133 -- $user->query('BEGIN'); -+ $user->query('BEGIN'); -hunk ./actions/imsettings.php 135 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/imsettings.php 137 -- $user->jabbernotify = $jabbernotify; -- $user->updatefrompresence = $updatefrompresence; -- $user->jabberreplies = $jabberreplies; -- $user->jabbermicroid = $jabbermicroid; -+ $user->jabbernotify = $jabbernotify; -+ $user->updatefrompresence = $updatefrompresence; -+ $user->jabberreplies = $jabberreplies; -+ $user->jabbermicroid = $jabbermicroid; -hunk ./actions/imsettings.php 142 -- $result = $user->update($original); -+ $result = $user->update($original); -hunk ./actions/imsettings.php 144 -- if ($result === FALSE) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } -hunk ./actions/imsettings.php 150 -- $user->query('COMMIT'); -+ $user->query('COMMIT'); -hunk ./actions/imsettings.php 152 -- $this->show_form(_('Preferences saved.'), true); -- } -+ $this->show_form(_('Preferences saved.'), true); -+ } -hunk ./actions/imsettings.php 155 -- function add_address() { -+ function add_address() { -hunk ./actions/imsettings.php 157 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/imsettings.php 159 -- $jabber = $this->trimmed('jabber'); -+ $jabber = $this->trimmed('jabber'); -hunk ./actions/imsettings.php 161 -- # Some validation -+ # Some validation -hunk ./actions/imsettings.php 163 -- if (!$jabber) { -- $this->show_form(_('No Jabber ID.')); -- return; -- } -+ if (!$jabber) { -+ $this->show_form(_('No Jabber ID.')); -+ return; -+ } -hunk ./actions/imsettings.php 168 -- $jabber = jabber_normalize_jid($jabber); -+ $jabber = jabber_normalize_jid($jabber); -hunk ./actions/imsettings.php 170 -- if (!$jabber) { -- $this->show_form(_('Cannot normalize that Jabber ID')); -- return; -- } -- if (!jabber_valid_base_jid($jabber)) { -- $this->show_form(_('Not a valid Jabber ID')); -- return; -- } else if ($user->jabber == $jabber) { -- $this->show_form(_('That is already your Jabber ID.')); -- return; -- } else if ($this->jabber_exists($jabber)) { -- $this->show_form(_('Jabber ID already belongs to another user.')); -- return; -- } -+ if (!$jabber) { -+ $this->show_form(_('Cannot normalize that Jabber ID')); -+ return; -+ } -+ if (!jabber_valid_base_jid($jabber)) { -+ $this->show_form(_('Not a valid Jabber ID')); -+ return; -+ } else if ($user->jabber == $jabber) { -+ $this->show_form(_('That is already your Jabber ID.')); -+ return; -+ } else if ($this->jabber_exists($jabber)) { -+ $this->show_form(_('Jabber ID already belongs to another user.')); -+ return; -+ } -hunk ./actions/imsettings.php 185 -- $confirm = new Confirm_address(); -- $confirm->address = $jabber; -- $confirm->address_type = 'jabber'; -- $confirm->user_id = $user->id; -- $confirm->code = common_confirmation_code(64); -+ $confirm = new Confirm_address(); -+ $confirm->address = $jabber; -+ $confirm->address_type = 'jabber'; -+ $confirm->user_id = $user->id; -+ $confirm->code = common_confirmation_code(64); -hunk ./actions/imsettings.php 191 -- $result = $confirm->insert(); -+ $result = $confirm->insert(); -hunk ./actions/imsettings.php 193 -- if ($result === FALSE) { -- common_log_db_error($confirm, 'INSERT', __FILE__); -- common_server_error(_('Couldn\'t insert confirmation code.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($confirm, 'INSERT', __FILE__); -+ common_server_error(_('Couldn\'t insert confirmation code.')); -+ return; -+ } -hunk ./actions/imsettings.php 199 -- if (!common_config('queue', 'enabled')) { -- jabber_confirm_address($confirm->code, -- $user->nickname, -- $jabber); -- } -+ if (!common_config('queue', 'enabled')) { -+ jabber_confirm_address($confirm->code, -+ $user->nickname, -+ $jabber); -+ } -hunk ./actions/imsettings.php 205 -- $msg = sprintf(_('A confirmation code was sent to the IM address you added. You must approve %s for sending messages to you.'), jabber_daemon_address()); -+ $msg = sprintf(_('A confirmation code was sent to the IM address you added. You must approve %s for sending messages to you.'), jabber_daemon_address()); -hunk ./actions/imsettings.php 207 -- $this->show_form($msg, TRUE); -- } -+ $this->show_form($msg, TRUE); -+ } -hunk ./actions/imsettings.php 210 -- function cancel_confirmation() { -- $jabber = $this->arg('jabber'); -- $confirm = $this->get_confirmation(); -- if (!$confirm) { -- $this->show_form(_('No pending confirmation to cancel.')); -- return; -- } -- if ($confirm->address != $jabber) { -- $this->show_form(_('That is the wrong IM address.')); -- return; -- } -+ function cancel_confirmation() { -+ $jabber = $this->arg('jabber'); -+ $confirm = $this->get_confirmation(); -+ if (!$confirm) { -+ $this->show_form(_('No pending confirmation to cancel.')); -+ return; -+ } -+ if ($confirm->address != $jabber) { -+ $this->show_form(_('That is the wrong IM address.')); -+ return; -+ } -hunk ./actions/imsettings.php 225 -- common_log_db_error($confirm, 'DELETE', __FILE__); -+ common_log_db_error($confirm, 'DELETE', __FILE__); -hunk ./actions/imsettings.php 231 -- } -+ } -hunk ./actions/imsettings.php 233 -- function remove_address() { -+ function remove_address() { -hunk ./actions/imsettings.php 235 -- $user = common_current_user(); -- $jabber = $this->arg('jabber'); -+ $user = common_current_user(); -+ $jabber = $this->arg('jabber'); -hunk ./actions/imsettings.php 238 -- # Maybe an old tab open...? -+ # Maybe an old tab open...? -hunk ./actions/imsettings.php 240 -- if ($user->jabber != $jabber) { -- $this->show_form(_('That is not your Jabber ID.')); -- return; -- } -+ if ($user->jabber != $jabber) { -+ $this->show_form(_('That is not your Jabber ID.')); -+ return; -+ } -hunk ./actions/imsettings.php 245 -- $user->query('BEGIN'); -- $original = clone($user); -- $user->jabber = NULL; -- $result = $user->updateKeys($original); -- if (!$result) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } -- $user->query('COMMIT'); -+ $user->query('BEGIN'); -+ $original = clone($user); -+ $user->jabber = NULL; -+ $result = $user->updateKeys($original); -+ if (!$result) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } -+ $user->query('COMMIT'); -hunk ./actions/imsettings.php 256 -- # XXX: unsubscribe to the old address -+ # XXX: unsubscribe to the old address -hunk ./actions/imsettings.php 258 -- $this->show_form(_('The address was removed.'), TRUE); -- } -+ $this->show_form(_('The address was removed.'), TRUE); -+ } -hunk ./actions/imsettings.php 261 -- function jabber_exists($jabber) { -- $user = common_current_user(); -- $other = User::staticGet('jabber', $jabber); -- if (!$other) { -- return false; -- } else { -- return $other->id != $user->id; -- } -- } -+ function jabber_exists($jabber) { -+ $user = common_current_user(); -+ $other = User::staticGet('jabber', $jabber); -+ if (!$other) { -+ return false; -+ } else { -+ return $other->id != $user->id; -+ } -+ } -hunk ./actions/invite.php 24 -- function is_readonly() { -- return false; -- } -+ function is_readonly() { -+ return false; -+ } -hunk ./actions/invite.php 30 -- if (!common_logged_in()) { -- $this->client_error(sprintf(_('You must be logged in to invite other users to use %s'), -- common_config('site', 'name'))); -- return; -- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $this->send_invitations(); -- } else { -- $this->show_form(); -- } -- } -+ if (!common_logged_in()) { -+ $this->client_error(sprintf(_('You must be logged in to invite other users to use %s'), -+ common_config('site', 'name'))); -+ return; -+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $this->send_invitations(); -+ } else { -+ $this->show_form(); -+ } -+ } -hunk ./actions/invite.php 41 -- function send_invitations() { -+ function send_invitations() { -hunk ./actions/invite.php 43 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/invite.php 50 -- $user = common_current_user(); -- $profile = $user->getProfile(); -+ $user = common_current_user(); -+ $profile = $user->getProfile(); -hunk ./actions/invite.php 53 -- $bestname = $profile->getBestName(); -- $sitename = common_config('site', 'name'); -- $personal = $this->trimmed('personal'); -+ $bestname = $profile->getBestName(); -+ $sitename = common_config('site', 'name'); -+ $personal = $this->trimmed('personal'); -hunk ./actions/invite.php 57 -- $addresses = explode("\n", $this->trimmed('addresses')); -+ $addresses = explode("\n", $this->trimmed('addresses')); -hunk ./actions/invite.php 59 -- foreach ($addresses as $email) { -- $email = trim($email); -- if (!Validate::email($email, true)) { -- $this->show_form(sprintf(_('Invalid email address: %s'), $email)); -- return; -- } -- } -+ foreach ($addresses as $email) { -+ $email = trim($email); -+ if (!Validate::email($email, true)) { -+ $this->show_form(sprintf(_('Invalid email address: %s'), $email)); -+ return; -+ } -+ } -hunk ./actions/invite.php 67 -- $already = array(); -- $subbed = array(); -+ $already = array(); -+ $subbed = array(); -hunk ./actions/invite.php 70 -- foreach ($addresses as $email) { -- $email = common_canonical_email($email); -- $other = User::staticGet('email', $email); -- if ($other) { -- if ($user->isSubscribed($other)) { -- $already[] = $other; -- } else { -- subs_subscribe_to($user, $other); -- $subbed[] = $other; -- } -- } else { -- $sent[] = $email; -- $this->send_invitation($email, $user, $personal); -- } -- } -+ foreach ($addresses as $email) { -+ $email = common_canonical_email($email); -+ $other = User::staticGet('email', $email); -+ if ($other) { -+ if ($user->isSubscribed($other)) { -+ $already[] = $other; -+ } else { -+ subs_subscribe_to($user, $other); -+ $subbed[] = $other; -+ } -+ } else { -+ $sent[] = $email; -+ $this->send_invitation($email, $user, $personal); -+ } -+ } -hunk ./actions/invite.php 86 -- common_show_header(_('Invitation(s) sent')); -- if ($already) { -- common_element('p', NULL, _('You are already subscribed to these users:')); -- common_element_start('ul'); -- foreach ($already as $other) { -- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); -- } -- common_element_end('ul'); -- } -- if ($subbed) { -- common_element('p', NULL, _('These people are already users and you were automatically subscribed to them:')); -- common_element_start('ul'); -- foreach ($subbed as $other) { -- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); -- } -- common_element_end('ul'); -- } -- if ($sent) { -- common_element('p', NULL, _('Invitation(s) sent to the following people:')); -- common_element_start('ul'); -- foreach ($sent as $other) { -- common_element('li', NULL, $other); -- } -- common_element_end('ul'); -- common_element('p', NULL, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!')); -- } -- common_show_footer(); -- } -+ common_show_header(_('Invitation(s) sent')); -+ if ($already) { -+ common_element('p', NULL, _('You are already subscribed to these users:')); -+ common_element_start('ul'); -+ foreach ($already as $other) { -+ common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); -+ } -+ common_element_end('ul'); -+ } -+ if ($subbed) { -+ common_element('p', NULL, _('These people are already users and you were automatically subscribed to them:')); -+ common_element_start('ul'); -+ foreach ($subbed as $other) { -+ common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); -+ } -+ common_element_end('ul'); -+ } -+ if ($sent) { -+ common_element('p', NULL, _('Invitation(s) sent to the following people:')); -+ common_element_start('ul'); -+ foreach ($sent as $other) { -+ common_element('li', NULL, $other); -+ } -+ common_element_end('ul'); -+ common_element('p', NULL, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!')); -+ } -+ common_show_footer(); -+ } +- common_element('h2', NULL, _('Preferences')); ++ common_element('h2', null, _('Preferences')); +hunk ./actions/imsettings.php 96 +- return NULL; ++ return null; +hunk ./actions/imsettings.php 247 +- $user->jabber = NULL; ++ $user->jabber = null; +hunk ./actions/invite.php 88 +- common_element('p', NULL, _('You are already subscribed to these users:')); ++ common_element('p', null, _('You are already subscribed to these users:')); +hunk ./actions/invite.php 91 +- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); ++ common_element('li', null, sprintf(_('%s (%s)'), $other->nickname, $other->email)); +hunk ./actions/invite.php 96 +- common_element('p', NULL, _('These people are already users and you were automatically subscribed to them:')); ++ common_element('p', null, _('These people are already users and you were automatically subscribed to them:')); +hunk ./actions/invite.php 99 +- common_element('li', NULL, sprintf(_('%s (%s)'), $other->nickname, $other->email)); ++ common_element('li', null, sprintf(_('%s (%s)'), $other->nickname, $other->email)); +hunk ./actions/invite.php 104 +- common_element('p', NULL, _('Invitation(s) sent to the following people:')); ++ common_element('p', null, _('Invitation(s) sent to the following people:')); +hunk ./actions/invite.php 107 +- common_element('li', NULL, $other); ++ common_element('li', null, $other); +hunk ./actions/invite.php 110 +- common_element('p', NULL, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!')); ++ common_element('p', null, _('You will be notified when your invitees accept the invitation and register on the site. Thanks for growing the community!')); hunk ./actions/invite.php 115 -- function show_top($error=NULL) { -- if ($error) { -- common_element('p', 'error', $error); -- } else { -- common_element_start('div', 'instructions'); -- common_element('p', NULL, -- _('Use this form to invite your friends and colleagues to use this service.')); -- common_element_end('div'); -- } -- } -+ function show_top($error=NULL) { -+ if ($error) { -+ common_element('p', 'error', $error); -+ } else { -+ common_element_start('div', 'instructions'); -+ common_element('p', NULL, -+ _('Use this form to invite your friends and colleagues to use this service.')); -+ common_element_end('div'); -+ } -+ } +- function show_top($error=NULL) { ++ function show_top($error=null) { +hunk ./actions/invite.php 120 +- common_element('p', NULL, ++ common_element('p', null, hunk ./actions/invite.php 126 -- function show_form($error=NULL) { -+ function show_form($error=NULL) { -hunk ./actions/invite.php 128 -- global $config; -+ global $config; +- function show_form($error=NULL) { ++ function show_form($error=null) { hunk ./actions/invite.php 130 -- common_show_header(_('Invite new users'), NULL, $error, array($this, 'show_top')); -+ common_show_header(_('Invite new users'), NULL, $error, array($this, 'show_top')); -hunk ./actions/invite.php 132 -- common_element_start('form', array('method' => 'post', -- 'id' => 'invite', -- 'action' => common_local_url('invite'))); -- common_hidden('token', common_session_token()); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'invite', -+ 'action' => common_local_url('invite'))); -+ common_hidden('token', common_session_token()); -hunk ./actions/invite.php 137 -- common_textarea('addresses', _('Email addresses'), -- $this->trimmed('addresses'), -- _('Addresses of friends to invite (one per line)')); -+ common_textarea('addresses', _('Email addresses'), -+ $this->trimmed('addresses'), -+ _('Addresses of friends to invite (one per line)')); -hunk ./actions/invite.php 141 -- common_textarea('personal', _('Personal message'), -- $this->trimmed('personal'), -- _('Optionally add a personal message to the invitation.')); -+ common_textarea('personal', _('Personal message'), -+ $this->trimmed('personal'), -+ _('Optionally add a personal message to the invitation.')); -hunk ./actions/invite.php 145 -- common_submit('send', _('Send')); -+ common_submit('send', _('Send')); -hunk ./actions/invite.php 147 -- common_element_end('form'); -+ common_element_end('form'); -hunk ./actions/invite.php 149 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/invite.php 152 -- function send_invitation($email, $user, $personal) { -+ function send_invitation($email, $user, $personal) { -hunk ./actions/invite.php 154 -- $profile = $user->getProfile(); -- $bestname = $profile->getBestName(); -+ $profile = $user->getProfile(); -+ $bestname = $profile->getBestName(); -hunk ./actions/invite.php 157 -- $sitename = common_config('site', 'name'); -+ $sitename = common_config('site', 'name'); -hunk ./actions/invite.php 159 -- $invite = new Invitation(); -+ $invite = new Invitation(); -hunk ./actions/invite.php 161 -- $invite->address = $email; -- $invite->address_type = 'email'; -- $invite->code = common_confirmation_code(128); -- $invite->user_id = $user->id; -- $invite->created = common_sql_now(); -+ $invite->address = $email; -+ $invite->address_type = 'email'; -+ $invite->code = common_confirmation_code(128); -+ $invite->user_id = $user->id; -+ $invite->created = common_sql_now(); -hunk ./actions/invite.php 167 -- if (!$invite->insert()) { -- common_log_db_error($invite, 'INSERT', __FILE__); -- return false; -- } -+ if (!$invite->insert()) { -+ common_log_db_error($invite, 'INSERT', __FILE__); -+ return false; -+ } -hunk ./actions/invite.php 172 -- $recipients = array($email); -+ $recipients = array($email); -hunk ./actions/invite.php 174 -- $headers['From'] = mail_notify_from(); -- $headers['To'] = $email; -- $headers['Subject'] = sprintf(_('%1$s has invited you to join them on %2$s'), $bestname, $sitename); -+ $headers['From'] = mail_notify_from(); -+ $headers['To'] = $email; -+ $headers['Subject'] = sprintf(_('%1$s has invited you to join them on %2$s'), $bestname, $sitename); -hunk ./actions/invite.php 178 -- $body = sprintf(_("%1\$s has invited you to join them on %2\$s (%3\$s).\n\n". -- "%2\$s is a micro-blogging service that lets you keep up-to-date with people you know and people who interest you.\n\n". -- "You can also share news about yourself, your thoughts, or your life online with people who know about you. ". -- "It's also great for meeting new people who share your interests.\n\n". -- "%1\$s said:\n\n%4\$s\n\n". -- "You can see %1\$s's profile page on %2\$s here:\n\n". -- "%5\$s\n\n". -- "If you'd like to try the service, click on the link below to accept the invitation.\n\n". -- "%6\$s\n\n". -- "If not, you can ignore this message. Thanks for your patience and your time.\n\n". -- "Sincerely, %2\$s\n"), -- $bestname, -- $sitename, -- common_root_url(), -- $personal, -- common_local_url('showstream', array('nickname' => $user->nickname)), -- common_local_url('register', array('code' => $invite->code))); -+ $body = sprintf(_("%1\$s has invited you to join them on %2\$s (%3\$s).\n\n". -+ "%2\$s is a micro-blogging service that lets you keep up-to-date with people you know and people who interest you.\n\n". -+ "You can also share news about yourself, your thoughts, or your life online with people who know about you. ". -+ "It's also great for meeting new people who share your interests.\n\n". -+ "%1\$s said:\n\n%4\$s\n\n". -+ "You can see %1\$s's profile page on %2\$s here:\n\n". -+ "%5\$s\n\n". -+ "If you'd like to try the service, click on the link below to accept the invitation.\n\n". -+ "%6\$s\n\n". -+ "If not, you can ignore this message. Thanks for your patience and your time.\n\n". -+ "Sincerely, %2\$s\n"), -+ $bestname, -+ $sitename, -+ common_root_url(), -+ $personal, -+ common_local_url('showstream', array('nickname' => $user->nickname)), -+ common_local_url('register', array('code' => $invite->code))); -hunk ./actions/invite.php 196 -- mail_send($recipients, $headers, $body); -- } -+ mail_send($recipients, $headers, $body); -+ } -hunk ./actions/login.php 24 -- function is_readonly() { -- return true; -- } -+ function is_readonly() { -+ return true; -+ } -hunk ./actions/login.php 28 -- function handle($args) { -- parent::handle($args); -- if (common_is_real_login()) { -- common_user_error(_('Already logged in.')); -- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $this->check_login(); -- } else { -- $this->show_form(); -- } -- } -+ function handle($args) { -+ parent::handle($args); -+ if (common_is_real_login()) { -+ common_user_error(_('Already logged in.')); -+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $this->check_login(); -+ } else { -+ $this->show_form(); -+ } -+ } -hunk ./actions/login.php 39 -- function check_login() { -- # XXX: login throttle -+ function check_login() { -+ # XXX: login throttle -hunk ./actions/login.php 42 -- # CSRF protection - token set in common_notice_form() -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection - token set in common_notice_form() -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/login.php 49 -- $nickname = common_canonical_nickname($this->trimmed('nickname')); -- $password = $this->arg('password'); -- if (common_check_user($nickname, $password)) { -- # success! -- if (!common_set_user($nickname)) { -- common_server_error(_('Error setting user.')); -- return; -- } -- common_real_login(true); -- if ($this->boolean('rememberme')) { -- common_debug('Adding rememberme cookie for ' . $nickname); -- common_rememberme(); -- } -- # success! -- $url = common_get_returnto(); -- if ($url) { -- # We don't have to return to it again -- common_set_returnto(NULL); -- } else { -- $url = common_local_url('all', -- array('nickname' => -- $nickname)); -- } -- common_redirect($url); -- } else { -- $this->show_form(_('Incorrect username or password.')); -- return; -- } -+ $nickname = common_canonical_nickname($this->trimmed('nickname')); -+ $password = $this->arg('password'); -+ if (common_check_user($nickname, $password)) { -+ # success! -+ if (!common_set_user($nickname)) { -+ common_server_error(_('Error setting user.')); -+ return; -+ } -+ common_real_login(true); -+ if ($this->boolean('rememberme')) { -+ common_debug('Adding rememberme cookie for ' . $nickname); -+ common_rememberme(); -+ } -+ # success! -+ $url = common_get_returnto(); -+ if ($url) { -+ # We don't have to return to it again -+ common_set_returnto(NULL); -+ } else { -+ $url = common_local_url('all', -+ array('nickname' => -+ $nickname)); -+ } -+ common_redirect($url); -+ } else { -+ $this->show_form(_('Incorrect username or password.')); -+ return; -+ } -hunk ./actions/login.php 78 -- # success! -- if (!common_set_user($user)) { -- common_server_error(_('Error setting user.')); -- return; -- } -+ # success! -+ if (!common_set_user($user)) { -+ common_server_error(_('Error setting user.')); -+ return; -+ } -hunk ./actions/login.php 84 -- common_real_login(true); -+ common_real_login(true); -hunk ./actions/login.php 86 -- if ($this->boolean('rememberme')) { -- common_debug('Adding rememberme cookie for ' . $nickname); -- common_rememberme($user); -- } -- # success! -- $url = common_get_returnto(); -- if ($url) { -- # We don't have to return to it again -- common_set_returnto(NULL); -- } else { -- $url = common_local_url('all', -- array('nickname' => -- $nickname)); -- } -- common_redirect($url); -- } -+ if ($this->boolean('rememberme')) { -+ common_debug('Adding rememberme cookie for ' . $nickname); -+ common_rememberme($user); -+ } -+ # success! -+ $url = common_get_returnto(); -+ if ($url) { -+ # We don't have to return to it again -+ common_set_returnto(NULL); -+ } else { -+ $url = common_local_url('all', -+ array('nickname' => -+ $nickname)); -+ } -+ common_redirect($url); -+ } +- common_show_header(_('Invite new users'), NULL, $error, array($this, 'show_top')); ++ common_show_header(_('Invite new users'), null, $error, array($this, 'show_top')); +hunk ./actions/login.php 66 +- common_set_returnto(NULL); ++ common_set_returnto(null); +hunk ./actions/login.php 94 +- common_set_returnto(NULL); ++ common_set_returnto(null); hunk ./actions/login.php 103 -- function show_form($error=NULL) { -- common_show_header(_('Login'), NULL, $error, array($this, 'show_top')); -- common_element_start('form', array('method' => 'post', -- 'id' => 'login', -- 'action' => common_local_url('login'))); -- common_input('nickname', _('Nickname')); -- common_password('password', _('Password')); -- common_checkbox('rememberme', _('Remember me'), false, -- _('Automatically login in the future; ' . -- 'not for shared computers!')); -- common_submit('submit', _('Login')); -- common_hidden('token', common_session_token()); -- common_element_end('form'); -- common_element_start('p'); -- common_element('a', array('href' => common_local_url('recoverpassword')), -- _('Lost or forgotten password?')); -- common_element_end('p'); -- common_show_footer(); -- } -+ function show_form($error=NULL) { -+ common_show_header(_('Login'), NULL, $error, array($this, 'show_top')); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'login', -+ 'action' => common_local_url('login'))); -+ common_input('nickname', _('Nickname')); -+ common_password('password', _('Password')); -+ common_checkbox('rememberme', _('Remember me'), false, -+ _('Automatically login in the future; ' . -+ 'not for shared computers!')); -+ common_submit('submit', _('Login')); -+ common_hidden('token', common_session_token()); -+ common_element_end('form'); -+ common_element_start('p'); -+ common_element('a', array('href' => common_local_url('recoverpassword')), -+ _('Lost or forgotten password?')); -+ common_element_end('p'); -+ common_show_footer(); -+ } -hunk ./actions/login.php 123 -- function get_instructions() { -- if (common_logged_in() && -- !common_is_real_login() && -- common_get_returnto()) -- { -- # rememberme logins have to reauthenticate before -- # changing any profile settings (cookie-stealing protection) -- return _('For security reasons, please re-enter your ' . -- 'user name and password ' . -- 'before changing your settings.'); -- } else { -- return _('Login with your username and password. ' . -- 'Don\'t have a username yet? ' . -- '[Register](%%action.register%%) a new account, or ' . -- 'try [OpenID](%%action.openidlogin%%). '); -- } -- } -+ function get_instructions() { -+ if (common_logged_in() && -+ !common_is_real_login() && -+ common_get_returnto()) -+ { -+ # rememberme logins have to reauthenticate before -+ # changing any profile settings (cookie-stealing protection) -+ return _('For security reasons, please re-enter your ' . -+ 'user name and password ' . -+ 'before changing your settings.'); -+ } else { -+ return _('Login with your username and password. ' . -+ 'Don\'t have a username yet? ' . -+ '[Register](%%action.register%%) a new account, or ' . -+ 'try [OpenID](%%action.openidlogin%%). '); -+ } -+ } +- function show_form($error=NULL) { +- common_show_header(_('Login'), NULL, $error, array($this, 'show_top')); ++ function show_form($error=null) { ++ common_show_header(_('Login'), null, $error, array($this, 'show_top')); hunk ./actions/login.php 141 -- function show_top($error=NULL) { -- if ($error) { -- common_element('p', 'error', $error); -- } else { -- $instr = $this->get_instructions(); -- $output = common_markup_to_html($instr); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- } -- } -+ function show_top($error=NULL) { -+ if ($error) { -+ common_element('p', 'error', $error); -+ } else { -+ $instr = $this->get_instructions(); -+ $output = common_markup_to_html($instr); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ } -+ } -hunk ./actions/logout.php 25 -- -- function is_readonly() { -- return true; -- } -- -- function handle($args) { -- parent::handle($args); -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- } else { -- common_set_user(NULL); -- common_real_login(false); # not logged in -- common_forgetme(); # don't log back in! -- common_redirect(common_local_url('public')); -- } -- } -+ -+ function is_readonly() { -+ return true; -+ } -+ -+ function handle($args) { -+ parent::handle($args); -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ } else { -+ common_set_user(NULL); -+ common_real_login(false); # not logged in -+ common_forgetme(); # don't log back in! -+ common_redirect(common_local_url('public')); -+ } -+ } -hunk ./actions/microsummary.php 24 -- function handle($args) { -+ function handle($args) { -hunk ./actions/microsummary.php 26 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/microsummary.php 28 -- $nickname = common_canonical_nickname($this->arg('nickname')); -- $user = User::staticGet('nickname', $nickname); -+ $nickname = common_canonical_nickname($this->arg('nickname')); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/microsummary.php 31 -- if (!$user) { -- $this->client_error(_('No such user'), 404); -- return; -- } -- -- $notice = $user->getCurrentNotice(); -- -- if (!$notice) { -- $this->client_error(_('No current status'), 404); -- } -- -- header('Content-Type: text/plain'); -- -- print $user->nickname . ': ' . $notice->content; -- } -+ if (!$user) { -+ $this->client_error(_('No such user'), 404); -+ return; -+ } -+ -+ $notice = $user->getCurrentNotice(); -+ -+ if (!$notice) { -+ $this->client_error(_('No current status'), 404); -+ } -+ -+ header('Content-Type: text/plain'); -+ -+ print $user->nickname . ': ' . $notice->content; -+ } -hunk ./actions/newmessage.php 23 -- -- function handle($args) { -- parent::handle($args); -+ -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/newmessage.php 27 -- if (!common_logged_in()) { -- $this->client_error(_('Not logged in.'), 403); -- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $this->save_new_message(); -- } else { -- $this->show_form(); -- } -- } -+ if (!common_logged_in()) { -+ $this->client_error(_('Not logged in.'), 403); -+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $this->save_new_message(); -+ } else { -+ $this->show_form(); -+ } -+ } -hunk ./actions/newmessage.php 36 -- function save_new_message() { -- $user = common_current_user(); -- assert($user); # XXX: maybe an error instead... -+ function save_new_message() { -+ $user = common_current_user(); -+ assert($user); # XXX: maybe an error instead... -hunk ./actions/newmessage.php 40 -- # CSRF protection -- -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -- -- $content = $this->trimmed('content'); -- $to = $this->trimmed('to'); -- -- if (!$content) { -- $this->show_form(_('No content!')); -- return; -- } else { -- $content_shortened = common_shorten_links($content); -+ # CSRF protection -+ -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -+ -+ $content = $this->trimmed('content'); -+ $to = $this->trimmed('to'); -+ -+ if (!$content) { -+ $this->show_form(_('No content!')); -+ return; -+ } else { -+ $content_shortened = common_shorten_links($content); -hunk ./actions/newmessage.php 57 -- if (mb_strlen($content_shortened) > 140) { -- common_debug("Content = '$content_shortened'", __FILE__); -- common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__); -- $this->show_form(_('That\'s too long. Max message size is 140 chars.')); -- return; -- } -- } -+ if (mb_strlen($content_shortened) > 140) { -+ common_debug("Content = '$content_shortened'", __FILE__); -+ common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__); -+ $this->show_form(_('That\'s too long. Max message size is 140 chars.')); -+ return; -+ } -+ } -hunk ./actions/newmessage.php 65 -- $other = User::staticGet('id', $to); -- -- if (!$other) { -- $this->show_form(_('No recipient specified.')); -- return; -- } else if (!$user->mutuallySubscribed($other)) { -- $this->client_error(_('You can\'t send a message to this user.'), 404); -- return; -- } else if ($user->id == $other->id) { -- $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'), 403); -- return; -- } -- -- $message = Message::saveNew($user->id, $other->id, $content, 'web'); -- -- if (is_string($message)) { -- $this->show_form($message); -- return; -- } -+ $other = User::staticGet('id', $to); -+ -+ if (!$other) { -+ $this->show_form(_('No recipient specified.')); -+ return; -+ } else if (!$user->mutuallySubscribed($other)) { -+ $this->client_error(_('You can\'t send a message to this user.'), 404); -+ return; -+ } else if ($user->id == $other->id) { -+ $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'), 403); -+ return; -+ } -+ -+ $message = Message::saveNew($user->id, $other->id, $content, 'web'); -+ -+ if (is_string($message)) { -+ $this->show_form($message); -+ return; -+ } -hunk ./actions/newmessage.php 85 -- $this->notify($user, $other, $message); -+ $this->notify($user, $other, $message); -hunk ./actions/newmessage.php 87 -- $url = common_local_url('outbox', array('nickname' => $user->nickname)); -+ $url = common_local_url('outbox', array('nickname' => $user->nickname)); -hunk ./actions/newmessage.php 89 -- common_redirect($url, 303); -- } -+ common_redirect($url, 303); -+ } -hunk ./actions/newmessage.php 92 -- function show_top($params) { -+ function show_top($params) { -hunk ./actions/newmessage.php 94 -- list($content, $user, $to) = $params; -- -- assert(!is_null($user)); -+ list($content, $user, $to) = $params; -+ -+ assert(!is_null($user)); -hunk ./actions/newmessage.php 98 -- common_message_form($content, $user, $to); -- } -+ common_message_form($content, $user, $to); -+ } +- function show_top($error=NULL) { ++ function show_top($error=null) { +hunk ./actions/logout.php 35 +- common_set_user(NULL); ++ common_set_user(null); hunk ./actions/newmessage.php 101 -- function show_form($msg=NULL) { -- -- $content = $this->trimmed('content'); -- $user = common_current_user(); -+ function show_form($msg=NULL) { -+ -+ $content = $this->trimmed('content'); -+ $user = common_current_user(); -hunk ./actions/newmessage.php 106 -- $to = $this->trimmed('to'); -- -- $other = User::staticGet('id', $to); -+ $to = $this->trimmed('to'); -+ -+ $other = User::staticGet('id', $to); -hunk ./actions/newmessage.php 110 -- if (!$other) { -- $this->client_error(_('No such user'), 404); -- return; -- } -+ if (!$other) { -+ $this->client_error(_('No such user'), 404); -+ return; -+ } -hunk ./actions/newmessage.php 115 -- if (!$user->mutuallySubscribed($other)) { -- $this->client_error(_('You can\'t send a message to this user.'), 404); -- return; -- } -- -- common_show_header(_('New message'), NULL, -- array($content, $user, $other), -- array($this, 'show_top')); -- -- if ($msg) { -- common_element('p', array('id'=>'error'), $msg); -- } -- -- common_show_footer(); -- } -- -- function notify($from, $to, $message) { -- mail_notify_message($message, $from, $to); -- # XXX: Jabber, SMS notifications... probably queued -- } -+ if (!$user->mutuallySubscribed($other)) { -+ $this->client_error(_('You can\'t send a message to this user.'), 404); -+ return; -+ } -+ -+ common_show_header(_('New message'), NULL, -+ array($content, $user, $other), -+ array($this, 'show_top')); -+ -+ if ($msg) { -+ common_element('p', array('id'=>'error'), $msg); -+ } -+ -+ common_show_footer(); -+ } -+ -+ function notify($from, $to, $message) { -+ mail_notify_message($message, $from, $to); -+ # XXX: Jabber, SMS notifications... probably queued -+ } -hunk ./actions/newnotice.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/newnotice.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/newnotice.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/newnotice.php 29 -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -hunk ./actions/newnotice.php 33 -- # CSRF protection - token set in common_notice_form() -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection - token set in common_notice_form() -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/newnotice.php 40 -- $this->save_new_notice(); -- } else { -- $this->show_form(); -- } -- } -+ $this->save_new_notice(); -+ } else { -+ $this->show_form(); -+ } -+ } -hunk ./actions/newnotice.php 46 -- function save_new_notice() { -+ function save_new_notice() { -hunk ./actions/newnotice.php 48 -- $user = common_current_user(); -- assert($user); # XXX: maybe an error instead... -- $content = $this->trimmed('status_textarea'); -+ $user = common_current_user(); -+ assert($user); # XXX: maybe an error instead... -+ $content = $this->trimmed('status_textarea'); -hunk ./actions/newnotice.php 52 -- if (!$content) { -- $this->show_form(_('No content!')); -- return; -- } else { -- $content_shortened = common_shorten_links($content); -+ if (!$content) { -+ $this->show_form(_('No content!')); -+ return; -+ } else { -+ $content_shortened = common_shorten_links($content); -hunk ./actions/newnotice.php 58 -- if (mb_strlen($content_shortened) > 140) { -- common_debug("Content = '$content_shortened'", __FILE__); -- common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__); -- $this->show_form(_('That\'s too long. Max notice size is 140 chars.')); -- return; -- } -- } -+ if (mb_strlen($content_shortened) > 140) { -+ common_debug("Content = '$content_shortened'", __FILE__); -+ common_debug("mb_strlen(\$content) = " . mb_strlen($content_shortened), __FILE__); -+ $this->show_form(_('That\'s too long. Max notice size is 140 chars.')); -+ return; -+ } -+ } -hunk ./actions/newnotice.php 66 -- $inter = new CommandInterpreter(); -+ $inter = new CommandInterpreter(); -hunk ./actions/newnotice.php 68 -- $cmd = $inter->handle_command($user, $content_shortened); -+ $cmd = $inter->handle_command($user, $content_shortened); -hunk ./actions/newnotice.php 70 -- if ($cmd) { -- if ($this->boolean('ajax')) { -- $cmd->execute(new AjaxWebChannel()); -- } else { -- $cmd->execute(new WebChannel()); -- } -- return; -- } -+ if ($cmd) { -+ if ($this->boolean('ajax')) { -+ $cmd->execute(new AjaxWebChannel()); -+ } else { -+ $cmd->execute(new WebChannel()); -+ } -+ return; -+ } -hunk ./actions/newnotice.php 79 -- $replyto = $this->trimmed('inreplyto'); -+ $replyto = $this->trimmed('inreplyto'); +- function show_form($msg=NULL) { ++ function show_form($msg=null) { +hunk ./actions/newmessage.php 120 +- common_show_header(_('New message'), NULL, ++ common_show_header(_('New message'), null, hunk ./actions/newnotice.php 81 -- $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? NULL : $replyto); -+ $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? NULL : $replyto); -hunk ./actions/newnotice.php 83 -- if (is_string($notice)) { -- $this->show_form($notice); -- return; -- } -+ if (is_string($notice)) { -+ $this->show_form($notice); -+ return; -+ } -hunk ./actions/newnotice.php 88 -- common_broadcast_notice($notice); -+ common_broadcast_notice($notice); -hunk ./actions/newnotice.php 90 -- if ($this->boolean('ajax')) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Notice posted')); -- common_element_end('head'); -- common_element_start('body'); -- $this->show_notice($notice); -- common_element_end('body'); -- common_element_end('html'); -- } else { -- $returnto = $this->trimmed('returnto'); -+ if ($this->boolean('ajax')) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Notice posted')); -+ common_element_end('head'); -+ common_element_start('body'); -+ $this->show_notice($notice); -+ common_element_end('body'); -+ common_element_end('html'); -+ } else { -+ $returnto = $this->trimmed('returnto'); -hunk ./actions/newnotice.php 102 -- if ($returnto) { -- $url = common_local_url($returnto, -- array('nickname' => $user->nickname)); -- } else { -- $url = common_local_url('shownotice', -- array('notice' => $notice->id)); -- } -- common_redirect($url, 303); -- } -- } -+ if ($returnto) { -+ $url = common_local_url($returnto, -+ array('nickname' => $user->nickname)); -+ } else { -+ $url = common_local_url('shownotice', -+ array('notice' => $notice->id)); -+ } -+ common_redirect($url, 303); -+ } -+ } -hunk ./actions/newnotice.php 113 -- function ajax_error_msg($msg) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Ajax Error')); -- common_element_end('head'); -- common_element_start('body'); -- common_element('p', array('id' => 'error'), $msg); -- common_element_end('body'); -- common_element_end('html'); -- } -+ function ajax_error_msg($msg) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Ajax Error')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_element('p', array('id' => 'error'), $msg); -+ common_element_end('body'); -+ common_element_end('html'); -+ } +- $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? NULL : $replyto); ++ $notice = Notice::saveNew($user->id, $content, 'web', 1, ($replyto == 'false') ? null : $replyto); hunk ./actions/newnotice.php 124 -- function show_top($content=NULL) { -- common_notice_form(NULL, $content); -- } -+ function show_top($content=NULL) { -+ common_notice_form(NULL, $content); -+ } +- function show_top($content=NULL) { +- common_notice_form(NULL, $content); ++ function show_top($content=null) { ++ common_notice_form(null, $content); hunk ./actions/newnotice.php 128 -- function show_form($msg=NULL) { -- if ($msg && $this->boolean('ajax')) { -- $this->ajax_error_msg($msg); -- return; -- } -- $content = $this->trimmed('status_textarea'); -- if (!$content) { -- $replyto = $this->trimmed('replyto'); -- $profile = Profile::staticGet('nickname', $replyto); -- if ($profile) { -- $content = '@' . $profile->nickname . ' '; -- } -- } -- common_show_header(_('New notice'), NULL, $content, -- array($this, 'show_top')); -- if ($msg) { -- common_element('p', array('id' => 'error'), $msg); -- } -- common_show_footer(); -- } -+ function show_form($msg=NULL) { -+ if ($msg && $this->boolean('ajax')) { -+ $this->ajax_error_msg($msg); -+ return; -+ } -+ $content = $this->trimmed('status_textarea'); -+ if (!$content) { -+ $replyto = $this->trimmed('replyto'); -+ $profile = Profile::staticGet('nickname', $replyto); -+ if ($profile) { -+ $content = '@' . $profile->nickname . ' '; -+ } -+ } -+ common_show_header(_('New notice'), NULL, $content, -+ array($this, 'show_top')); -+ if ($msg) { -+ common_element('p', array('id' => 'error'), $msg); -+ } -+ common_show_footer(); -+ } -hunk ./actions/newnotice.php 149 -- function show_notice($notice) { -+ function show_notice($notice) { -hunk ./actions/newnotice.php 152 -- } -+ } -hunk ./actions/noticesearch.php 28 -- function get_instructions() { -- return _('Search for notices on %%site.name%% by their contents. Separate search terms by spaces; they must be 3 characters or more.'); -- } -+ function get_instructions() { -+ return _('Search for notices on %%site.name%% by their contents. Separate search terms by spaces; they must be 3 characters or more.'); -+ } -hunk ./actions/noticesearch.php 32 -- function get_title() { -- return _('Text search'); -- } -+ function get_title() { -+ return _('Text search'); -+ } -hunk ./actions/noticesearch.php 36 -- function show_results($q, $page) { -+ function show_results($q, $page) { -hunk ./actions/noticesearch.php 38 -- $notice = new Notice(); -+ $notice = new Notice(); -hunk ./actions/noticesearch.php 40 -- # lcase it for comparison -- $q = strtolower($q); -+ # lcase it for comparison -+ $q = strtolower($q); -hunk ./actions/noticesearch.php 46 -- # Ask for an extra to see if there's more. -- $search_engine->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1); -+ # Ask for an extra to see if there's more. -+ $search_engine->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1); -hunk ./actions/noticesearch.php 53 -- $cnt = $notice->find(); -+ $cnt = $notice->find(); -+ } -+ if ($cnt > 0) { -+ $terms = preg_split('/[\s,]+/', $q); -+ common_element_start('ul', array('id' => 'notices')); -+ for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) { -+ if ($notice->fetch()) { -+ $this->show_notice($notice, $terms); -+ } else { -+ // shouldn't happen! -+ break; -+ } -+ } -+ common_element_end('ul'); -+ } else { -+ common_element('p', 'error', _('No results')); -hunk ./actions/noticesearch.php 70 -- if ($cnt > 0) { -- $terms = preg_split('/[\s,]+/', $q); -- common_element_start('ul', array('id' => 'notices')); -- for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) { -- if ($notice->fetch()) { -- $this->show_notice($notice, $terms); -- } else { -- // shouldn't happen! -- break; -- } -- } -- common_element_end('ul'); -- } else { -- common_element('p', 'error', _('No results')); -- } -hunk ./actions/noticesearch.php 71 -- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'noticesearch', array('q' => $q)); -- } -+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'noticesearch', array('q' => $q)); -+ } -hunk ./actions/noticesearch.php 75 -- function show_header($arr) { -- if ($arr) { -- $q = $arr[0]; -- } -- if ($q) { -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('noticesearchrss', -- array('q' => $q)), -- 'type' => 'application/rss+xml', -- 'title' => _('Search Stream Feed'))); -- } -- } -+ function show_header($arr) { -+ if ($arr) { -+ $q = $arr[0]; -+ } -+ if ($q) { -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('noticesearchrss', -+ array('q' => $q)), -+ 'type' => 'application/rss+xml', -+ 'title' => _('Search Stream Feed'))); -+ } -+ } -hunk ./actions/noticesearch.php 88 -- # XXX: refactor and combine with StreamAction::show_notice() -+ # XXX: refactor and combine with StreamAction::show_notice() -hunk ./actions/noticesearch.php 90 -- function show_notice($notice, $terms) { -- $profile = $notice->getProfile(); -- if (!$profile) { -- common_log_db_error($notice, 'SELECT', __FILE__); -- $this->server_error(_('Notice without matching profile')); -- return; -- } -- # XXX: RDFa -- common_element_start('li', array('class' => 'notice_single', -- 'id' => 'notice-' . $notice->id)); -- $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE); -- common_element_start('a', array('href' => $profile->profileurl)); -- common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE), -- 'class' => 'avatar stream', -- 'width' => AVATAR_STREAM_SIZE, -- 'height' => AVATAR_STREAM_SIZE, -- 'alt' => -- ($profile->fullname) ? $profile->fullname : -- $profile->nickname)); -- common_element_end('a'); -- common_element('a', array('href' => $profile->profileurl, -- 'class' => 'nickname'), -- $profile->nickname); -- # FIXME: URL, image, video, audio -- common_element_start('p', array('class' => 'content')); -- if ($notice->rendered) { -- common_raw($this->highlight($notice->rendered, $terms)); -- } else { -- # XXX: may be some uncooked notices in the DB, -- # we cook them right now. This should probably disappear in future -- # versions (>> 0.4.x) -- common_raw($this->highlight(common_render_content($notice->content, $notice), $terms)); -- } -- common_element_end('p'); -- $noticeurl = common_local_url('shownotice', array('notice' => $notice->id)); -- common_element_start('p', 'time'); -- common_element('a', array('class' => 'permalink', -- 'href' => $noticeurl, -- 'title' => common_exact_date($notice->created)), -- common_date_string($notice->created)); -- if ($notice->reply_to) { -- $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to)); -- common_text(' ('); -- common_element('a', array('class' => 'inreplyto', -- 'href' => $replyurl), -- _('in reply to...')); -- common_text(')'); -- } -- common_element_start('a', -- array('href' => common_local_url('newnotice', -- array('replyto' => $profile->nickname)), -- 'onclick' => 'doreply("'.$profile->nickname.'"); return false', -- 'title' => _('reply'), -- 'class' => 'replybutton')); -- common_hidden('posttoken', common_session_token()); -- -- common_raw('→'); -- common_element_end('a'); -- common_element_end('p'); -- common_element_end('li'); -- } -+ function show_notice($notice, $terms) { -+ $profile = $notice->getProfile(); -+ if (!$profile) { -+ common_log_db_error($notice, 'SELECT', __FILE__); -+ $this->server_error(_('Notice without matching profile')); -+ return; -+ } -+ # XXX: RDFa -+ common_element_start('li', array('class' => 'notice_single', -+ 'id' => 'notice-' . $notice->id)); -+ $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE); -+ common_element_start('a', array('href' => $profile->profileurl)); -+ common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_STREAM_SIZE), -+ 'class' => 'avatar stream', -+ 'width' => AVATAR_STREAM_SIZE, -+ 'height' => AVATAR_STREAM_SIZE, -+ 'alt' => -+ ($profile->fullname) ? $profile->fullname : -+ $profile->nickname)); -+ common_element_end('a'); -+ common_element('a', array('href' => $profile->profileurl, -+ 'class' => 'nickname'), -+ $profile->nickname); -+ # FIXME: URL, image, video, audio -+ common_element_start('p', array('class' => 'content')); -+ if ($notice->rendered) { -+ common_raw($this->highlight($notice->rendered, $terms)); -+ } else { -+ # XXX: may be some uncooked notices in the DB, -+ # we cook them right now. This should probably disappear in future -+ # versions (>> 0.4.x) -+ common_raw($this->highlight(common_render_content($notice->content, $notice), $terms)); -+ } -+ common_element_end('p'); -+ $noticeurl = common_local_url('shownotice', array('notice' => $notice->id)); -+ common_element_start('p', 'time'); -+ common_element('a', array('class' => 'permalink', -+ 'href' => $noticeurl, -+ 'title' => common_exact_date($notice->created)), -+ common_date_string($notice->created)); -+ if ($notice->reply_to) { -+ $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to)); -+ common_text(' ('); -+ common_element('a', array('class' => 'inreplyto', -+ 'href' => $replyurl), -+ _('in reply to...')); -+ common_text(')'); -+ } -+ common_element_start('a', -+ array('href' => common_local_url('newnotice', -+ array('replyto' => $profile->nickname)), -+ 'onclick' => 'doreply("'.$profile->nickname.'"); return false', -+ 'title' => _('reply'), -+ 'class' => 'replybutton')); -+ common_hidden('posttoken', common_session_token()); -+ -+ common_raw('→'); -+ common_element_end('a'); -+ common_element_end('p'); -+ common_element_end('li'); -+ } -hunk ./actions/noticesearch.php 152 -- function highlight($text, $terms) { -- /* Highligh serach terms */ -- $pattern = '/('.implode('|',array_map('htmlspecialchars', $terms)).')/i'; -- $result = preg_replace($pattern, '\\1', $text); -+ function highlight($text, $terms) { -+ /* Highligh serach terms */ -+ $pattern = '/('.implode('|',array_map('htmlspecialchars', $terms)).')/i'; -+ $result = preg_replace($pattern, '\\1', $text); -hunk ./actions/noticesearch.php 157 -- /* Remove highlighting from inside links, loop incase multiple highlights in links */ -- $pattern = '/(href="[^"]*)('.implode('|',array_map('htmlspecialchars', $terms)).')<\/strong>([^"]*")/iU'; -- do { -- $result = preg_replace($pattern, '\\1\\2\\3', $result, -1, $count); -- } while ($count); -- return $result; -- } -+ /* Remove highlighting from inside links, loop incase multiple highlights in links */ -+ $pattern = '/(href="[^"]*)('.implode('|',array_map('htmlspecialchars', $terms)).')<\/strong>([^"]*")/iU'; -+ do { -+ $result = preg_replace($pattern, '\\1\\2\\3', $result, -1, $count); -+ } while ($count); -+ return $result; -+ } -hunk ./actions/noticesearchrss.php 28 -- function init() { -- return true; -- } -+ function init() { -+ return true; -+ } -hunk ./actions/noticesearchrss.php 32 -- function get_notices($limit=0) { -+ function get_notices($limit=0) { -hunk ./actions/noticesearchrss.php 34 -- $q = $this->trimmed('q'); -- $notices = array(); -+ $q = $this->trimmed('q'); -+ $notices = array(); -hunk ./actions/noticesearchrss.php 37 -- $notice = new Notice(); -+ $notice = new Notice(); -hunk ./actions/noticesearchrss.php 39 -- # lcase it for comparison -- $q = strtolower($q); -+ # lcase it for comparison -+ $q = strtolower($q); -hunk ./actions/noticesearchrss.php 45 -- if (!$limit) $limit = 20; -+ if (!$limit) $limit = 20; -hunk ./actions/noticesearchrss.php 48 -- $notice->find(); -+ $notice->find(); -hunk ./actions/noticesearchrss.php 50 -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./actions/noticesearchrss.php 54 -- return $notices; -- } -+ return $notices; -+ } -hunk ./actions/noticesearchrss.php 57 -- function get_channel() { -- global $config; -- $q = $this->trimmed('q'); -- $c = array('url' => common_local_url('noticesearchrss', array('q' => $q)), -- 'title' => $config['site']['name'] . sprintf(_(' Search Stream for "%s"'), $q), -- 'link' => common_local_url('noticesearch', array('q' => $q)), -- 'description' => sprintf(_('All updates matching search term "%s"'), $q)); -- return $c; -- } -+ function get_channel() { -+ global $config; -+ $q = $this->trimmed('q'); -+ $c = array('url' => common_local_url('noticesearchrss', array('q' => $q)), -+ 'title' => $config['site']['name'] . sprintf(_(' Search Stream for "%s"'), $q), -+ 'link' => common_local_url('noticesearch', array('q' => $q)), -+ 'description' => sprintf(_('All updates matching search term "%s"'), $q)); -+ return $c; -+ } -hunk ./actions/noticesearchrss.php 67 -- function get_image() { -- return NULL; -- } -+ function get_image() { -+ return NULL; -+ } -hunk ./actions/nudge.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/nudge.php 29 -- if (!common_logged_in()) { -- $this->client_error(_('Not logged in.')); -- return; -- } -+ if (!common_logged_in()) { -+ $this->client_error(_('Not logged in.')); -+ return; -+ } -hunk ./actions/nudge.php 34 -- $user = common_current_user(); -- $other = User::staticGet('nickname', $this->arg('nickname')); -+ $user = common_current_user(); -+ $other = User::staticGet('nickname', $this->arg('nickname')); -hunk ./actions/nudge.php 37 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- common_redirect(common_local_url('showstream', array('nickname' => $other->nickname))); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ common_redirect(common_local_url('showstream', array('nickname' => $other->nickname))); -+ return; -+ } -hunk ./actions/nudge.php 42 -- # CSRF protection -+ # CSRF protection -hunk ./actions/nudge.php 44 -- $token = $this->trimmed('token'); -- -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ $token = $this->trimmed('token'); -+ -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/nudge.php 56 -- $this->notify($user, $other); -+ $this->notify($user, $other); -hunk ./actions/nudge.php 58 -- if ($this->boolean('ajax')) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Nudge sent')); -- common_element_end('head'); -- common_element_start('body'); -- common_nudge_response(); -- common_element_end('body'); -- common_element_end('html'); -- } else { -+ if ($this->boolean('ajax')) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Nudge sent')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_nudge_response(); -+ common_element_end('body'); -+ common_element_end('html'); -+ } else { -hunk ./actions/nudge.php 69 -- common_redirect(common_local_url('showstream', -- array('nickname' => $other->nickname))); -- } -- } -+ common_redirect(common_local_url('showstream', -+ array('nickname' => $other->nickname))); -+ } -+ } -hunk ./actions/nudge.php 74 -- function notify($user, $other) { -- if ($other->id != $user->id) { -- if ($other->email && $other->emailnotifynudge) { -- mail_notify_nudge($user, $other); -- } -- # XXX: notify by IM -- # XXX: notify by SMS -- } -- } -+ function notify($user, $other) { -+ if ($other->id != $user->id) { -+ if ($other->email && $other->emailnotifynudge) { -+ mail_notify_nudge($user, $other); -+ } -+ # XXX: notify by IM -+ # XXX: notify by SMS -+ } -+ } -hunk ./actions/openidlogin.php 26 -- function handle($args) { -- parent::handle($args); -- if (common_logged_in()) { -- common_user_error(_('Already logged in.')); -- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $openid_url = $this->trimmed('openid_url'); -+ function handle($args) { -+ parent::handle($args); -+ if (common_logged_in()) { -+ common_user_error(_('Already logged in.')); -+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $openid_url = $this->trimmed('openid_url'); -hunk ./actions/openidlogin.php 33 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.'), $openid_url); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.'), $openid_url); -+ return; -+ } -hunk ./actions/openidlogin.php 40 -- $rememberme = $this->boolean('rememberme'); -- -- common_ensure_session(); -- -- $_SESSION['openid_rememberme'] = $rememberme; -- -- $result = oid_authenticate($openid_url, -- 'finishopenidlogin'); -- -- if (is_string($result)) { # error message -- unset($_SESSION['openid_rememberme']); -- $this->show_form($result, $openid_url); -- } -- } else { -- $openid_url = oid_get_last(); -- $this->show_form(NULL, $openid_url); -- } -- } -+ $rememberme = $this->boolean('rememberme'); -+ -+ common_ensure_session(); -+ -+ $_SESSION['openid_rememberme'] = $rememberme; -+ -+ $result = oid_authenticate($openid_url, -+ 'finishopenidlogin'); -+ -+ if (is_string($result)) { # error message -+ unset($_SESSION['openid_rememberme']); -+ $this->show_form($result, $openid_url); -+ } -+ } else { -+ $openid_url = oid_get_last(); -+ $this->show_form(NULL, $openid_url); -+ } -+ } -hunk ./actions/openidlogin.php 59 -- function get_instructions() { -- return _('Login with an [OpenID](%%doc.openid%%) account.'); -- } -+ function get_instructions() { -+ return _('Login with an [OpenID](%%doc.openid%%) account.'); -+ } +- function show_form($msg=NULL) { ++ function show_form($msg=null) { +hunk ./actions/newnotice.php 141 +- common_show_header(_('New notice'), NULL, $content, ++ common_show_header(_('New notice'), null, $content, +hunk ./actions/noticesearchrss.php 68 +- return NULL; ++ return null; +hunk ./actions/openidlogin.php 55 +- $this->show_form(NULL, $openid_url); ++ $this->show_form(null, $openid_url); hunk ./actions/openidlogin.php 63 -- function show_top($error=NULL) { -- if ($error) { -- common_element('div', array('class' => 'error'), $error); -- } else { -- $instr = $this->get_instructions(); -- $output = common_markup_to_html($instr); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- } -- } -+ function show_top($error=NULL) { -+ if ($error) { -+ common_element('div', array('class' => 'error'), $error); -+ } else { -+ $instr = $this->get_instructions(); -+ $output = common_markup_to_html($instr); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ } -+ } +- function show_top($error=NULL) { ++ function show_top($error=null) { hunk ./actions/openidlogin.php 75 -- function show_form($error=NULL, $openid_url) { -- common_show_header(_('OpenID Login'), NULL, $error, array($this, 'show_top')); -- $formaction = common_local_url('openidlogin'); -- common_element_start('form', array('method' => 'post', -- 'id' => 'openidlogin', -- 'action' => $formaction)); -- common_hidden('token', common_session_token()); -- common_input('openid_url', _('OpenID URL'), -- $openid_url, -- _('Your OpenID URL')); -- common_checkbox('rememberme', _('Remember me'), false, -- _('Automatically login in the future; ' . -- 'not for shared computers!')); -- common_submit('submit', _('Login')); -- common_element_end('form'); -- common_show_footer(); -- } -+ function show_form($error=NULL, $openid_url) { -+ common_show_header(_('OpenID Login'), NULL, $error, array($this, 'show_top')); -+ $formaction = common_local_url('openidlogin'); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'openidlogin', -+ 'action' => $formaction)); -+ common_hidden('token', common_session_token()); -+ common_input('openid_url', _('OpenID URL'), -+ $openid_url, -+ _('Your OpenID URL')); -+ common_checkbox('rememberme', _('Remember me'), false, -+ _('Automatically login in the future; ' . -+ 'not for shared computers!')); -+ common_submit('submit', _('Login')); -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/openidsettings.php 27 -- function get_instructions() { -- return _('[OpenID](%%doc.openid%%) lets you log into many sites ' . -- ' with the same user account. '. -- ' Manage your associated OpenIDs from here.'); -- } -+ function get_instructions() { -+ return _('[OpenID](%%doc.openid%%) lets you log into many sites ' . -+ ' with the same user account. '. -+ ' Manage your associated OpenIDs from here.'); -+ } +- function show_form($error=NULL, $openid_url) { +- common_show_header(_('OpenID Login'), NULL, $error, array($this, 'show_top')); ++ function show_form($error=null, $openid_url) { ++ common_show_header(_('OpenID Login'), null, $error, array($this, 'show_top')); hunk ./actions/openidsettings.php 33 -- function show_form($msg=NULL, $success=false) { -+ function show_form($msg=NULL, $success=false) { -hunk ./actions/openidsettings.php 35 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/openidsettings.php 37 -- $this->form_header(_('OpenID settings'), $msg, $success); -+ $this->form_header(_('OpenID settings'), $msg, $success); -hunk ./actions/openidsettings.php 39 -- common_element_start('form', array('method' => 'post', -- 'id' => 'openidadd', -- 'action' => -- common_local_url('openidsettings'))); -- common_hidden('token', common_session_token()); -- common_element('h2', NULL, _('Add OpenID')); -- common_element('p', NULL, -- _('If you want to add an OpenID to your account, ' . -- 'enter it in the box below and click "Add".')); -- common_element_start('p'); -- common_element('label', array('for' => 'openid_url'), -- _('OpenID URL')); -- common_element('input', array('name' => 'openid_url', -- 'type' => 'text', -- 'id' => 'openid_url')); -- common_element('input', array('type' => 'submit', -- 'id' => 'add', -- 'name' => 'add', -- 'class' => 'submit', -- 'value' => _('Add'))); -- common_element_end('p'); -- common_element_end('form'); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'openidadd', -+ 'action' => -+ common_local_url('openidsettings'))); -+ common_hidden('token', common_session_token()); -+ common_element('h2', NULL, _('Add OpenID')); -+ common_element('p', NULL, -+ _('If you want to add an OpenID to your account, ' . -+ 'enter it in the box below and click "Add".')); -+ common_element_start('p'); -+ common_element('label', array('for' => 'openid_url'), -+ _('OpenID URL')); -+ common_element('input', array('name' => 'openid_url', -+ 'type' => 'text', -+ 'id' => 'openid_url')); -+ common_element('input', array('type' => 'submit', -+ 'id' => 'add', -+ 'name' => 'add', -+ 'class' => 'submit', -+ 'value' => _('Add'))); -+ common_element_end('p'); -+ common_element_end('form'); -hunk ./actions/openidsettings.php 62 -- $oid = new User_openid(); -- $oid->user_id = $user->id; -+ $oid = new User_openid(); -+ $oid->user_id = $user->id; -hunk ./actions/openidsettings.php 65 -- $cnt = $oid->find(); -+ $cnt = $oid->find(); -hunk ./actions/openidsettings.php 67 -- if ($cnt > 0) { -+ if ($cnt > 0) { +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { +hunk ./actions/openidsettings.php 44 +- common_element('h2', NULL, _('Add OpenID')); +- common_element('p', NULL, ++ common_element('h2', null, _('Add OpenID')); ++ common_element('p', null, hunk ./actions/openidsettings.php 69 -- common_element('h2', NULL, _('Remove OpenID')); -+ common_element('h2', NULL, _('Remove OpenID')); -hunk ./actions/openidsettings.php 71 -- if ($cnt == 1 && !$user->password) { -+ if ($cnt == 1 && !$user->password) { +- common_element('h2', NULL, _('Remove OpenID')); ++ common_element('h2', null, _('Remove OpenID')); hunk ./actions/openidsettings.php 73 -- common_element('p', NULL, -- _('Removing your only OpenID would make it impossible to log in! ' . -- 'If you need to remove it, add another OpenID first.')); -+ common_element('p', NULL, -+ _('Removing your only OpenID would make it impossible to log in! ' . -+ 'If you need to remove it, add another OpenID first.')); -hunk ./actions/openidsettings.php 77 -- if ($oid->fetch()) { -- common_element_start('p'); -- common_element('a', array('href' => $oid->canonical), -- $oid->display); -- common_element_end('p'); -- } -+ if ($oid->fetch()) { -+ common_element_start('p'); -+ common_element('a', array('href' => $oid->canonical), -+ $oid->display); -+ common_element_end('p'); -+ } -hunk ./actions/openidsettings.php 84 -- } else { -+ } else { +- common_element('p', NULL, ++ common_element('p', null, hunk ./actions/openidsettings.php 86 -- common_element('p', NULL, -- _('You can remove an OpenID from your account '. -- 'by clicking the button marked "Remove".')); -- $idx = 0; -+ common_element('p', NULL, -+ _('You can remove an OpenID from your account '. -+ 'by clicking the button marked "Remove".')); -+ $idx = 0; -hunk ./actions/openidsettings.php 91 -- while ($oid->fetch()) { -- common_element_start('form', array('method' => 'POST', -- 'id' => 'openiddelete' . $idx, -- 'action' => -- common_local_url('openidsettings'))); -- common_element_start('p'); -- common_hidden('token', common_session_token()); -- common_element('a', array('href' => $oid->canonical), -- $oid->display); -- common_element('input', array('type' => 'hidden', -- 'id' => 'openid_url'.$idx, -- 'name' => 'openid_url', -- 'value' => $oid->canonical)); -- common_element('input', array('type' => 'submit', -- 'id' => 'remove'.$idx, -- 'name' => 'remove', -- 'class' => 'submit', -- 'value' => _('Remove'))); -- common_element_end('p'); -- common_element_end('form'); -- $idx++; -- } -- } -- } -+ while ($oid->fetch()) { -+ common_element_start('form', array('method' => 'POST', -+ 'id' => 'openiddelete' . $idx, -+ 'action' => -+ common_local_url('openidsettings'))); -+ common_element_start('p'); -+ common_hidden('token', common_session_token()); -+ common_element('a', array('href' => $oid->canonical), -+ $oid->display); -+ common_element('input', array('type' => 'hidden', -+ 'id' => 'openid_url'.$idx, -+ 'name' => 'openid_url', -+ 'value' => $oid->canonical)); -+ common_element('input', array('type' => 'submit', -+ 'id' => 'remove'.$idx, -+ 'name' => 'remove', -+ 'class' => 'submit', -+ 'value' => _('Remove'))); -+ common_element_end('p'); -+ common_element_end('form'); -+ $idx++; -+ } -+ } -+ } -hunk ./actions/openidsettings.php 116 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/openidsettings.php 119 -- function handle_post() { -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ function handle_post() { -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/openidsettings.php 127 -- if ($this->arg('add')) { -- $result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid'); -- if (is_string($result)) { # error message -- $this->show_form($result); -- } -- } else if ($this->arg('remove')) { -- $this->remove_openid(); -- } else { -- $this->show_form(_('Something weird happened.')); -- } -- } -+ if ($this->arg('add')) { -+ $result = oid_authenticate($this->trimmed('openid_url'), 'finishaddopenid'); -+ if (is_string($result)) { # error message -+ $this->show_form($result); -+ } -+ } else if ($this->arg('remove')) { -+ $this->remove_openid(); -+ } else { -+ $this->show_form(_('Something weird happened.')); -+ } -+ } -hunk ./actions/openidsettings.php 139 -- function remove_openid() { -+ function remove_openid() { -hunk ./actions/openidsettings.php 141 -- $openid_url = $this->trimmed('openid_url'); -- $oid = User_openid::staticGet('canonical', $openid_url); -- if (!$oid) { -- $this->show_form(_('No such OpenID.')); -- return; -- } -- $cur = common_current_user(); -- if (!$cur || $oid->user_id != $cur->id) { -- $this->show_form(_('That OpenID does not belong to you.')); -- return; -- } -- $oid->delete(); -- $this->show_form(_('OpenID removed.'), true); -- return; -- } -+ $openid_url = $this->trimmed('openid_url'); -+ $oid = User_openid::staticGet('canonical', $openid_url); -+ if (!$oid) { -+ $this->show_form(_('No such OpenID.')); -+ return; -+ } -+ $cur = common_current_user(); -+ if (!$cur || $oid->user_id != $cur->id) { -+ $this->show_form(_('That OpenID does not belong to you.')); -+ return; -+ } -+ $oid->delete(); -+ $this->show_form(_('OpenID removed.'), true); -+ return; -+ } -hunk ./actions/opensearch.php 24 -- function handle($args) { -+ function handle($args) { -hunk ./actions/opensearch.php 26 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/opensearch.php 28 -- $type = $this->trimmed('type'); -+ $type = $this->trimmed('type'); -hunk ./actions/opensearch.php 30 -- $short_name = ''; -- if ($type == 'people') { -- $type = 'peoplesearch'; -- $short_name = _('People Search'); -- } else { -- $short_name = _('Notice Search'); -- $type = 'noticesearch'; -- } -+ $short_name = ''; -+ if ($type == 'people') { -+ $type = 'peoplesearch'; -+ $short_name = _('People Search'); -+ } else { -+ $short_name = _('Notice Search'); -+ $type = 'noticesearch'; -+ } -hunk ./actions/opensearch.php 39 -- header('Content-Type: text/html'); -+ header('Content-Type: text/html'); -hunk ./actions/opensearch.php 41 -- common_start_xml(); -- common_element_start('OpenSearchDescription', array('xmlns' => 'http://a9.com/-/spec/opensearch/1.1/')); -+ common_start_xml(); -+ common_element_start('OpenSearchDescription', array('xmlns' => 'http://a9.com/-/spec/opensearch/1.1/')); -hunk ./actions/opensearch.php 44 -- $short_name = common_config('site', 'name').' '.$short_name; -- common_element('ShortName', NULL, $short_name); -- common_element('Contact', NULL, common_config('site', 'email')); -- common_element('Url', array('type' => 'text/html', 'method' => 'get', -- 'template' => str_replace('---', '{searchTerms}', common_local_url($type, array('q' => '---'))))); -- common_element('Image', array('height' => 16, 'width' => 16, 'type' => 'image/vnd.microsoft.icon'), common_path('favicon.ico')); -- common_element('Image', array('height' => 50, 'width' => 50, 'type' => 'image/png'), theme_path('logo.png')); -- common_element('AdultContent', NULL, 'false'); -- common_element('Language', NULL, common_language()); -- common_element('OutputEncoding', NULL, 'UTF-8'); -- common_element('InputEncoding', NULL, 'UTF-8'); -+ $short_name = common_config('site', 'name').' '.$short_name; -+ common_element('ShortName', NULL, $short_name); -+ common_element('Contact', NULL, common_config('site', 'email')); -+ common_element('Url', array('type' => 'text/html', 'method' => 'get', -+ 'template' => str_replace('---', '{searchTerms}', common_local_url($type, array('q' => '---'))))); -+ common_element('Image', array('height' => 16, 'width' => 16, 'type' => 'image/vnd.microsoft.icon'), common_path('favicon.ico')); -+ common_element('Image', array('height' => 50, 'width' => 50, 'type' => 'image/png'), theme_path('logo.png')); -+ common_element('AdultContent', NULL, 'false'); -+ common_element('Language', NULL, common_language()); -+ common_element('OutputEncoding', NULL, 'UTF-8'); -+ common_element('InputEncoding', NULL, 'UTF-8'); -hunk ./actions/opensearch.php 56 -- common_element_end('OpenSearchDescription'); -- common_end_xml(); -- } -+ common_element_end('OpenSearchDescription'); -+ common_end_xml(); -+ } -hunk ./actions/othersettings.php 26 -- function get_instructions() { -- return _('Manage various other options.'); -- } -+ function get_instructions() { -+ return _('Manage various other options.'); -+ } +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/opensearch.php 45 +- common_element('ShortName', NULL, $short_name); +- common_element('Contact', NULL, common_config('site', 'email')); ++ common_element('ShortName', null, $short_name); ++ common_element('Contact', null, common_config('site', 'email')); +hunk ./actions/opensearch.php 51 +- common_element('AdultContent', NULL, 'false'); +- common_element('Language', NULL, common_language()); +- common_element('OutputEncoding', NULL, 'UTF-8'); +- common_element('InputEncoding', NULL, 'UTF-8'); ++ common_element('AdultContent', null, 'false'); ++ common_element('Language', null, common_language()); ++ common_element('OutputEncoding', null, 'UTF-8'); ++ common_element('InputEncoding', null, 'UTF-8'); hunk ./actions/othersettings.php 30 -- function show_form($msg=NULL, $success=false) { -- $user = common_current_user(); -+ function show_form($msg=NULL, $success=false) { -+ $user = common_current_user(); -hunk ./actions/othersettings.php 33 -- $this->form_header(_('Other Settings'), $msg, $success); -+ $this->form_header(_('Other Settings'), $msg, $success); +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { hunk ./actions/othersettings.php 35 -- common_element('h2', NULL, _('URL Auto-shortening')); -- common_element_start('form', array('method' => 'post', -- 'id' => 'othersettings', -- 'action' => -- common_local_url('othersettings'))); -- common_hidden('token', common_session_token()); -+ common_element('h2', NULL, _('URL Auto-shortening')); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'othersettings', -+ 'action' => -+ common_local_url('othersettings'))); -+ common_hidden('token', common_session_token()); -hunk ./actions/othersettings.php 42 -- $services = array( -- '' => 'None', -+ $services = array( -+ '' => 'None', -hunk ./actions/othersettings.php 48 -- 'tinyurl.com' => 'tinyurl.com', -- 'is.gd' => 'is.gd', -- 'snipr.com' => 'snipr.com', -- 'metamark.net' => 'metamark.net' -- ); -+ 'tinyurl.com' => 'tinyurl.com', -+ 'is.gd' => 'is.gd', -+ 'snipr.com' => 'snipr.com', -+ 'metamark.net' => 'metamark.net' -+ ); -hunk ./actions/othersettings.php 54 -- common_dropdown('urlshorteningservice', _('Service'), $services, _('Automatic shortening service to use.'), FALSE, $user->urlshorteningservice); -+ common_dropdown('urlshorteningservice', _('Service'), $services, _('Automatic shortening service to use.'), FALSE, $user->urlshorteningservice); -hunk ./actions/othersettings.php 56 -- common_submit('save', _('Save')); -+ common_submit('save', _('Save')); -hunk ./actions/othersettings.php 58 -- common_element_end('form'); -+ common_element_end('form'); +- common_element('h2', NULL, _('URL Auto-shortening')); ++ common_element('h2', null, _('URL Auto-shortening')); hunk ./actions/othersettings.php 60 --// common_element('h2', NULL, _('Delete my account')); --// $this->show_delete_form(); -+// common_element('h2', NULL, _('Delete my account')); -+// $this->show_delete_form(); -hunk ./actions/othersettings.php 63 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/othersettings.php 66 -- function show_feeds_list($feeds) { -- common_element_start('div', array('class' => 'feedsdel')); -- common_element('p', null, 'Feeds:'); -- common_element_start('ul', array('class' => 'xoxo')); -+ function show_feeds_list($feeds) { -+ common_element_start('div', array('class' => 'feedsdel')); -+ common_element('p', null, 'Feeds:'); -+ common_element_start('ul', array('class' => 'xoxo')); -hunk ./actions/othersettings.php 71 -- foreach ($feeds as $key => $value) { -- $this->common_feed_item($feeds[$key]); -- } -- common_element_end('ul'); -- common_element_end('div'); -- } -+ foreach ($feeds as $key => $value) { -+ $this->common_feed_item($feeds[$key]); -+ } -+ common_element_end('ul'); -+ common_element_end('div'); -+ } -hunk ./actions/othersettings.php 79 -- function common_feed_item($feed) { -+ function common_feed_item($feed) { -hunk ./actions/othersettings.php 81 -- $nickname = $user->nickname; -+ $nickname = $user->nickname; -hunk ./actions/othersettings.php 83 -- switch($feed['item']) { -- case 'notices': default: -- $feed_classname = $feed['type']; -- $feed_mimetype = "application/".$feed['type']."+xml"; -- $feed_title = "$nickname's ".$feed['version']." notice feed"; -- $feed['textContent'] = "RSS"; -- break; -+ switch($feed['item']) { -+ case 'notices': default: -+ $feed_classname = $feed['type']; -+ $feed_mimetype = "application/".$feed['type']."+xml"; -+ $feed_title = "$nickname's ".$feed['version']." notice feed"; -+ $feed['textContent'] = "RSS"; -+ break; -hunk ./actions/othersettings.php 91 -- case 'foaf': -- $feed_classname = "foaf"; -- $feed_mimetype = "application/".$feed['type']."+xml"; -- $feed_title = "$nickname's FOAF file"; -- $feed['textContent'] = "FOAF"; -- break; -- } -- common_element_start('li'); -- common_element('a', array('href' => $feed['href'], -- 'class' => $feed_classname, -- 'type' => $feed_mimetype, -- 'title' => $feed_title), -- $feed['textContent']); -- common_element_end('li'); -- } -+ case 'foaf': -+ $feed_classname = "foaf"; -+ $feed_mimetype = "application/".$feed['type']."+xml"; -+ $feed_title = "$nickname's FOAF file"; -+ $feed['textContent'] = "FOAF"; -+ break; -+ } -+ common_element_start('li'); -+ common_element('a', array('href' => $feed['href'], -+ 'class' => $feed_classname, -+ 'type' => $feed_mimetype, -+ 'title' => $feed_title), -+ $feed['textContent']); -+ common_element_end('li'); -+ } -hunk ./actions/othersettings.php 107 --// function show_delete_form() { --// $user = common_current_user(); -+// function show_delete_form() { -+// $user = common_current_user(); -hunk ./actions/othersettings.php 113 --// common_element_start('form', array('method' => 'POST', --// 'id' => 'delete', --// 'action' => --// common_local_url('deleteprofile'))); -+// common_element_start('form', array('method' => 'POST', -+// 'id' => 'delete', -+// 'action' => -+// common_local_url('deleteprofile'))); -hunk ./actions/othersettings.php 118 --// common_hidden('token', common_session_token()); -+// common_hidden('token', common_session_token()); -hunk ./actions/othersettings.php 121 --// $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)), --// 'type' => 'rss', --// 'version' => 'RSS 1.0', --// 'item' => 'notices'), --// 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)), --// 'type' => 'rdf', --// 'version' => 'FOAF', --// 'item' => 'foaf'))); -+// $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('limit' => $notice_count, 'nickname' => $user->nickname)), -+// 'type' => 'rss', -+// 'version' => 'RSS 1.0', -+// 'item' => 'notices'), -+// 1=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)), -+// 'type' => 'rdf', -+// 'version' => 'FOAF', -+// 'item' => 'foaf'))); -hunk ./actions/othersettings.php 130 --// common_submit('deleteaccount', _('Delete my account')); --// common_element_end('form'); --// } -+// common_submit('deleteaccount', _('Delete my account')); -+// common_element_end('form'); -+// } -hunk ./actions/othersettings.php 134 -- function handle_post() { -+ function handle_post() { -hunk ./actions/othersettings.php 136 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/othersettings.php 143 -- if ($this->arg('save')) { -- $this->save_preferences(); -- }else { -- $this->show_form(_('Unexpected form submission.')); -- } -- } -+ if ($this->arg('save')) { -+ $this->save_preferences(); -+ }else { -+ $this->show_form(_('Unexpected form submission.')); -+ } -+ } -hunk ./actions/othersettings.php 150 -- function save_preferences() { -+ function save_preferences() { -hunk ./actions/othersettings.php 152 -- $urlshorteningservice = $this->trimmed('urlshorteningservice'); -+ $urlshorteningservice = $this->trimmed('urlshorteningservice'); -hunk ./actions/othersettings.php 154 -- if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) { -- $this->show_form(_('URL shortening service is too long (max 50 chars).')); -- return; -- } -+ if (!is_null($urlshorteningservice) && strlen($urlshorteningservice) > 50) { -+ $this->show_form(_('URL shortening service is too long (max 50 chars).')); -+ return; -+ } -hunk ./actions/othersettings.php 159 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/othersettings.php 161 -- assert(!is_null($user)); # should already be checked -+ assert(!is_null($user)); # should already be checked -hunk ./actions/othersettings.php 163 -- $user->query('BEGIN'); -+ $user->query('BEGIN'); -hunk ./actions/othersettings.php 165 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/othersettings.php 167 -- $user->urlshorteningservice = $urlshorteningservice; -+ $user->urlshorteningservice = $urlshorteningservice; -hunk ./actions/othersettings.php 169 -- $result = $user->update($original); -+ $result = $user->update($original); -hunk ./actions/othersettings.php 171 -- if ($result === FALSE) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } -hunk ./actions/othersettings.php 177 -- $user->query('COMMIT'); -+ $user->query('COMMIT'); -hunk ./actions/othersettings.php 179 -- $this->show_form(_('Preferences saved.'), true); -- } -+ $this->show_form(_('Preferences saved.'), true); -+ } -hunk ./actions/peoplesearch.php 27 -- function get_instructions() { -- return _('Search for people on %%site.name%% by their name, location, or interests. ' . -- 'Separate the terms by spaces; they must be 3 characters or more.'); -- } -+ function get_instructions() { -+ return _('Search for people on %%site.name%% by their name, location, or interests. ' . -+ 'Separate the terms by spaces; they must be 3 characters or more.'); -+ } -hunk ./actions/peoplesearch.php 32 -- function get_title() { -- return _('People search'); -- } -+ function get_title() { -+ return _('People search'); -+ } -hunk ./actions/peoplesearch.php 36 -- function show_results($q, $page) { -+ function show_results($q, $page) { -hunk ./actions/peoplesearch.php 38 -- $profile = new Profile(); -+ $profile = new Profile(); -hunk ./actions/peoplesearch.php 40 -- # lcase it for comparison -- $q = strtolower($q); -+ # lcase it for comparison -+ $q = strtolower($q); -hunk ./actions/peoplesearch.php 46 -- # Ask for an extra to see if there's more. -+ # Ask for an extra to see if there's more. -hunk ./actions/peoplesearch.php 52 -- $cnt = $profile->find(); -+ $cnt = $profile->find(); -+ } -+ if ($cnt > 0) { -+ $terms = preg_split('/[\s,]+/', $q); -+ $results = new PeopleSearchResults($profile, $terms); -+ $results->show_list(); -+ } else { -+ common_element('p', 'error', _('No results')); -hunk ./actions/peoplesearch.php 61 -- if ($cnt > 0) { -- $terms = preg_split('/[\s,]+/', $q); -- $results = new PeopleSearchResults($profile, $terms); -- $results->show_list(); -- } else { -- common_element('p', 'error', _('No results')); -- } -hunk ./actions/peoplesearch.php 62 -- $profile->free(); -- -- common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, -- $page, 'peoplesearch', array('q' => $q)); -- } -+ $profile->free(); -+ -+ common_pagination($page > 1, $cnt > PROFILES_PER_PAGE, -+ $page, 'peoplesearch', array('q' => $q)); -+ } +-// common_element('h2', NULL, _('Delete my account')); ++// common_element('h2', null, _('Delete my account')); hunk ./actions/peoplesearch.php 71 -- var $terms = NULL; -- var $pattern = NULL; -- -- function __construct($profile, $terms) { -- parent::__construct($profile); -- $this->terms = array_map('preg_quote', -- array_map('htmlspecialchars', $terms)); -- $this->pattern = '/('.implode('|',$terms).')/i'; -- } -- -- function highlight($text) { -- return preg_replace($this->pattern, '\\1', htmlspecialchars($text)); -- } -+ var $terms = NULL; -+ var $pattern = NULL; -+ -+ function __construct($profile, $terms) { -+ parent::__construct($profile); -+ $this->terms = array_map('preg_quote', -+ array_map('htmlspecialchars', $terms)); -+ $this->pattern = '/('.implode('|',$terms).')/i'; -+ } -+ -+ function highlight($text) { -+ return preg_replace($this->pattern, '\\1', htmlspecialchars($text)); -+ } -hunk ./actions/peopletag.php 25 -- -- function handle($args) { -+ -+ function handle($args) { -hunk ./actions/peopletag.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/peopletag.php 30 -- $tag = $this->trimmed('tag'); -- -- if (!common_valid_profile_tag($tag)) { -- $this->client_error(sprintf(_('Not a valid people tag: %s'), $tag)); -- return; -- } -+ $tag = $this->trimmed('tag'); -+ -+ if (!common_valid_profile_tag($tag)) { -+ $this->client_error(sprintf(_('Not a valid people tag: %s'), $tag)); -+ return; -+ } -hunk ./actions/peopletag.php 37 -- $page = $this->trimmed('page'); -- -- if (!$page) { -- $page = 1; -- } -- -- # Looks like we're good; show the header -+ $page = $this->trimmed('page'); -+ -+ if (!$page) { -+ $page = 1; -+ } -+ -+ # Looks like we're good; show the header -hunk ./actions/peopletag.php 45 -- common_show_header(sprintf(_('Users self-tagged with %s - page %d'), $tag, $page), -- NULL, $tag, array($this, 'show_top')); -+ common_show_header(sprintf(_('Users self-tagged with %s - page %d'), $tag, $page), -+ NULL, $tag, array($this, 'show_top')); -hunk ./actions/peopletag.php 48 -- $this->show_people($tag, $page); -+ $this->show_people($tag, $page); -hunk ./actions/peopletag.php 50 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/peopletag.php 53 -- function show_people($tag, $page) { -- -- $profile = new Profile(); -+ function show_people($tag, $page) { -+ -+ $profile = new Profile(); -hunk ./actions/peopletag.php 57 -- $offset = ($page-1)*PROFILES_PER_PAGE; -- $limit = PROFILES_PER_PAGE + 1; -- -- if (common_config('db','type') == 'pgsql') { -- $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset; -- } else { -- $lim = ' LIMIT ' . $offset . ', ' . $limit; -- } -+ $offset = ($page-1)*PROFILES_PER_PAGE; -+ $limit = PROFILES_PER_PAGE + 1; -+ -+ if (common_config('db','type') == 'pgsql') { -+ $lim = ' LIMIT ' . $limit . ' OFFSET ' . $offset; -+ } else { -+ $lim = ' LIMIT ' . $offset . ', ' . $limit; -+ } -hunk ./actions/peopletag.php 66 -- # XXX: memcached this -- -- $profile->query(sprintf('SELECT profile.* ' . -- 'FROM profile JOIN profile_tag ' . -- 'ON profile.id = profile_tag.tagger ' . -- 'WHERE profile_tag.tagger = profile_tag.tagged ' . -- 'AND tag = "%s" ' . -- 'ORDER BY profile_tag.modified DESC ' . -- $lim, $tag)); -+ # XXX: memcached this -+ -+ $profile->query(sprintf('SELECT profile.* ' . -+ 'FROM profile JOIN profile_tag ' . -+ 'ON profile.id = profile_tag.tagger ' . -+ 'WHERE profile_tag.tagger = profile_tag.tagged ' . -+ 'AND tag = "%s" ' . -+ 'ORDER BY profile_tag.modified DESC ' . -+ $lim, $tag)); -hunk ./actions/peopletag.php 76 -- $pl = new ProfileList($profile); -- $cnt = $pl->show_list(); -- -- common_pagination($page > 1, -- $cnt > PROFILES_PER_PAGE, -- $page, -- $this->trimmed('action'), -- array('tag' => $tag)); -- } -- -- function show_top($tag) { -- $instr = sprintf(_('These are users who have tagged themselves "%s" ' . -- 'to show a common interest, characteristic, hobby or job.'), $tag); -- common_element_start('div', 'instructions'); -- common_element_start('p'); -- common_text($instr); -- common_element_end('p'); -- common_element_end('div'); -- } -+ $pl = new ProfileList($profile); -+ $cnt = $pl->show_list(); -+ -+ common_pagination($page > 1, -+ $cnt > PROFILES_PER_PAGE, -+ $page, -+ $this->trimmed('action'), -+ array('tag' => $tag)); -+ } -+ -+ function show_top($tag) { -+ $instr = sprintf(_('These are users who have tagged themselves "%s" ' . -+ 'to show a common interest, characteristic, hobby or job.'), $tag); -+ common_element_start('div', 'instructions'); -+ common_element_start('p'); -+ common_text($instr); -+ common_element_end('p'); -+ common_element_end('div'); -+ } -hunk ./actions/peopletag.php 96 -- function get_title() { -- return NULL; -- } -+ function get_title() { -+ return NULL; -+ } -hunk ./actions/peopletag.php 100 -- function show_header($arr) { -- return; -- } -+ function show_header($arr) { -+ return; -+ } -hunk ./actions/postnotice.php 25 -- function handle($args) { -- parent::handle($args); -- try { -- common_remove_magic_from_request(); -- $req = OAuthRequest::from_request(); -- # Note: server-to-server function! -- $server = omb_oauth_server(); -- list($consumer, $token) = $server->verify_request($req); -- if ($this->save_notice($req, $consumer, $token)) { -- print "omb_version=".OMB_VERSION_01; -- } -- } catch (OAuthException $e) { -- common_server_error($e->getMessage()); -- return; -- } -- } -+ function handle($args) { -+ parent::handle($args); -+ try { -+ common_remove_magic_from_request(); -+ $req = OAuthRequest::from_request(); -+ # Note: server-to-server function! -+ $server = omb_oauth_server(); -+ list($consumer, $token) = $server->verify_request($req); -+ if ($this->save_notice($req, $consumer, $token)) { -+ print "omb_version=".OMB_VERSION_01; -+ } -+ } catch (OAuthException $e) { -+ common_server_error($e->getMessage()); -+ return; -+ } -+ } -hunk ./actions/postnotice.php 42 -- function save_notice(&$req, &$consumer, &$token) { -- $version = $req->get_parameter('omb_version'); -- if ($version != OMB_VERSION_01) { -- common_user_error(_('Unsupported OMB version'), 400); -- return false; -- } -- # First, check to see -- $listenee = $req->get_parameter('omb_listenee'); -- $remote_profile = Remote_profile::staticGet('uri', $listenee); -- if (!$remote_profile) { -- common_user_error(_('Profile unknown'), 403); -- return false; -- } -- $sub = Subscription::staticGet('token', $token->key); -- if (!$sub) { -- common_user_error(_('No such subscription'), 403); -- return false; -- } -- $content = $req->get_parameter('omb_notice_content'); -+ function save_notice(&$req, &$consumer, &$token) { -+ $version = $req->get_parameter('omb_version'); -+ if ($version != OMB_VERSION_01) { -+ common_user_error(_('Unsupported OMB version'), 400); -+ return false; -+ } -+ # First, check to see -+ $listenee = $req->get_parameter('omb_listenee'); -+ $remote_profile = Remote_profile::staticGet('uri', $listenee); -+ if (!$remote_profile) { -+ common_user_error(_('Profile unknown'), 403); -+ return false; -+ } -+ $sub = Subscription::staticGet('token', $token->key); -+ if (!$sub) { -+ common_user_error(_('No such subscription'), 403); -+ return false; -+ } -+ $content = $req->get_parameter('omb_notice_content'); -hunk ./actions/postnotice.php 66 -- $notice_uri = $req->get_parameter('omb_notice'); -- if (!Validate::uri($notice_uri) && -- !common_valid_tag($notice_uri)) { -- common_user_error(_('Invalid notice uri'), 400); -- return false; -- } -- $notice_url = $req->get_parameter('omb_notice_url'); -- if ($notice_url && !common_valid_http_url($notice_url)) { -- common_user_error(_('Invalid notice url'), 400); -- return false; -- } -- $notice = Notice::staticGet('uri', $notice_uri); -- if (!$notice) { -- $notice = Notice::saveNew($remote_profile->id, $content, 'omb', false, 0, $notice_uri); -- if (is_string($notice)) { -- common_server_serror($notice, 500); -- return false; -- } -- common_broadcast_notice($notice, true); -- } -- return true; -- } -+ $notice_uri = $req->get_parameter('omb_notice'); -+ if (!Validate::uri($notice_uri) && -+ !common_valid_tag($notice_uri)) { -+ common_user_error(_('Invalid notice uri'), 400); -+ return false; -+ } -+ $notice_url = $req->get_parameter('omb_notice_url'); -+ if ($notice_url && !common_valid_http_url($notice_url)) { -+ common_user_error(_('Invalid notice url'), 400); -+ return false; -+ } -+ $notice = Notice::staticGet('uri', $notice_uri); -+ if (!$notice) { -+ $notice = Notice::saveNew($remote_profile->id, $content, 'omb', false, 0, $notice_uri); -+ if (is_string($notice)) { -+ common_server_serror($notice, 500); -+ return false; -+ } -+ common_broadcast_notice($notice, true); -+ } -+ return true; -+ } -hunk ./actions/profilesettings.php 26 -- function get_instructions() { -- return _('You can update your personal profile info here '. -- 'so people know more about you.'); -- } -+ function get_instructions() { -+ return _('You can update your personal profile info here '. -+ 'so people know more about you.'); -+ } +- var $terms = NULL; +- var $pattern = NULL; ++ var $terms = null; ++ var $pattern = null; +hunk ./actions/peopletag.php 46 +- NULL, $tag, array($this, 'show_top')); ++ null, $tag, array($this, 'show_top')); +hunk ./actions/peopletag.php 97 +- return NULL; ++ return null; hunk ./actions/profilesettings.php 31 -- function show_form($msg=NULL, $success=false) { -- $this->form_header(_('Profile settings'), $msg, $success); -- $this->show_settings_form(); -- common_element('h2', NULL, _('Avatar')); -- $this->show_avatar_form(); -- common_element('h2', NULL, _('Change password')); -- $this->show_password_form(); --// common_element('h2', NULL, _('Delete my account')); --// $this->show_delete_form(); -- common_show_footer(); -- } -+ function show_form($msg=NULL, $success=false) { -+ $this->form_header(_('Profile settings'), $msg, $success); -+ $this->show_settings_form(); -+ common_element('h2', NULL, _('Avatar')); -+ $this->show_avatar_form(); -+ common_element('h2', NULL, _('Change password')); -+ $this->show_password_form(); -+// common_element('h2', NULL, _('Delete my account')); -+// $this->show_delete_form(); -+ common_show_footer(); -+ } -hunk ./actions/profilesettings.php 43 -- function handle_post() { -+ function handle_post() { -hunk ./actions/profilesettings.php 45 -- # CSRF protection -+ # CSRF protection -hunk ./actions/profilesettings.php 47 -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/profilesettings.php 53 -- if ($this->arg('save')) { -- $this->save_profile(); -- } else if ($this->arg('upload')) { -- $this->upload_avatar(); -- } else if ($this->arg('changepass')) { -- $this->change_password(); -- } -+ if ($this->arg('save')) { -+ $this->save_profile(); -+ } else if ($this->arg('upload')) { -+ $this->upload_avatar(); -+ } else if ($this->arg('changepass')) { -+ $this->change_password(); -+ } -hunk ./actions/profilesettings.php 61 -- } -+ } -hunk ./actions/profilesettings.php 63 -- function show_settings_form() { -+ function show_settings_form() { -hunk ./actions/profilesettings.php 65 -- $user = common_current_user(); -- $profile = $user->getProfile(); -+ $user = common_current_user(); -+ $profile = $user->getProfile(); -hunk ./actions/profilesettings.php 68 -- common_element_start('form', array('method' => 'POST', -- 'id' => 'profilesettings', -- 'action' => -- common_local_url('profilesettings'))); -- common_hidden('token', common_session_token()); -- -- # too much common patterns here... abstractable? -- -- common_input('nickname', _('Nickname'), -- ($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname, -- _('1-64 lowercase letters or numbers, no punctuation or spaces')); -- common_input('fullname', _('Full name'), -- ($this->arg('fullname')) ? $this->arg('fullname') : $profile->fullname); -- common_input('homepage', _('Homepage'), -- ($this->arg('homepage')) ? $this->arg('homepage') : $profile->homepage, -- _('URL of your homepage, blog, or profile on another site')); -- common_textarea('bio', _('Bio'), -- ($this->arg('bio')) ? $this->arg('bio') : $profile->bio, -- _('Describe yourself and your interests in 140 chars')); -- common_input('location', _('Location'), -- ($this->arg('location')) ? $this->arg('location') : $profile->location, -- _('Where you are, like "City, State (or Region), Country"')); -- common_input('tags', _('Tags'), -- ($this->arg('tags')) ? $this->arg('tags') : implode(' ', $user->getSelfTags()), -- _('Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated')); -+ common_element_start('form', array('method' => 'POST', -+ 'id' => 'profilesettings', -+ 'action' => -+ common_local_url('profilesettings'))); -+ common_hidden('token', common_session_token()); -+ -+ # too much common patterns here... abstractable? -+ -+ common_input('nickname', _('Nickname'), -+ ($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname, -+ _('1-64 lowercase letters or numbers, no punctuation or spaces')); -+ common_input('fullname', _('Full name'), -+ ($this->arg('fullname')) ? $this->arg('fullname') : $profile->fullname); -+ common_input('homepage', _('Homepage'), -+ ($this->arg('homepage')) ? $this->arg('homepage') : $profile->homepage, -+ _('URL of your homepage, blog, or profile on another site')); -+ common_textarea('bio', _('Bio'), -+ ($this->arg('bio')) ? $this->arg('bio') : $profile->bio, -+ _('Describe yourself and your interests in 140 chars')); -+ common_input('location', _('Location'), -+ ($this->arg('location')) ? $this->arg('location') : $profile->location, -+ _('Where you are, like "City, State (or Region), Country"')); -+ common_input('tags', _('Tags'), -+ ($this->arg('tags')) ? $this->arg('tags') : implode(' ', $user->getSelfTags()), -+ _('Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated')); -hunk ./actions/profilesettings.php 94 -- $language = common_language(); -- common_dropdown('language', _('Language'), get_nice_language_list(), _('Preferred language'), TRUE, $language); -- $timezone = common_timezone(); -- $timezones = array(); -- foreach(DateTimeZone::listIdentifiers() as $k => $v) { -- $timezones[$v] = $v; -- } -- common_dropdown('timezone', _('Timezone'), $timezones, _('What timezone are you normally in?'), TRUE, $timezone); -+ $language = common_language(); -+ common_dropdown('language', _('Language'), get_nice_language_list(), _('Preferred language'), TRUE, $language); -+ $timezone = common_timezone(); -+ $timezones = array(); -+ foreach(DateTimeZone::listIdentifiers() as $k => $v) { -+ $timezones[$v] = $v; -+ } -+ common_dropdown('timezone', _('Timezone'), $timezones, _('What timezone are you normally in?'), TRUE, $timezone); -hunk ./actions/profilesettings.php 103 -- common_checkbox('autosubscribe', _('Automatically subscribe to whoever subscribes to me (best for non-humans)'), -- ($this->arg('autosubscribe')) ? $this->boolean('autosubscribe') : $user->autosubscribe); -+ common_checkbox('autosubscribe', _('Automatically subscribe to whoever subscribes to me (best for non-humans)'), -+ ($this->arg('autosubscribe')) ? $this->boolean('autosubscribe') : $user->autosubscribe); -hunk ./actions/profilesettings.php 106 -- common_submit('save', _('Save')); -+ common_submit('save', _('Save')); -hunk ./actions/profilesettings.php 108 -- common_element_end('form'); -+ common_element_end('form'); -hunk ./actions/profilesettings.php 111 -- } -+ } -hunk ./actions/profilesettings.php 113 -- function show_avatar_form() { -+ function show_avatar_form() { -hunk ./actions/profilesettings.php 115 -- $user = common_current_user(); -- $profile = $user->getProfile(); -+ $user = common_current_user(); -+ $profile = $user->getProfile(); -hunk ./actions/profilesettings.php 118 -- if (!$profile) { -- common_log_db_error($user, 'SELECT', __FILE__); -- $this->server_error(_('User without matching profile')); -- return; -- } -- -- $original = $profile->getOriginalAvatar(); -+ if (!$profile) { -+ common_log_db_error($user, 'SELECT', __FILE__); -+ $this->server_error(_('User without matching profile')); -+ return; -+ } -+ -+ $original = $profile->getOriginalAvatar(); -hunk ./actions/profilesettings.php 127 -- common_element_start('form', array('enctype' => 'multipart/form-data', -- 'method' => 'POST', -- 'id' => 'avatar', -- 'action' => -- common_local_url('profilesettings'))); -- common_hidden('token', common_session_token()); -+ common_element_start('form', array('enctype' => 'multipart/form-data', -+ 'method' => 'POST', -+ 'id' => 'avatar', -+ 'action' => -+ common_local_url('profilesettings'))); -+ common_hidden('token', common_session_token()); -hunk ./actions/profilesettings.php 134 -- if ($original) { -- common_element('img', array('src' => $original->url, -- 'class' => 'avatar original', -- 'width' => $original->width, -- 'height' => $original->height, -- 'alt' => $user->nickname)); -- } -+ if ($original) { -+ common_element('img', array('src' => $original->url, -+ 'class' => 'avatar original', -+ 'width' => $original->width, -+ 'height' => $original->height, -+ 'alt' => $user->nickname)); -+ } -hunk ./actions/profilesettings.php 142 -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -hunk ./actions/profilesettings.php 144 -- if ($avatar) { -- common_element('img', array('src' => $avatar->url, -- 'class' => 'avatar profile', -- 'width' => AVATAR_PROFILE_SIZE, -- 'height' => AVATAR_PROFILE_SIZE, -- 'alt' => $user->nickname)); -- } -+ if ($avatar) { -+ common_element('img', array('src' => $avatar->url, -+ 'class' => 'avatar profile', -+ 'width' => AVATAR_PROFILE_SIZE, -+ 'height' => AVATAR_PROFILE_SIZE, -+ 'alt' => $user->nickname)); -+ } -hunk ./actions/profilesettings.php 153 -- common_element('input', array('name' => 'MAX_FILE_SIZE', -- 'type' => 'hidden', -- 'id' => 'MAX_FILE_SIZE', -- 'value' => MAX_AVATAR_SIZE)); -+ common_element('input', array('name' => 'MAX_FILE_SIZE', -+ 'type' => 'hidden', -+ 'id' => 'MAX_FILE_SIZE', -+ 'value' => MAX_AVATAR_SIZE)); -hunk ./actions/profilesettings.php 158 -- common_element_start('p'); -+ common_element_start('p'); -hunk ./actions/profilesettings.php 161 -- common_element('input', array('name' => 'avatarfile', -- 'type' => 'file', -- 'id' => 'avatarfile')); -- common_element_end('p'); -+ common_element('input', array('name' => 'avatarfile', -+ 'type' => 'file', -+ 'id' => 'avatarfile')); -+ common_element_end('p'); -hunk ./actions/profilesettings.php 166 -- common_submit('upload', _('Upload')); -- common_element_end('form'); -+ common_submit('upload', _('Upload')); -+ common_element_end('form'); -hunk ./actions/profilesettings.php 169 -- } -+ } -hunk ./actions/profilesettings.php 171 -- function show_password_form() { -+ function show_password_form() { -hunk ./actions/profilesettings.php 173 -- $user = common_current_user(); -- common_element_start('form', array('method' => 'POST', -- 'id' => 'password', -- 'action' => -- common_local_url('profilesettings'))); -+ $user = common_current_user(); -+ common_element_start('form', array('method' => 'POST', -+ 'id' => 'password', -+ 'action' => -+ common_local_url('profilesettings'))); -hunk ./actions/profilesettings.php 179 -- common_hidden('token', common_session_token()); -+ common_hidden('token', common_session_token()); -hunk ./actions/profilesettings.php 181 -- # Users who logged in with OpenID won't have a pwd -- if ($user->password) { -- common_password('oldpassword', _('Old password')); -- } -- common_password('newpassword', _('New password'), -- _('6 or more characters')); -- common_password('confirm', _('Confirm'), -- _('same as password above')); -- common_submit('changepass', _('Change')); -- common_element_end('form'); -- } -+ # Users who logged in with OpenID won't have a pwd -+ if ($user->password) { -+ common_password('oldpassword', _('Old password')); -+ } -+ common_password('newpassword', _('New password'), -+ _('6 or more characters')); -+ common_password('confirm', _('Confirm'), -+ _('same as password above')); -+ common_submit('changepass', _('Change')); -+ common_element_end('form'); -+ } -hunk ./actions/profilesettings.php 193 -- function save_profile() { -- $nickname = $this->trimmed('nickname'); -- $fullname = $this->trimmed('fullname'); -- $homepage = $this->trimmed('homepage'); -- $bio = $this->trimmed('bio'); -- $location = $this->trimmed('location'); -- $autosubscribe = $this->boolean('autosubscribe'); -- $language = $this->trimmed('language'); -- $timezone = $this->trimmed('timezone'); -- $tagstring = $this->trimmed('tags'); -- -- # Some validation -+ function save_profile() { -+ $nickname = $this->trimmed('nickname'); -+ $fullname = $this->trimmed('fullname'); -+ $homepage = $this->trimmed('homepage'); -+ $bio = $this->trimmed('bio'); -+ $location = $this->trimmed('location'); -+ $autosubscribe = $this->boolean('autosubscribe'); -+ $language = $this->trimmed('language'); -+ $timezone = $this->trimmed('timezone'); -+ $tagstring = $this->trimmed('tags'); -+ -+ # Some validation -hunk ./actions/profilesettings.php 206 -- if (!Validate::string($nickname, array('min_length' => 1, -- 'max_length' => 64, -- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -- $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.')); -- return; -- } else if (!User::allowed_nickname($nickname)) { -- $this->show_form(_('Not a valid nickname.')); -- return; -- } else if (!is_null($homepage) && (strlen($homepage) > 0) && -- !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) { -- $this->show_form(_('Homepage is not a valid URL.')); -- return; -- } else if (!is_null($fullname) && strlen($fullname) > 255) { -- $this->show_form(_('Full name is too long (max 255 chars).')); -- return; -- } else if (!is_null($bio) && strlen($bio) > 140) { -- $this->show_form(_('Bio is too long (max 140 chars).')); -- return; -- } else if (!is_null($location) && strlen($location) > 255) { -- $this->show_form(_('Location is too long (max 255 chars).')); -- return; -- } else if (is_null($timezone) || !in_array($timezone, DateTimeZone::listIdentifiers())) { -- $this->show_form(_('Timezone not selected.')); -- return; -- } else if ($this->nickname_exists($nickname)) { -- $this->show_form(_('Nickname already in use. Try another one.')); -- return; -+ if (!Validate::string($nickname, array('min_length' => 1, -+ 'max_length' => 64, -+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -+ $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.')); -+ return; -+ } else if (!User::allowed_nickname($nickname)) { -+ $this->show_form(_('Not a valid nickname.')); -+ return; -+ } else if (!is_null($homepage) && (strlen($homepage) > 0) && -+ !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) { -+ $this->show_form(_('Homepage is not a valid URL.')); -+ return; -+ } else if (!is_null($fullname) && strlen($fullname) > 255) { -+ $this->show_form(_('Full name is too long (max 255 chars).')); -+ return; -+ } else if (!is_null($bio) && strlen($bio) > 140) { -+ $this->show_form(_('Bio is too long (max 140 chars).')); -+ return; -+ } else if (!is_null($location) && strlen($location) > 255) { -+ $this->show_form(_('Location is too long (max 255 chars).')); -+ return; -+ } else if (is_null($timezone) || !in_array($timezone, DateTimeZone::listIdentifiers())) { -+ $this->show_form(_('Timezone not selected.')); -+ return; -+ } else if ($this->nickname_exists($nickname)) { -+ $this->show_form(_('Nickname already in use. Try another one.')); -+ return; -hunk ./actions/profilesettings.php 234 -- $this->show_form(_('Language is too long (max 50 chars).')); -- return; -- } -+ $this->show_form(_('Language is too long (max 50 chars).')); -+ return; -+ } -hunk ./actions/profilesettings.php 238 -- if ($tagstring) { -- $tags = array_map('common_canonical_tag', preg_split('/[\s,]+/', $tagstring)); -- } else { -- $tags = array(); -- } -- -- foreach ($tags as $tag) { -- if (!common_valid_profile_tag($tag)) { -- $this->show_form(sprintf(_('Invalid tag: "%s"'), $tag)); -- return; -- } -- } -- -- $user = common_current_user(); -+ if ($tagstring) { -+ $tags = array_map('common_canonical_tag', preg_split('/[\s,]+/', $tagstring)); -+ } else { -+ $tags = array(); -+ } -+ -+ foreach ($tags as $tag) { -+ if (!common_valid_profile_tag($tag)) { -+ $this->show_form(sprintf(_('Invalid tag: "%s"'), $tag)); -+ return; -+ } -+ } -+ -+ $user = common_current_user(); -hunk ./actions/profilesettings.php 253 -- $user->query('BEGIN'); -+ $user->query('BEGIN'); -hunk ./actions/profilesettings.php 255 -- if ($user->nickname != $nickname || -- $user->language != $language || -- $user->timezone != $timezone) { -+ if ($user->nickname != $nickname || -+ $user->language != $language || -+ $user->timezone != $timezone) { -hunk ./actions/profilesettings.php 259 -- common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname, -- __FILE__); -- common_debug('Updating user language from ' . $user->language . ' to ' . $language, -- __FILE__); -- common_debug('Updating user timezone from ' . $user->timezone . ' to ' . $timezone, -- __FILE__); -+ common_debug('Updating user nickname from ' . $user->nickname . ' to ' . $nickname, -+ __FILE__); -+ common_debug('Updating user language from ' . $user->language . ' to ' . $language, -+ __FILE__); -+ common_debug('Updating user timezone from ' . $user->timezone . ' to ' . $timezone, -+ __FILE__); -hunk ./actions/profilesettings.php 266 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/profilesettings.php 268 -- $user->nickname = $nickname; -- $user->language = $language; -- $user->timezone = $timezone; -+ $user->nickname = $nickname; -+ $user->language = $language; -+ $user->timezone = $timezone; -hunk ./actions/profilesettings.php 272 -- $result = $user->updateKeys($original); -+ $result = $user->updateKeys($original); -hunk ./actions/profilesettings.php 274 -- if ($result === FALSE) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } else { -- # Re-initialize language environment if it changed -- common_init_language(); -- } -- } -+ if ($result === FALSE) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } else { -+ # Re-initialize language environment if it changed -+ common_init_language(); -+ } -+ } -hunk ./actions/profilesettings.php 284 -- # XXX: XOR -+ # XXX: XOR -hunk ./actions/profilesettings.php 286 -- if ($user->autosubscribe ^ $autosubscribe) { -+ if ($user->autosubscribe ^ $autosubscribe) { -hunk ./actions/profilesettings.php 288 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/profilesettings.php 290 -- $user->autosubscribe = $autosubscribe; -+ $user->autosubscribe = $autosubscribe; -hunk ./actions/profilesettings.php 292 -- $result = $user->update($original); -+ $result = $user->update($original); -hunk ./actions/profilesettings.php 294 -- if ($result === FALSE) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user for autosubscribe.')); -- return; -- } -- } -+ if ($result === FALSE) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user for autosubscribe.')); -+ return; -+ } -+ } -hunk ./actions/profilesettings.php 301 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/profilesettings.php 303 -- $orig_profile = clone($profile); -+ $orig_profile = clone($profile); -hunk ./actions/profilesettings.php 305 -- $profile->nickname = $user->nickname; -- $profile->fullname = $fullname; -- $profile->homepage = $homepage; -- $profile->bio = $bio; -- $profile->location = $location; -- $profile->profileurl = common_profile_url($nickname); -+ $profile->nickname = $user->nickname; -+ $profile->fullname = $fullname; -+ $profile->homepage = $homepage; -+ $profile->bio = $bio; -+ $profile->location = $location; -+ $profile->profileurl = common_profile_url($nickname); -hunk ./actions/profilesettings.php 312 -- common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__); -- common_debug('New profile: ' . common_log_objstring($profile), __FILE__); -+ common_debug('Old profile: ' . common_log_objstring($orig_profile), __FILE__); -+ common_debug('New profile: ' . common_log_objstring($profile), __FILE__); -hunk ./actions/profilesettings.php 315 -- $result = $profile->update($orig_profile); -+ $result = $profile->update($orig_profile); -hunk ./actions/profilesettings.php 317 -- if (!$result) { -- common_log_db_error($profile, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t save profile.')); -- return; -- } -+ if (!$result) { -+ common_log_db_error($profile, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t save profile.')); -+ return; -+ } -hunk ./actions/profilesettings.php 323 -- # Set the user tags -- -- $result = $user->setSelfTags($tags); -+ # Set the user tags -+ -+ $result = $user->setSelfTags($tags); -hunk ./actions/profilesettings.php 327 -- if (!$result) { -- common_server_error(_('Couldn\'t save tags.')); -- return; -- } -- -- $user->query('COMMIT'); -+ if (!$result) { -+ common_server_error(_('Couldn\'t save tags.')); -+ return; -+ } -+ -+ $user->query('COMMIT'); -hunk ./actions/profilesettings.php 334 -- common_broadcast_profile($profile); -+ common_broadcast_profile($profile); -hunk ./actions/profilesettings.php 336 -- $this->show_form(_('Settings saved.'), TRUE); -- } -+ $this->show_form(_('Settings saved.'), TRUE); -+ } -hunk ./actions/profilesettings.php 340 -- function upload_avatar() { -- switch ($_FILES['avatarfile']['error']) { -- case UPLOAD_ERR_OK: # success, jump out -- break; -- case UPLOAD_ERR_INI_SIZE: -- case UPLOAD_ERR_FORM_SIZE: -- $this->show_form(_('That file is too big.')); -- return; -- case UPLOAD_ERR_PARTIAL: -- @unlink($_FILES['avatarfile']['tmp_name']); -- $this->show_form(_('Partial upload.')); -- return; -- default: -- $this->show_form(_('System error uploading file.')); -- return; -- } -+ function upload_avatar() { -+ switch ($_FILES['avatarfile']['error']) { -+ case UPLOAD_ERR_OK: # success, jump out -+ break; -+ case UPLOAD_ERR_INI_SIZE: -+ case UPLOAD_ERR_FORM_SIZE: -+ $this->show_form(_('That file is too big.')); -+ return; -+ case UPLOAD_ERR_PARTIAL: -+ @unlink($_FILES['avatarfile']['tmp_name']); -+ $this->show_form(_('Partial upload.')); -+ return; -+ default: -+ $this->show_form(_('System error uploading file.')); -+ return; -+ } -hunk ./actions/profilesettings.php 357 -- $info = @getimagesize($_FILES['avatarfile']['tmp_name']); -+ $info = @getimagesize($_FILES['avatarfile']['tmp_name']); -hunk ./actions/profilesettings.php 359 -- if (!$info) { -- @unlink($_FILES['avatarfile']['tmp_name']); -- $this->show_form(_('Not an image or corrupt file.')); -- return; -- } -+ if (!$info) { -+ @unlink($_FILES['avatarfile']['tmp_name']); -+ $this->show_form(_('Not an image or corrupt file.')); -+ return; -+ } -hunk ./actions/profilesettings.php 365 -- switch ($info[2]) { -- case IMAGETYPE_GIF: -- case IMAGETYPE_JPEG: -- case IMAGETYPE_PNG: -- break; -- default: -- $this->show_form(_('Unsupported image file format.')); -- return; -- } -+ switch ($info[2]) { -+ case IMAGETYPE_GIF: -+ case IMAGETYPE_JPEG: -+ case IMAGETYPE_PNG: -+ break; -+ default: -+ $this->show_form(_('Unsupported image file format.')); -+ return; -+ } -hunk ./actions/profilesettings.php 375 -- $user = common_current_user(); -- $profile = $user->getProfile(); -+ $user = common_current_user(); -+ $profile = $user->getProfile(); -hunk ./actions/profilesettings.php 378 -- if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) { -- $this->show_form(_('Avatar updated.'), true); -- } else { -- $this->show_form(_('Failed updating avatar.')); -- } -+ if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) { -+ $this->show_form(_('Avatar updated.'), true); -+ } else { -+ $this->show_form(_('Failed updating avatar.')); -+ } -hunk ./actions/profilesettings.php 384 -- @unlink($_FILES['avatarfile']['tmp_name']); -- } -+ @unlink($_FILES['avatarfile']['tmp_name']); -+ } -hunk ./actions/profilesettings.php 387 -- function nickname_exists($nickname) { -- $user = common_current_user(); -- $other = User::staticGet('nickname', $nickname); -- if (!$other) { -- return false; -- } else { -- return $other->id != $user->id; -- } -- } -+ function nickname_exists($nickname) { -+ $user = common_current_user(); -+ $other = User::staticGet('nickname', $nickname); -+ if (!$other) { -+ return false; -+ } else { -+ return $other->id != $user->id; -+ } -+ } -hunk ./actions/profilesettings.php 397 -- function change_password() { -+ function change_password() { -hunk ./actions/profilesettings.php 399 -- $user = common_current_user(); -- assert(!is_null($user)); # should already be checked -+ $user = common_current_user(); -+ assert(!is_null($user)); # should already be checked -hunk ./actions/profilesettings.php 402 -- # FIXME: scrub input -+ # FIXME: scrub input -hunk ./actions/profilesettings.php 404 -- $newpassword = $this->arg('newpassword'); -- $confirm = $this->arg('confirm'); -- $token = $this->arg('token'); -+ $newpassword = $this->arg('newpassword'); -+ $confirm = $this->arg('confirm'); -+ $token = $this->arg('token'); -hunk ./actions/profilesettings.php 408 -- if (0 != strcmp($newpassword, $confirm)) { -- $this->show_form(_('Passwords don\'t match.')); -- return; -- } -+ if (0 != strcmp($newpassword, $confirm)) { -+ $this->show_form(_('Passwords don\'t match.')); -+ return; -+ } -hunk ./actions/profilesettings.php 413 -- if ($user->password) { -- $oldpassword = $this->arg('oldpassword'); -+ if ($user->password) { -+ $oldpassword = $this->arg('oldpassword'); -hunk ./actions/profilesettings.php 416 -- if (!common_check_user($user->nickname, $oldpassword)) { -- $this->show_form(_('Incorrect old password')); -- return; -- } -- } -+ if (!common_check_user($user->nickname, $oldpassword)) { -+ $this->show_form(_('Incorrect old password')); -+ return; -+ } -+ } -hunk ./actions/profilesettings.php 422 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/profilesettings.php 424 -- $user->password = common_munge_password($newpassword, $user->id); -+ $user->password = common_munge_password($newpassword, $user->id); -hunk ./actions/profilesettings.php 426 -- $val = $user->validate(); -- if ($val !== TRUE) { -- $this->show_form(_('Error saving user; invalid.')); -- return; -- } -+ $val = $user->validate(); -+ if ($val !== TRUE) { -+ $this->show_form(_('Error saving user; invalid.')); -+ return; -+ } -hunk ./actions/profilesettings.php 432 -- if (!$user->update($original)) { -- common_server_error(_('Can\'t save new password.')); -- return; -- } -+ if (!$user->update($original)) { -+ common_server_error(_('Can\'t save new password.')); -+ return; -+ } -hunk ./actions/profilesettings.php 437 -- $this->show_form(_('Password saved.'), true); -- } -+ $this->show_form(_('Password saved.'), true); -+ } -hunk ./actions/public.php 26 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/public.php 29 -- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -hunk ./actions/public.php 31 -- header('X-XRDS-Location: '. common_local_url('publicxrds')); -+ header('X-XRDS-Location: '. common_local_url('publicxrds')); -hunk ./actions/public.php 33 -- common_show_header(_('Public timeline'), -- array($this, 'show_header'), NULL, -- array($this, 'show_top')); -+ common_show_header(_('Public timeline'), -+ array($this, 'show_header'), NULL, -+ array($this, 'show_top')); -hunk ./actions/public.php 37 -- # XXX: Public sidebar here? -+ # XXX: Public sidebar here? -hunk ./actions/public.php 39 -- $this->show_notices($page); -+ $this->show_notices($page); -hunk ./actions/public.php 41 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/public.php 44 -- function show_top() { -- if (common_logged_in()) { -- common_notice_form('public'); -- } else { -- $instr = $this->get_instructions(); -- $output = common_markup_to_html($instr); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- } -+ function show_top() { -+ if (common_logged_in()) { -+ common_notice_form('public'); -+ } else { -+ $instr = $this->get_instructions(); -+ $output = common_markup_to_html($instr); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ } -hunk ./actions/public.php 55 -- $this->public_views_menu(); -+ $this->public_views_menu(); -hunk ./actions/public.php 57 -- $this->show_feeds_list(array(0=>array('href'=>common_local_url('publicrss'), -- 'type' => 'rss', -- 'version' => 'RSS 1.0', -- 'item' => 'publicrss'), -- 1=>array('href'=>common_local_url('publicatom'), -- 'type' => 'atom', -- 'version' => 'Atom 1.0', -- 'item' => 'publicatom'))); -- } -+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('publicrss'), -+ 'type' => 'rss', -+ 'version' => 'RSS 1.0', -+ 'item' => 'publicrss'), -+ 1=>array('href'=>common_local_url('publicatom'), -+ 'type' => 'atom', -+ 'version' => 'Atom 1.0', -+ 'item' => 'publicatom'))); -+ } -hunk ./actions/public.php 67 -- function get_instructions() { -- return _('This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' . -- 'based on the Free Software [Laconica](http://laconi.ca/) tool. ' . -- '[Join now](%%action.register%%) to share notices about yourself with friends, family, and colleagues! ([Read more](%%doc.help%%))'); -- } -+ function get_instructions() { -+ return _('This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service ' . -+ 'based on the Free Software [Laconica](http://laconi.ca/) tool. ' . -+ '[Join now](%%action.register%%) to share notices about yourself with friends, family, and colleagues! ([Read more](%%doc.help%%))'); -+ } -hunk ./actions/public.php 73 -- function show_header() { -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('publicrss'), -- 'type' => 'application/rss+xml', -- 'title' => _('Public Stream Feed'))); -- # for client side of OpenID authentication -- common_element('meta', array('http-equiv' => 'X-XRDS-Location', -- 'content' => common_local_url('publicxrds'))); -- } -+ function show_header() { -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('publicrss'), -+ 'type' => 'application/rss+xml', -+ 'title' => _('Public Stream Feed'))); -+ # for client side of OpenID authentication -+ common_element('meta', array('http-equiv' => 'X-XRDS-Location', -+ 'content' => common_local_url('publicxrds'))); -+ } -hunk ./actions/public.php 83 -- function show_notices($page) { -+ function show_notices($page) { -hunk ./actions/public.php 85 -- $cnt = 0; -- $notice = Notice::publicStream(($page-1)*NOTICES_PER_PAGE, -- NOTICES_PER_PAGE + 1); -+ $cnt = 0; -+ $notice = Notice::publicStream(($page-1)*NOTICES_PER_PAGE, -+ NOTICES_PER_PAGE + 1); -hunk ./actions/public.php 89 -- if (!$notice) { -+ if (!$notice) { -hunk ./actions/public.php 92 -- } -+ } -hunk ./actions/public.php 96 -- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'public'); -- } -+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'public'); -+ } -hunk ./actions/publicrss.php 28 -- function init() { -- return true; -- } -+ function init() { -+ return true; -+ } -hunk ./actions/publicrss.php 32 -- function get_notices($limit=0) { -- -- $notices = array(); -- -- $notice = Notice::publicStream(0, ($limit == 0) ? 48 : $limit); -- -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -- -- return $notices; -- } -+ function get_notices($limit=0) { -+ -+ $notices = array(); -+ -+ $notice = Notice::publicStream(0, ($limit == 0) ? 48 : $limit); -+ -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -+ -+ return $notices; -+ } -hunk ./actions/publicrss.php 45 -- function get_channel() { -- global $config; -- $c = array('url' => common_local_url('publicrss'), -- 'title' => sprintf(_('%s Public Stream'), $config['site']['name']), -- 'link' => common_local_url('public'), -- 'description' => sprintf(_('All updates for %s'), $config['site']['name'])); -- return $c; -- } -+ function get_channel() { -+ global $config; -+ $c = array('url' => common_local_url('publicrss'), -+ 'title' => sprintf(_('%s Public Stream'), $config['site']['name']), -+ 'link' => common_local_url('public'), -+ 'description' => sprintf(_('All updates for %s'), $config['site']['name'])); -+ return $c; -+ } -hunk ./actions/publicrss.php 54 -- function get_image() { -- return NULL; -- } -+ function get_image() { -+ return NULL; -+ } -hunk ./actions/publicxrds.php 28 -- function is_readonly() { -- return true; -- } -+ function is_readonly() { -+ return true; -+ } -hunk ./actions/publicxrds.php 32 -- function handle($args) { -+ function handle($args) { -hunk ./actions/publicxrds.php 34 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/publicxrds.php 36 -- header('Content-Type: application/xrds+xml'); -+ header('Content-Type: application/xrds+xml'); -hunk ./actions/publicxrds.php 38 -- common_start_xml(); -- common_element_start('XRDS', array('xmlns' => 'xri://$xrds')); -+ common_start_xml(); -+ common_element_start('XRDS', array('xmlns' => 'xri://$xrds')); -hunk ./actions/publicxrds.php 41 -- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', -- 'version' => '2.0')); -+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', -+ 'version' => '2.0')); +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { +hunk ./actions/profilesettings.php 34 +- common_element('h2', NULL, _('Avatar')); ++ common_element('h2', null, _('Avatar')); +hunk ./actions/profilesettings.php 36 +- common_element('h2', NULL, _('Change password')); ++ common_element('h2', null, _('Change password')); +hunk ./actions/profilesettings.php 38 +-// common_element('h2', NULL, _('Delete my account')); ++// common_element('h2', null, _('Delete my account')); +hunk ./actions/public.php 34 +- array($this, 'show_header'), NULL, ++ array($this, 'show_header'), null, +hunk ./actions/publicrss.php 55 +- return NULL; ++ return null; hunk ./actions/publicxrds.php 45 -- common_element('Type', NULL, 'xri://$xrds*simple'); -+ common_element('Type', NULL, 'xri://$xrds*simple'); -hunk ./actions/publicxrds.php 47 -- foreach (array('finishopenidlogin', 'finishaddopenid', 'finishimmediate') as $finish) { -- $this->show_service(Auth_OpenID_RP_RETURN_TO_URL_TYPE, -- common_local_url($finish)); -- } -+ foreach (array('finishopenidlogin', 'finishaddopenid', 'finishimmediate') as $finish) { -+ $this->show_service(Auth_OpenID_RP_RETURN_TO_URL_TYPE, -+ common_local_url($finish)); -+ } -hunk ./actions/publicxrds.php 52 -- common_element_end('XRD'); -+ common_element_end('XRD'); -hunk ./actions/publicxrds.php 54 -- common_element_end('XRDS'); -- common_end_xml(); -- } -+ common_element_end('XRDS'); -+ common_end_xml(); -+ } +- common_element('Type', NULL, 'xri://$xrds*simple'); ++ common_element('Type', null, 'xri://$xrds*simple'); hunk ./actions/publicxrds.php 58 -- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { -- common_element_start('Service'); -- if ($uri) { -- common_element('URI', NULL, $uri); -- } -- common_element('Type', NULL, $type); -- if ($params) { -- foreach ($params as $param) { -- common_element('Type', NULL, $param); -- } -- } -- if ($sigs) { -- foreach ($sigs as $sig) { -- common_element('Type', NULL, $sig); -- } -- } -- if ($localId) { -- common_element('LocalID', NULL, $localId); -- } -- common_element_end('Service'); -- } -+ function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { -+ common_element_start('Service'); -+ if ($uri) { -+ common_element('URI', NULL, $uri); -+ } -+ common_element('Type', NULL, $type); -+ if ($params) { -+ foreach ($params as $param) { -+ common_element('Type', NULL, $param); -+ } -+ } -+ if ($sigs) { -+ foreach ($sigs as $sig) { -+ common_element('Type', NULL, $sig); -+ } -+ } -+ if ($localId) { -+ common_element('LocalID', NULL, $localId); -+ } -+ common_element_end('Service'); -+ } -hunk ./actions/recoverpassword.php 31 -- $this->client_error(_('You are already logged in!')); -+ $this->client_error(_('You are already logged in!')); -hunk ./actions/recoverpassword.php 34 -- if ($this->arg('recover')) { -- $this->recover_password(); -+ if ($this->arg('recover')) { -+ $this->recover_password(); -hunk ./actions/recoverpassword.php 37 -- $this->reset_password(); -- } else { -- $this->client_error(_('Unexpected form submission.')); -- } -- } else { -- if ($this->trimmed('code')) { -- $this->check_code(); -- } else { -- $this->show_form(); -- } -- } -- } -+ $this->reset_password(); -+ } else { -+ $this->client_error(_('Unexpected form submission.')); -+ } -+ } else { -+ if ($this->trimmed('code')) { -+ $this->check_code(); -+ } else { -+ $this->show_form(); -+ } -+ } -+ } -hunk ./actions/recoverpassword.php 50 -- function check_code() { -+ function check_code() { -hunk ./actions/recoverpassword.php 52 -- $code = $this->trimmed('code'); -- $confirm = Confirm_address::staticGet('code', $code); -+ $code = $this->trimmed('code'); -+ $confirm = Confirm_address::staticGet('code', $code); -hunk ./actions/recoverpassword.php 55 -- if (!$confirm) { -- $this->client_error(_('No such recovery code.')); -- return; -- } -- if ($confirm->address_type != 'recover') { -- $this->client_error(_('Not a recovery code.')); -- return; -- } -+ if (!$confirm) { -+ $this->client_error(_('No such recovery code.')); -+ return; -+ } -+ if ($confirm->address_type != 'recover') { -+ $this->client_error(_('Not a recovery code.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 64 -- $user = User::staticGet($confirm->user_id); -+ $user = User::staticGet($confirm->user_id); -hunk ./actions/recoverpassword.php 66 -- if (!$user) { -- $this->server_error(_('Recovery code for unknown user.')); -- return; -- } -+ if (!$user) { -+ $this->server_error(_('Recovery code for unknown user.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 71 -- $touched = strtotime($confirm->modified); -- $email = $confirm->address; -+ $touched = strtotime($confirm->modified); -+ $email = $confirm->address; -hunk ./actions/recoverpassword.php 74 -- # Burn this code -+ # Burn this code -hunk ./actions/recoverpassword.php 76 -- $result = $confirm->delete(); -+ $result = $confirm->delete(); -hunk ./actions/recoverpassword.php 78 -- if (!$result) { -- common_log_db_error($confirm, 'DELETE', __FILE__); -- common_server_error(_('Error with confirmation code.')); -- return; -- } -+ if (!$result) { -+ common_log_db_error($confirm, 'DELETE', __FILE__); -+ common_server_error(_('Error with confirmation code.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 84 -- # These should be reaped, but for now we just check mod time -- # Note: it's still deleted; let's avoid a second attempt! -+ # These should be reaped, but for now we just check mod time -+ # Note: it's still deleted; let's avoid a second attempt! -hunk ./actions/recoverpassword.php 87 -- if ((time() - $touched) > MAX_RECOVERY_TIME) { -- common_log(LOG_WARNING, -- 'Attempted redemption on recovery code ' . -- 'that is ' . $touched . ' seconds old. '); -- $this->client_error(_('This confirmation code is too old. ' . -- 'Please start again.')); -- return; -- } -+ if ((time() - $touched) > MAX_RECOVERY_TIME) { -+ common_log(LOG_WARNING, -+ 'Attempted redemption on recovery code ' . -+ 'that is ' . $touched . ' seconds old. '); -+ $this->client_error(_('This confirmation code is too old. ' . -+ 'Please start again.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 96 -- # If we used an outstanding confirmation to send the email, -- # it's been confirmed at this point. -+ # If we used an outstanding confirmation to send the email, -+ # it's been confirmed at this point. -hunk ./actions/recoverpassword.php 99 -- if (!$user->email) { -- $orig = clone($user); -- $user->email = $email; -- $result = $user->updateKeys($orig); -- if (!$result) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- $this->server_error(_('Could not update user with confirmed email address.')); -- return; -- } -- } -+ if (!$user->email) { -+ $orig = clone($user); -+ $user->email = $email; -+ $result = $user->updateKeys($orig); -+ if (!$result) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ $this->server_error(_('Could not update user with confirmed email address.')); -+ return; -+ } -+ } -hunk ./actions/recoverpassword.php 110 -- # Success! -+ # Success! -hunk ./actions/recoverpassword.php 112 -- $this->set_temp_user($user); -- $this->show_password_form(); -- } -+ $this->set_temp_user($user); -+ $this->show_password_form(); -+ } -hunk ./actions/recoverpassword.php 116 -- function set_temp_user(&$user) { -- common_ensure_session(); -- $_SESSION['tempuser'] = $user->id; -- } -+ function set_temp_user(&$user) { -+ common_ensure_session(); -+ $_SESSION['tempuser'] = $user->id; -+ } -hunk ./actions/recoverpassword.php 121 -- function get_temp_user() { -- common_ensure_session(); -- $user_id = $_SESSION['tempuser']; -- if ($user_id) { -- $user = User::staticGet($user_id); -- } -- return $user; -- } -+ function get_temp_user() { -+ common_ensure_session(); -+ $user_id = $_SESSION['tempuser']; -+ if ($user_id) { -+ $user = User::staticGet($user_id); -+ } -+ return $user; -+ } -hunk ./actions/recoverpassword.php 130 -- function clear_temp_user() { -- common_ensure_session(); -- unset($_SESSION['tempuser']); -- } -+ function clear_temp_user() { -+ common_ensure_session(); -+ unset($_SESSION['tempuser']); -+ } +- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { ++ function show_service($type, $uri, $params=null, $sigs=null, $localId=null) { +hunk ./actions/publicxrds.php 61 +- common_element('URI', NULL, $uri); ++ common_element('URI', null, $uri); +hunk ./actions/publicxrds.php 63 +- common_element('Type', NULL, $type); ++ common_element('Type', null, $type); +hunk ./actions/publicxrds.php 66 +- common_element('Type', NULL, $param); ++ common_element('Type', null, $param); +hunk ./actions/publicxrds.php 71 +- common_element('Type', NULL, $sig); ++ common_element('Type', null, $sig); +hunk ./actions/publicxrds.php 75 +- common_element('LocalID', NULL, $localId); ++ common_element('LocalID', null, $localId); hunk ./actions/recoverpassword.php 135 -- function show_top($msg=NULL) { -- if ($msg) { -+ function show_top($msg=NULL) { -+ if ($msg) { -hunk ./actions/recoverpassword.php 138 -- } else { -- common_element_start('div', 'instructions'); -- common_element('p', NULL, -- _('If you\'ve forgotten or lost your' . -- ' password, you can get a new one sent to' . -- ' the email address you have stored ' . -- ' in your account.')); -- common_element_end('div'); -- } -- } -+ } else { -+ common_element_start('div', 'instructions'); -+ common_element('p', NULL, -+ _('If you\'ve forgotten or lost your' . -+ ' password, you can get a new one sent to' . -+ ' the email address you have stored ' . -+ ' in your account.')); -+ common_element_end('div'); -+ } -+ } +- function show_top($msg=NULL) { ++ function show_top($msg=null) { +hunk ./actions/recoverpassword.php 140 +- common_element('p', NULL, ++ common_element('p', null, hunk ./actions/recoverpassword.php 149 -- function show_password_top($msg=NULL) { -- if ($msg) { -+ function show_password_top($msg=NULL) { -+ if ($msg) { -hunk ./actions/recoverpassword.php 152 -- } else { -- common_element('div', 'instructions', -- _('You\'ve been identified. Enter a ' . -- ' new password below. ')); -- } -- } -+ } else { -+ common_element('div', 'instructions', -+ _('You\'ve been identified. Enter a ' . -+ ' new password below. ')); -+ } -+ } +- function show_password_top($msg=NULL) { ++ function show_password_top($msg=null) { hunk ./actions/recoverpassword.php 159 -- function show_form($msg=NULL) { -+ function show_form($msg=NULL) { +- function show_form($msg=NULL) { ++ function show_form($msg=null) { hunk ./actions/recoverpassword.php 161 -- common_show_header(_('Recover password'), NULL, -- $msg, array($this, 'show_top')); -+ common_show_header(_('Recover password'), NULL, -+ $msg, array($this, 'show_top')); -hunk ./actions/recoverpassword.php 164 -- common_element_start('form', array('method' => 'post', -- 'id' => 'recoverpassword', -- 'action' => common_local_url('recoverpassword'))); -- common_input('nicknameoremail', _('Nickname or email'), -- $this->trimmed('nicknameoremail'), -- _('Your nickname on this server, ' . -- 'or your registered email address.')); -- common_submit('recover', _('Recover')); -- common_element_end('form'); -- common_show_footer(); -- } -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'recoverpassword', -+ 'action' => common_local_url('recoverpassword'))); -+ common_input('nicknameoremail', _('Nickname or email'), -+ $this->trimmed('nicknameoremail'), -+ _('Your nickname on this server, ' . -+ 'or your registered email address.')); -+ common_submit('recover', _('Recover')); -+ common_element_end('form'); -+ common_show_footer(); -+ } +- common_show_header(_('Recover password'), NULL, ++ common_show_header(_('Recover password'), null, hunk ./actions/recoverpassword.php 176 -- function show_password_form($msg=NULL) { -+ function show_password_form($msg=NULL) { +- function show_password_form($msg=NULL) { ++ function show_password_form($msg=null) { hunk ./actions/recoverpassword.php 178 -- common_show_header(_('Reset password'), NULL, -- $msg, array($this, 'show_password_top')); -+ common_show_header(_('Reset password'), NULL, -+ $msg, array($this, 'show_password_top')); -hunk ./actions/recoverpassword.php 181 -- common_element_start('form', array('method' => 'post', -- 'id' => 'recoverpassword', -- 'action' => common_local_url('recoverpassword'))); -- common_hidden('token', common_session_token()); -- common_password('newpassword', _('New password'), -- _('6 or more characters, and don\'t forget it!')); -- common_password('confirm', _('Confirm'), -- _('Same as password above')); -- common_submit('reset', _('Reset')); -- common_element_end('form'); -- common_show_footer(); -- } -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'recoverpassword', -+ 'action' => common_local_url('recoverpassword'))); -+ common_hidden('token', common_session_token()); -+ common_password('newpassword', _('New password'), -+ _('6 or more characters, and don\'t forget it!')); -+ common_password('confirm', _('Confirm'), -+ _('Same as password above')); -+ common_submit('reset', _('Reset')); -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/recoverpassword.php 194 -- function recover_password() { -- $nore = $this->trimmed('nicknameoremail'); -- if (!$nore) { -- $this->show_form(_('Enter a nickname or email address.')); -- return; -- } -+ function recover_password() { -+ $nore = $this->trimmed('nicknameoremail'); -+ if (!$nore) { -+ $this->show_form(_('Enter a nickname or email address.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 201 -- $user = User::staticGet('email', common_canonical_email($nore)); -+ $user = User::staticGet('email', common_canonical_email($nore)); -hunk ./actions/recoverpassword.php 203 -- if (!$user) { -- $user = User::staticGet('nickname', common_canonical_nickname($nore)); -- } -+ if (!$user) { -+ $user = User::staticGet('nickname', common_canonical_nickname($nore)); -+ } -hunk ./actions/recoverpassword.php 207 -- # See if it's an unconfirmed email address -+ # See if it's an unconfirmed email address -hunk ./actions/recoverpassword.php 209 -- if (!$user) { -- $confirm_email = Confirm_address::staticGet('address', common_canonical_email($nore)); -- if ($confirm_email && $confirm_email->address_type == 'email') { -- $user = User::staticGet($confirm_email->user_id); -- } -- } -+ if (!$user) { -+ $confirm_email = Confirm_address::staticGet('address', common_canonical_email($nore)); -+ if ($confirm_email && $confirm_email->address_type == 'email') { -+ $user = User::staticGet($confirm_email->user_id); -+ } -+ } -hunk ./actions/recoverpassword.php 216 -- if (!$user) { -- $this->show_form(_('No user with that email address or username.')); -- return; -- } -+ if (!$user) { -+ $this->show_form(_('No user with that email address or username.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 221 -- # Try to get an unconfirmed email address if they used a user name -+ # Try to get an unconfirmed email address if they used a user name -hunk ./actions/recoverpassword.php 223 -- if (!$user->email && !$confirm_email) { -- $confirm_email = Confirm_address::staticGet('user_id', $user->id); -- if ($confirm_email && $confirm_email->address_type != 'email') { -- # Skip non-email confirmations -- $confirm_email = NULL; -- } -- } -+ if (!$user->email && !$confirm_email) { -+ $confirm_email = Confirm_address::staticGet('user_id', $user->id); -+ if ($confirm_email && $confirm_email->address_type != 'email') { -+ # Skip non-email confirmations -+ $confirm_email = NULL; -+ } -+ } -hunk ./actions/recoverpassword.php 231 -- if (!$user->email && !$confirm_email) { -- $this->client_error(_('No registered email address for that user.')); -- return; -- } -+ if (!$user->email && !$confirm_email) { -+ $this->client_error(_('No registered email address for that user.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 236 -- # Success! We have a valid user and a confirmed or unconfirmed email address -+ # Success! We have a valid user and a confirmed or unconfirmed email address -hunk ./actions/recoverpassword.php 238 -- $confirm = new Confirm_address(); -- $confirm->code = common_confirmation_code(128); -- $confirm->address_type = 'recover'; -- $confirm->user_id = $user->id; -- $confirm->address = (isset($user->email)) ? $user->email : $confirm_email->address; -+ $confirm = new Confirm_address(); -+ $confirm->code = common_confirmation_code(128); -+ $confirm->address_type = 'recover'; -+ $confirm->user_id = $user->id; -+ $confirm->address = (isset($user->email)) ? $user->email : $confirm_email->address; -hunk ./actions/recoverpassword.php 244 -- if (!$confirm->insert()) { -- common_log_db_error($confirm, 'INSERT', __FILE__); -- $this->server_error(_('Error saving address confirmation.')); -- return; -- } -+ if (!$confirm->insert()) { -+ common_log_db_error($confirm, 'INSERT', __FILE__); -+ $this->server_error(_('Error saving address confirmation.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 250 -- $body = "Hey, $user->nickname."; -- $body .= "\n\n"; -- $body .= 'Someone just asked for a new password ' . -- 'for this account on ' . common_config('site', 'name') . '.'; -- $body .= "\n\n"; -- $body .= 'If it was you, and you want to confirm, use the URL below:'; -- $body .= "\n\n"; -- $body .= "\t".common_local_url('recoverpassword', -- array('code' => $confirm->code)); -- $body .= "\n\n"; -- $body .= 'If not, just ignore this message.'; -- $body .= "\n\n"; -- $body .= 'Thanks for your time, '; -- $body .= "\n"; -- $body .= common_config('site', 'name'); -- $body .= "\n"; -+ $body = "Hey, $user->nickname."; -+ $body .= "\n\n"; -+ $body .= 'Someone just asked for a new password ' . -+ 'for this account on ' . common_config('site', 'name') . '.'; -+ $body .= "\n\n"; -+ $body .= 'If it was you, and you want to confirm, use the URL below:'; -+ $body .= "\n\n"; -+ $body .= "\t".common_local_url('recoverpassword', -+ array('code' => $confirm->code)); -+ $body .= "\n\n"; -+ $body .= 'If not, just ignore this message.'; -+ $body .= "\n\n"; -+ $body .= 'Thanks for your time, '; -+ $body .= "\n"; -+ $body .= common_config('site', 'name'); -+ $body .= "\n"; -hunk ./actions/recoverpassword.php 267 -- mail_to_user($user, _('Password recovery requested'), $body, $confirm->address); -+ mail_to_user($user, _('Password recovery requested'), $body, $confirm->address); -hunk ./actions/recoverpassword.php 269 -- common_show_header(_('Password recovery requested')); -- common_element('p', NULL, -- _('Instructions for recovering your password ' . -- 'have been sent to the email address registered to your ' . -- 'account.')); -- common_show_footer(); -- } -+ common_show_header(_('Password recovery requested')); -+ common_element('p', NULL, -+ _('Instructions for recovering your password ' . -+ 'have been sent to the email address registered to your ' . -+ 'account.')); -+ common_show_footer(); -+ } -hunk ./actions/recoverpassword.php 277 -- function reset_password() { -+ function reset_password() { -hunk ./actions/recoverpassword.php 279 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 286 -- $user = $this->get_temp_user(); -+ $user = $this->get_temp_user(); -hunk ./actions/recoverpassword.php 288 -- if (!$user) { -- $this->client_error(_('Unexpected password reset.')); -- return; -- } -+ if (!$user) { -+ $this->client_error(_('Unexpected password reset.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 293 -- $newpassword = $this->trimmed('newpassword'); -- $confirm = $this->trimmed('confirm'); -+ $newpassword = $this->trimmed('newpassword'); -+ $confirm = $this->trimmed('confirm'); -hunk ./actions/recoverpassword.php 296 -- if (!$newpassword || strlen($newpassword) < 6) { -- $this->show_password_form(_('Password must be 6 chars or more.')); -- return; -- } -- if ($newpassword != $confirm) { -- $this->show_password_form(_('Password and confirmation do not match.')); -- return; -- } -+ if (!$newpassword || strlen($newpassword) < 6) { -+ $this->show_password_form(_('Password must be 6 chars or more.')); -+ return; -+ } -+ if ($newpassword != $confirm) { -+ $this->show_password_form(_('Password and confirmation do not match.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 305 -- # OK, we're ready to go -+ # OK, we're ready to go -hunk ./actions/recoverpassword.php 307 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/recoverpassword.php 309 -- $user->password = common_munge_password($newpassword, $user->id); -+ $user->password = common_munge_password($newpassword, $user->id); -hunk ./actions/recoverpassword.php 311 -- if (!$user->update($original)) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Can\'t save new password.')); -- return; -- } -+ if (!$user->update($original)) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Can\'t save new password.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 317 -- $this->clear_temp_user(); -+ $this->clear_temp_user(); -hunk ./actions/recoverpassword.php 319 -- if (!common_set_user($user->nickname)) { -- common_server_error(_('Error setting user.')); -- return; -- } -+ if (!common_set_user($user->nickname)) { -+ common_server_error(_('Error setting user.')); -+ return; -+ } -hunk ./actions/recoverpassword.php 324 -- common_real_login(true); -+ common_real_login(true); -hunk ./actions/recoverpassword.php 326 -- common_show_header(_('Password saved.')); -- common_element('p', NULL, _('New password successfully saved. ' . -- 'You are now logged in.')); -- common_show_footer(); -- } -+ common_show_header(_('Password saved.')); -+ common_element('p', NULL, _('New password successfully saved. ' . -+ 'You are now logged in.')); -+ common_show_footer(); -+ } -hunk ./actions/register.php 24 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/register.php 27 -- if (common_config('site', 'closed')) { -- common_user_error(_('Registration not allowed.')); -- } else if (common_logged_in()) { -- common_user_error(_('Already logged in.')); -- } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $this->try_register(); -- } else { -- $this->show_form(); -- } -- } -+ if (common_config('site', 'closed')) { -+ common_user_error(_('Registration not allowed.')); -+ } else if (common_logged_in()) { -+ common_user_error(_('Already logged in.')); -+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $this->try_register(); -+ } else { -+ $this->show_form(); -+ } -+ } -hunk ./actions/register.php 38 -- function try_register() { -+ function try_register() { -hunk ./actions/register.php 40 -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/register.php 46 -- $nickname = $this->trimmed('nickname'); -- $email = $this->trimmed('email'); -- $fullname = $this->trimmed('fullname'); -- $homepage = $this->trimmed('homepage'); -- $bio = $this->trimmed('bio'); -- $location = $this->trimmed('location'); -+ $nickname = $this->trimmed('nickname'); -+ $email = $this->trimmed('email'); -+ $fullname = $this->trimmed('fullname'); -+ $homepage = $this->trimmed('homepage'); -+ $bio = $this->trimmed('bio'); -+ $location = $this->trimmed('location'); -hunk ./actions/register.php 53 -- # We don't trim these... whitespace is OK in a password! -+ # We don't trim these... whitespace is OK in a password! -hunk ./actions/register.php 55 -- $password = $this->arg('password'); -- $confirm = $this->arg('confirm'); -+ $password = $this->arg('password'); -+ $confirm = $this->arg('confirm'); -hunk ./actions/register.php 58 -- # invitation code, if any -+ # invitation code, if any -hunk ./actions/register.php 60 -- $code = $this->trimmed('code'); -+ $code = $this->trimmed('code'); -hunk ./actions/register.php 62 -- if ($code) { -- $invite = Invitation::staticGet($code); -- } -+ if ($code) { -+ $invite = Invitation::staticGet($code); -+ } -hunk ./actions/register.php 66 -- if (common_config('site', 'inviteonly') && !($code && $invite)) { -- $this->client_error(_('Sorry, only invited people can register.')); -- return; -- } -+ if (common_config('site', 'inviteonly') && !($code && $invite)) { -+ $this->client_error(_('Sorry, only invited people can register.')); -+ return; -+ } -hunk ./actions/register.php 71 -- # Input scrubbing -+ # Input scrubbing -hunk ./actions/register.php 73 -- $nickname = common_canonical_nickname($nickname); -- $email = common_canonical_email($email); -+ $nickname = common_canonical_nickname($nickname); -+ $email = common_canonical_email($email); -hunk ./actions/register.php 76 -- if (!$this->boolean('license')) { -- $this->show_form(_('You can\'t register if you don\'t agree to the license.')); -- } else if ($email && !Validate::email($email, true)) { -- $this->show_form(_('Not a valid email address.')); -- } else if (!Validate::string($nickname, array('min_length' => 1, -- 'max_length' => 64, -- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -- $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.')); -- } else if ($this->nickname_exists($nickname)) { -- $this->show_form(_('Nickname already in use. Try another one.')); -- } else if (!User::allowed_nickname($nickname)) { -- $this->show_form(_('Not a valid nickname.')); -- } else if ($this->email_exists($email)) { -- $this->show_form(_('Email address already exists.')); -- } else if (!is_null($homepage) && (strlen($homepage) > 0) && -- !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) { -- $this->show_form(_('Homepage is not a valid URL.')); -- return; -- } else if (!is_null($fullname) && strlen($fullname) > 255) { -- $this->show_form(_('Full name is too long (max 255 chars).')); -- return; -- } else if (!is_null($bio) && strlen($bio) > 140) { -- $this->show_form(_('Bio is too long (max 140 chars).')); -- return; -- } else if (!is_null($location) && strlen($location) > 255) { -- $this->show_form(_('Location is too long (max 255 chars).')); -- return; -- } else if (strlen($password) < 6) { -- $this->show_form(_('Password must be 6 or more characters.')); -- return; -- } else if ($password != $confirm) { -- $this->show_form(_('Passwords don\'t match.')); -- } else if ($user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email, -- 'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio, -- 'location' => $location, 'code' => $code))) { -- if (!$user) { -- $this->show_form(_('Invalid username or password.')); -- return; -- } -- # success! -- if (!common_set_user($user)) { -- common_server_error(_('Error setting user.')); -- return; -- } -- # this is a real login -- common_real_login(true); -- if ($this->boolean('rememberme')) { -- common_debug('Adding rememberme cookie for ' . $nickname); -- common_rememberme($user); -- } -- # Re-init language env in case it changed (not yet, but soon) -- common_init_language(); -- $this->show_success(); -- } else { -- $this->show_form(_('Invalid username or password.')); -- } -- } -+ if (!$this->boolean('license')) { -+ $this->show_form(_('You can\'t register if you don\'t agree to the license.')); -+ } else if ($email && !Validate::email($email, true)) { -+ $this->show_form(_('Not a valid email address.')); -+ } else if (!Validate::string($nickname, array('min_length' => 1, -+ 'max_length' => 64, -+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -+ $this->show_form(_('Nickname must have only lowercase letters and numbers and no spaces.')); -+ } else if ($this->nickname_exists($nickname)) { -+ $this->show_form(_('Nickname already in use. Try another one.')); -+ } else if (!User::allowed_nickname($nickname)) { -+ $this->show_form(_('Not a valid nickname.')); -+ } else if ($this->email_exists($email)) { -+ $this->show_form(_('Email address already exists.')); -+ } else if (!is_null($homepage) && (strlen($homepage) > 0) && -+ !Validate::uri($homepage, array('allowed_schemes' => array('http', 'https')))) { -+ $this->show_form(_('Homepage is not a valid URL.')); -+ return; -+ } else if (!is_null($fullname) && strlen($fullname) > 255) { -+ $this->show_form(_('Full name is too long (max 255 chars).')); -+ return; -+ } else if (!is_null($bio) && strlen($bio) > 140) { -+ $this->show_form(_('Bio is too long (max 140 chars).')); -+ return; -+ } else if (!is_null($location) && strlen($location) > 255) { -+ $this->show_form(_('Location is too long (max 255 chars).')); -+ return; -+ } else if (strlen($password) < 6) { -+ $this->show_form(_('Password must be 6 or more characters.')); -+ return; -+ } else if ($password != $confirm) { -+ $this->show_form(_('Passwords don\'t match.')); -+ } else if ($user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email, -+ 'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio, -+ 'location' => $location, 'code' => $code))) { -+ if (!$user) { -+ $this->show_form(_('Invalid username or password.')); -+ return; -+ } -+ # success! -+ if (!common_set_user($user)) { -+ common_server_error(_('Error setting user.')); -+ return; -+ } -+ # this is a real login -+ common_real_login(true); -+ if ($this->boolean('rememberme')) { -+ common_debug('Adding rememberme cookie for ' . $nickname); -+ common_rememberme($user); -+ } -+ # Re-init language env in case it changed (not yet, but soon) -+ common_init_language(); -+ $this->show_success(); -+ } else { -+ $this->show_form(_('Invalid username or password.')); -+ } -+ } -hunk ./actions/register.php 134 -- # checks if *CANONICAL* nickname exists -+ # checks if *CANONICAL* nickname exists -hunk ./actions/register.php 136 -- function nickname_exists($nickname) { -- $user = User::staticGet('nickname', $nickname); -- return ($user !== false); -- } -+ function nickname_exists($nickname) { -+ $user = User::staticGet('nickname', $nickname); -+ return ($user !== false); -+ } -hunk ./actions/register.php 141 -- # checks if *CANONICAL* email exists -+ # checks if *CANONICAL* email exists -hunk ./actions/register.php 143 -- function email_exists($email) { -- $email = common_canonical_email($email); -- if (!$email || strlen($email) == 0) { -- return false; -- } -- $user = User::staticGet('email', $email); -- return ($user !== false); -- } -+ function email_exists($email) { -+ $email = common_canonical_email($email); -+ if (!$email || strlen($email) == 0) { -+ return false; -+ } -+ $user = User::staticGet('email', $email); -+ return ($user !== false); -+ } +- common_show_header(_('Reset password'), NULL, ++ common_show_header(_('Reset password'), null, +hunk ./actions/recoverpassword.php 227 +- $confirm_email = NULL; ++ $confirm_email = null; +hunk ./actions/recoverpassword.php 270 +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/recoverpassword.php 327 +- common_element('p', NULL, _('New password successfully saved. ' . ++ common_element('p', null, _('New password successfully saved. ' . hunk ./actions/register.php 152 -- function show_top($error=NULL) { -- if ($error) { -- common_element('p', 'error', $error); -- } else { -- $instr = common_markup_to_html(_('With this form you can create a new account. ' . -- 'You can then post notices and link up to friends and colleagues. '. -- '(Have an [OpenID](http://openid.net/)? ' . -- 'Try our [OpenID registration](%%action.openidlogin%%)!)')); -+ function show_top($error=NULL) { -+ if ($error) { -+ common_element('p', 'error', $error); -+ } else { -+ $instr = common_markup_to_html(_('With this form you can create a new account. ' . -+ 'You can then post notices and link up to friends and colleagues. '. -+ '(Have an [OpenID](http://openid.net/)? ' . -+ 'Try our [OpenID registration](%%action.openidlogin%%)!)')); -hunk ./actions/register.php 161 -- common_element_start('div', 'instructions'); -- common_raw($instr); -- common_element_end('div'); -- } -- } -+ common_element_start('div', 'instructions'); -+ common_raw($instr); -+ common_element_end('div'); -+ } -+ } +- function show_top($error=NULL) { ++ function show_top($error=null) { hunk ./actions/register.php 167 -- function show_form($error=NULL) { -- global $config; -+ function show_form($error=NULL) { -+ global $config; -hunk ./actions/register.php 170 -- $code = $this->trimmed('code'); -+ $code = $this->trimmed('code'); -hunk ./actions/register.php 172 -- if ($code) { -- $invite = Invitation::staticGet($code); -- } -+ if ($code) { -+ $invite = Invitation::staticGet($code); -+ } -hunk ./actions/register.php 176 -- if (common_config('site', 'inviteonly') && !($code && $invite)) { -- $this->client_error(_('Sorry, only invited people can register.')); -- return; -- } -+ if (common_config('site', 'inviteonly') && !($code && $invite)) { -+ $this->client_error(_('Sorry, only invited people can register.')); -+ return; -+ } +- function show_form($error=NULL) { ++ function show_form($error=null) { hunk ./actions/register.php 181 -- common_show_header(_('Register'), NULL, $error, array($this, 'show_top')); -- common_element_start('form', array('method' => 'post', -- 'id' => 'login', -- 'action' => common_local_url('register'))); -+ common_show_header(_('Register'), NULL, $error, array($this, 'show_top')); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'login', -+ 'action' => common_local_url('register'))); -hunk ./actions/register.php 186 -- common_hidden('token', common_session_token()); -+ common_hidden('token', common_session_token()); -hunk ./actions/register.php 188 -- if ($code) { -- common_hidden('code', $code); -- } -+ if ($code) { -+ common_hidden('code', $code); -+ } -hunk ./actions/register.php 192 -- common_input('nickname', _('Nickname'), $this->trimmed('nickname'), -- _('1-64 lowercase letters or numbers, no punctuation or spaces. Required.')); -- common_password('password', _('Password'), -- _('6 or more characters. Required.')); -- common_password('confirm', _('Confirm'), -- _('Same as password above. Required.')); -- if ($invite && $invite->address_type == 'email') { -- common_input('email', _('Email'), $invite->address, -- _('Used only for updates, announcements, and password recovery')); -- } else { -- common_input('email', _('Email'), $this->trimmed('email'), -- _('Used only for updates, announcements, and password recovery')); -- } -- common_input('fullname', _('Full name'), -- $this->trimmed('fullname'), -- _('Longer name, preferably your "real" name')); -- common_input('homepage', _('Homepage'), -- $this->trimmed('homepage'), -- _('URL of your homepage, blog, or profile on another site')); -- common_textarea('bio', _('Bio'), -- $this->trimmed('bio'), -- _('Describe yourself and your interests in 140 chars')); -- common_input('location', _('Location'), -- $this->trimmed('location'), -- _('Where you are, like "City, State (or Region), Country"')); -- common_checkbox('rememberme', _('Remember me'), -- $this->boolean('rememberme'), -- _('Automatically login in the future; not for shared computers!')); -- common_element_start('p'); -- $attrs = array('type' => 'checkbox', -- 'id' => 'license', -- 'name' => 'license', -- 'value' => 'true'); -- if ($this->boolean('license')) { -- $attrs['checked'] = 'checked'; -- } -- common_element('input', $attrs); -- common_text(_('My text and files are available under ')); -- common_element('a', array('href' => $config['license']['url']), -- $config['license']['title']); -- common_text(_(' except this private data: password, email address, IM address, phone number.')); -- common_element_end('p'); -- common_submit('submit', _('Register')); -- common_element_end('form'); -- common_show_footer(); -- } -+ common_input('nickname', _('Nickname'), $this->trimmed('nickname'), -+ _('1-64 lowercase letters or numbers, no punctuation or spaces. Required.')); -+ common_password('password', _('Password'), -+ _('6 or more characters. Required.')); -+ common_password('confirm', _('Confirm'), -+ _('Same as password above. Required.')); -+ if ($invite && $invite->address_type == 'email') { -+ common_input('email', _('Email'), $invite->address, -+ _('Used only for updates, announcements, and password recovery')); -+ } else { -+ common_input('email', _('Email'), $this->trimmed('email'), -+ _('Used only for updates, announcements, and password recovery')); -+ } -+ common_input('fullname', _('Full name'), -+ $this->trimmed('fullname'), -+ _('Longer name, preferably your "real" name')); -+ common_input('homepage', _('Homepage'), -+ $this->trimmed('homepage'), -+ _('URL of your homepage, blog, or profile on another site')); -+ common_textarea('bio', _('Bio'), -+ $this->trimmed('bio'), -+ _('Describe yourself and your interests in 140 chars')); -+ common_input('location', _('Location'), -+ $this->trimmed('location'), -+ _('Where you are, like "City, State (or Region), Country"')); -+ common_checkbox('rememberme', _('Remember me'), -+ $this->boolean('rememberme'), -+ _('Automatically login in the future; not for shared computers!')); -+ common_element_start('p'); -+ $attrs = array('type' => 'checkbox', -+ 'id' => 'license', -+ 'name' => 'license', -+ 'value' => 'true'); -+ if ($this->boolean('license')) { -+ $attrs['checked'] = 'checked'; -+ } -+ common_element('input', $attrs); -+ common_text(_('My text and files are available under ')); -+ common_element('a', array('href' => $config['license']['url']), -+ $config['license']['title']); -+ common_text(_(' except this private data: password, email address, IM address, phone number.')); -+ common_element_end('p'); -+ common_submit('submit', _('Register')); -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/register.php 239 -- function show_success() { -- $nickname = $this->arg('nickname'); -- common_show_header(_('Registration successful')); -- common_element_start('div', 'success'); -- $instr = sprintf(_('Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may want to...'. "\n\n" . -- '* Go to [your profile](%s) and post your first message.' . "\n" . -- '* Add a [Jabber/GTalk address](%%%%action.imsettings%%%%) so you can send notices through instant messages.' . "\n" . -- '* [Search for people](%%%%action.peoplesearch%%%%) that you may know or that share your interests. ' . "\n" . -- '* Update your [profile settings](%%%%action.profilesettings%%%%) to tell others more about you. ' . "\n" . -- '* Read over the [online docs](%%%%doc.help%%%%) for features you may have missed. ' . "\n\n" . -- 'Thanks for signing up and we hope you enjoy using this service.'), -- $nickname, common_local_url('showstream', array('nickname' => $nickname))); -- common_raw(common_markup_to_html($instr)); -- $have_email = $this->trimmed('email'); -- if ($have_email) { -- $emailinstr = _('(You should receive a message by email momentarily, with ' . -- 'instructions on how to confirm your email address.)'); -- common_raw(common_markup_to_html($emailinstr)); -- } -- common_element_end('div'); -- common_show_footer(); -- } -+ function show_success() { -+ $nickname = $this->arg('nickname'); -+ common_show_header(_('Registration successful')); -+ common_element_start('div', 'success'); -+ $instr = sprintf(_('Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may want to...'. "\n\n" . -+ '* Go to [your profile](%s) and post your first message.' . "\n" . -+ '* Add a [Jabber/GTalk address](%%%%action.imsettings%%%%) so you can send notices through instant messages.' . "\n" . -+ '* [Search for people](%%%%action.peoplesearch%%%%) that you may know or that share your interests. ' . "\n" . -+ '* Update your [profile settings](%%%%action.profilesettings%%%%) to tell others more about you. ' . "\n" . -+ '* Read over the [online docs](%%%%doc.help%%%%) for features you may have missed. ' . "\n\n" . -+ 'Thanks for signing up and we hope you enjoy using this service.'), -+ $nickname, common_local_url('showstream', array('nickname' => $nickname))); -+ common_raw(common_markup_to_html($instr)); -+ $have_email = $this->trimmed('email'); -+ if ($have_email) { -+ $emailinstr = _('(You should receive a message by email momentarily, with ' . -+ 'instructions on how to confirm your email address.)'); -+ common_raw(common_markup_to_html($emailinstr)); -+ } -+ common_element_end('div'); -+ common_show_footer(); -+ } -hunk ./actions/remotesubscribe.php 26 -- function handle($args) { -+ function handle($args) { -hunk ./actions/remotesubscribe.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/remotesubscribe.php 30 -- if (common_logged_in()) { -- common_user_error(_('You can use the local subscription!')); -- return; -- } -+ if (common_logged_in()) { -+ common_user_error(_('You can use the local subscription!')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 35 -- if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ if ($_SERVER['REQUEST_METHOD'] == 'POST') { -hunk ./actions/remotesubscribe.php 37 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 44 -- $this->remote_subscription(); -- } else { -- $this->show_form(); -- } -- } -+ $this->remote_subscription(); -+ } else { -+ $this->show_form(); -+ } -+ } -hunk ./actions/remotesubscribe.php 50 -- function get_instructions() { -- return _('To subscribe, you can [login](%%action.login%%),' . -- ' or [register](%%action.register%%) a new ' . -- ' account. If you already have an account ' . -- ' on a [compatible microblogging site](%%doc.openmublog%%), ' . -- ' enter your profile URL below.'); -- } -+ function get_instructions() { -+ return _('To subscribe, you can [login](%%action.login%%),' . -+ ' or [register](%%action.register%%) a new ' . -+ ' account. If you already have an account ' . -+ ' on a [compatible microblogging site](%%doc.openmublog%%), ' . -+ ' enter your profile URL below.'); -+ } +- common_show_header(_('Register'), NULL, $error, array($this, 'show_top')); ++ common_show_header(_('Register'), null, $error, array($this, 'show_top')); hunk ./actions/remotesubscribe.php 58 -- function show_top($err=NULL) { -- if ($err) { -- common_element('div', 'error', $err); -- } else { -- $instructions = $this->get_instructions(); -- $output = common_markup_to_html($instructions); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('p'); -- } -- } -+ function show_top($err=NULL) { -+ if ($err) { -+ common_element('div', 'error', $err); -+ } else { -+ $instructions = $this->get_instructions(); -+ $output = common_markup_to_html($instructions); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('p'); -+ } -+ } +- function show_top($err=NULL) { ++ function show_top($err=null) { hunk ./actions/remotesubscribe.php 70 -- function show_form($err=NULL) { -- $nickname = $this->trimmed('nickname'); -- $profile = $this->trimmed('profile_url'); -- common_show_header(_('Remote subscribe'), NULL, $err, -- array($this, 'show_top')); -- # id = remotesubscribe conflicts with the -- # button on profile page -- common_element_start('form', array('id' => 'remsub', 'method' => 'post', -- 'action' => common_local_url('remotesubscribe'))); -- common_hidden('token', common_session_token()); -- common_input('nickname', _('User nickname'), $nickname, -- _('Nickname of the user you want to follow')); -- common_input('profile_url', _('Profile URL'), $profile, -- _('URL of your profile on another compatible microblogging service')); -- common_submit('submit', _('Subscribe')); -- common_element_end('form'); -- common_show_footer(); -- } -+ function show_form($err=NULL) { -+ $nickname = $this->trimmed('nickname'); -+ $profile = $this->trimmed('profile_url'); -+ common_show_header(_('Remote subscribe'), NULL, $err, -+ array($this, 'show_top')); -+ # id = remotesubscribe conflicts with the -+ # button on profile page -+ common_element_start('form', array('id' => 'remsub', 'method' => 'post', -+ 'action' => common_local_url('remotesubscribe'))); -+ common_hidden('token', common_session_token()); -+ common_input('nickname', _('User nickname'), $nickname, -+ _('Nickname of the user you want to follow')); -+ common_input('profile_url', _('Profile URL'), $profile, -+ _('URL of your profile on another compatible microblogging service')); -+ common_submit('submit', _('Subscribe')); -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/remotesubscribe.php 89 -- function remote_subscription() { -- $user = $this->get_user(); -+ function remote_subscription() { -+ $user = $this->get_user(); -hunk ./actions/remotesubscribe.php 92 -- if (!$user) { -- $this->show_form(_('No such user.')); -- return; -- } -+ if (!$user) { -+ $this->show_form(_('No such user.')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 97 -- $profile = $this->trimmed('profile_url'); -+ $profile = $this->trimmed('profile_url'); -hunk ./actions/remotesubscribe.php 99 -- if (!$profile) { -- $this->show_form(_('No such user.')); -- return; -- } -+ if (!$profile) { -+ $this->show_form(_('No such user.')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 104 -- if (!Validate::uri($profile, array('allowed_schemes' => array('http', 'https')))) { -- $this->show_form(_('Invalid profile URL (bad format)')); -- return; -- } -+ if (!Validate::uri($profile, array('allowed_schemes' => array('http', 'https')))) { -+ $this->show_form(_('Invalid profile URL (bad format)')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 109 -- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); -- $yadis = Auth_Yadis_Yadis::discover($profile, $fetcher); -+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); -+ $yadis = Auth_Yadis_Yadis::discover($profile, $fetcher); -hunk ./actions/remotesubscribe.php 112 -- if (!$yadis || $yadis->failed) { -- $this->show_form(_('Not a valid profile URL (no YADIS document).')); -- return; -- } -+ if (!$yadis || $yadis->failed) { -+ $this->show_form(_('Not a valid profile URL (no YADIS document).')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 117 -- # XXX: a little liberal for sites that accidentally put whitespace before the xml declaration -+ # XXX: a little liberal for sites that accidentally put whitespace before the xml declaration -hunk ./actions/remotesubscribe.php 121 -- if (!$xrds) { -- $this->show_form(_('Not a valid profile URL (no XRDS defined).')); -- return; -- } -+ if (!$xrds) { -+ $this->show_form(_('Not a valid profile URL (no XRDS defined).')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 126 -- $omb = $this->getOmb($xrds); -+ $omb = $this->getOmb($xrds); -hunk ./actions/remotesubscribe.php 128 -- if (!$omb) { -- $this->show_form(_('Not a valid profile URL (incorrect services).')); -- return; -- } -+ if (!$omb) { -+ $this->show_form(_('Not a valid profile URL (incorrect services).')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 133 -- if (omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]) == -- common_local_url('requesttoken')) -- { -- $this->show_form(_('That\'s a local profile! Login to subscribe.')); -- return; -- } -+ if (omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]) == -+ common_local_url('requesttoken')) -+ { -+ $this->show_form(_('That\'s a local profile! Login to subscribe.')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 140 -- if (User::staticGet('uri', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]))) { -- $this->show_form(_('That\'s a local profile! Login to subscribe.')); -- return; -- } -+ if (User::staticGet('uri', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]))) { -+ $this->show_form(_('That\'s a local profile! Login to subscribe.')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 145 -- list($token, $secret) = $this->request_token($omb); -+ list($token, $secret) = $this->request_token($omb); -hunk ./actions/remotesubscribe.php 147 -- if (!$token || !$secret) { -- $this->show_form(_('Couldn\'t get a request token.')); -- return; -- } -+ if (!$token || !$secret) { -+ $this->show_form(_('Couldn\'t get a request token.')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 152 -- $this->request_authorization($user, $omb, $token, $secret); -- } -+ $this->request_authorization($user, $omb, $token, $secret); -+ } -hunk ./actions/remotesubscribe.php 155 -- function get_user() { -- $user = NULL; -- $nickname = $this->trimmed('nickname'); -- if ($nickname) { -- $user = User::staticGet('nickname', $nickname); -- } -- return $user; -- } -+ function get_user() { -+ $user = NULL; -+ $nickname = $this->trimmed('nickname'); -+ if ($nickname) { -+ $user = User::staticGet('nickname', $nickname); -+ } -+ return $user; -+ } -hunk ./actions/remotesubscribe.php 164 -- function getOmb($xrds) { -+ function getOmb($xrds) { -hunk ./actions/remotesubscribe.php 166 -- static $omb_endpoints = array(OMB_ENDPOINT_UPDATEPROFILE, OMB_ENDPOINT_POSTNOTICE); -- static $oauth_endpoints = array(OAUTH_ENDPOINT_REQUEST, OAUTH_ENDPOINT_AUTHORIZE, -- OAUTH_ENDPOINT_ACCESS); -- $omb = array(); -+ static $omb_endpoints = array(OMB_ENDPOINT_UPDATEPROFILE, OMB_ENDPOINT_POSTNOTICE); -+ static $oauth_endpoints = array(OAUTH_ENDPOINT_REQUEST, OAUTH_ENDPOINT_AUTHORIZE, -+ OAUTH_ENDPOINT_ACCESS); -+ $omb = array(); -hunk ./actions/remotesubscribe.php 171 -- # XXX: the following code could probably be refactored to eliminate dupes -+ # XXX: the following code could probably be refactored to eliminate dupes -hunk ./actions/remotesubscribe.php 173 -- $oauth_services = omb_get_services($xrds, OAUTH_DISCOVERY); -+ $oauth_services = omb_get_services($xrds, OAUTH_DISCOVERY); -hunk ./actions/remotesubscribe.php 175 -- if (!$oauth_services) { -- return NULL; -- } -+ if (!$oauth_services) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 179 -- $oauth_service = $oauth_services[0]; -+ $oauth_service = $oauth_services[0]; -hunk ./actions/remotesubscribe.php 181 -- $oauth_xrd = $this->getXRD($oauth_service, $xrds); -+ $oauth_xrd = $this->getXRD($oauth_service, $xrds); -hunk ./actions/remotesubscribe.php 183 -- if (!$oauth_xrd) { -- return NULL; -- } -+ if (!$oauth_xrd) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 187 -- if (!$this->addServices($oauth_xrd, $oauth_endpoints, $omb)) { -- return NULL; -- } -+ if (!$this->addServices($oauth_xrd, $oauth_endpoints, $omb)) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 191 -- $omb_services = omb_get_services($xrds, OMB_NAMESPACE); -+ $omb_services = omb_get_services($xrds, OMB_NAMESPACE); -hunk ./actions/remotesubscribe.php 193 -- if (!$omb_services) { -- return NULL; -- } -+ if (!$omb_services) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 197 -- $omb_service = $omb_services[0]; -+ $omb_service = $omb_services[0]; -hunk ./actions/remotesubscribe.php 199 -- $omb_xrd = $this->getXRD($omb_service, $xrds); -+ $omb_xrd = $this->getXRD($omb_service, $xrds); -hunk ./actions/remotesubscribe.php 201 -- if (!$omb_xrd) { -- return NULL; -- } -+ if (!$omb_xrd) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 205 -- if (!$this->addServices($omb_xrd, $omb_endpoints, $omb)) { -- return NULL; -- } -+ if (!$this->addServices($omb_xrd, $omb_endpoints, $omb)) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 209 -- # XXX: check that we got all the services we needed -+ # XXX: check that we got all the services we needed -hunk ./actions/remotesubscribe.php 211 -- foreach (array_merge($omb_endpoints, $oauth_endpoints) as $type) { -- if (!array_key_exists($type, $omb) || !$omb[$type]) { -- return NULL; -- } -- } -+ foreach (array_merge($omb_endpoints, $oauth_endpoints) as $type) { -+ if (!array_key_exists($type, $omb) || !$omb[$type]) { -+ return NULL; -+ } -+ } -hunk ./actions/remotesubscribe.php 217 -- if (!omb_local_id($omb[OAUTH_ENDPOINT_REQUEST])) { -- return NULL; -- } -+ if (!omb_local_id($omb[OAUTH_ENDPOINT_REQUEST])) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 221 -- return $omb; -- } -+ return $omb; -+ } -hunk ./actions/remotesubscribe.php 224 -- function getXRD($main_service, $main_xrds) { -- $uri = omb_service_uri($main_service); -- if (strpos($uri, "#") !== 0) { -- # FIXME: more rigorous handling of external service definitions -- return NULL; -- } -- $id = substr($uri, 1); -- $nodes = $main_xrds->allXrdNodes; -- $parser = $main_xrds->parser; -- foreach ($nodes as $node) { -- $attrs = $parser->attributes($node); -- if (array_key_exists('xml:id', $attrs) && -- $attrs['xml:id'] == $id) { -- # XXX: trick the constructor into thinking this is the only node -- $bogus_nodes = array($node); -- return new Auth_Yadis_XRDS($parser, $bogus_nodes); -- } -- } -- return NULL; -- } -+ function getXRD($main_service, $main_xrds) { -+ $uri = omb_service_uri($main_service); -+ if (strpos($uri, "#") !== 0) { -+ # FIXME: more rigorous handling of external service definitions -+ return NULL; -+ } -+ $id = substr($uri, 1); -+ $nodes = $main_xrds->allXrdNodes; -+ $parser = $main_xrds->parser; -+ foreach ($nodes as $node) { -+ $attrs = $parser->attributes($node); -+ if (array_key_exists('xml:id', $attrs) && -+ $attrs['xml:id'] == $id) { -+ # XXX: trick the constructor into thinking this is the only node -+ $bogus_nodes = array($node); -+ return new Auth_Yadis_XRDS($parser, $bogus_nodes); -+ } -+ } -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 245 -- function addServices($xrd, $types, &$omb) { -- foreach ($types as $type) { -- $matches = omb_get_services($xrd, $type); -- if ($matches) { -- $omb[$type] = $matches[0]; -- } else { -- # no match for type -- return false; -- } -- } -- return true; -- } -+ function addServices($xrd, $types, &$omb) { -+ foreach ($types as $type) { -+ $matches = omb_get_services($xrd, $type); -+ if ($matches) { -+ $omb[$type] = $matches[0]; -+ } else { -+ # no match for type -+ return false; -+ } -+ } -+ return true; -+ } -hunk ./actions/remotesubscribe.php 258 -- function request_token($omb) { -- $con = omb_oauth_consumer(); -+ function request_token($omb) { -+ $con = omb_oauth_consumer(); -hunk ./actions/remotesubscribe.php 261 -- $url = omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]); -+ $url = omb_service_uri($omb[OAUTH_ENDPOINT_REQUEST]); -hunk ./actions/remotesubscribe.php 263 -- # XXX: Is this the right thing to do? Strip off GET params and make them -- # POST params? Seems wrong to me. -+ # XXX: Is this the right thing to do? Strip off GET params and make them -+ # POST params? Seems wrong to me. -hunk ./actions/remotesubscribe.php 266 -- $parsed = parse_url($url); -- $params = array(); -- parse_str($parsed['query'], $params); -+ $parsed = parse_url($url); -+ $params = array(); -+ parse_str($parsed['query'], $params); -hunk ./actions/remotesubscribe.php 270 -- $req = OAuthRequest::from_consumer_and_token($con, NULL, "POST", $url, $params); -+ $req = OAuthRequest::from_consumer_and_token($con, NULL, "POST", $url, $params); -hunk ./actions/remotesubscribe.php 272 -- $listener = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]); -+ $listener = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]); -hunk ./actions/remotesubscribe.php 274 -- if (!$listener) { -- return NULL; -- } -+ if (!$listener) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 278 -- $req->set_parameter('omb_listener', $listener); -- $req->set_parameter('omb_version', OMB_VERSION_01); -+ $req->set_parameter('omb_listener', $listener); -+ $req->set_parameter('omb_version', OMB_VERSION_01); -hunk ./actions/remotesubscribe.php 281 -- # XXX: test to see if endpoint accepts this signature method -+ # XXX: test to see if endpoint accepts this signature method -hunk ./actions/remotesubscribe.php 283 -- $req->sign_request(omb_hmac_sha1(), $con, NULL); -+ $req->sign_request(omb_hmac_sha1(), $con, NULL); -hunk ./actions/remotesubscribe.php 285 -- # We re-use this tool's fetcher, since it's pretty good -+ # We re-use this tool's fetcher, since it's pretty good -hunk ./actions/remotesubscribe.php 287 -- $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); -+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); -hunk ./actions/remotesubscribe.php 289 -- $result = $fetcher->post($req->get_normalized_http_url(), -- $req->to_postdata(), -+ $result = $fetcher->post($req->get_normalized_http_url(), -+ $req->to_postdata(), -hunk ./actions/remotesubscribe.php 293 -- if ($result->status != 200) { -- return NULL; -- } -+ if ($result->status != 200) { -+ return NULL; -+ } -hunk ./actions/remotesubscribe.php 297 -- parse_str($result->body, $return); -+ parse_str($result->body, $return); -hunk ./actions/remotesubscribe.php 299 -- return array($return['oauth_token'], $return['oauth_token_secret']); -- } -+ return array($return['oauth_token'], $return['oauth_token_secret']); -+ } -hunk ./actions/remotesubscribe.php 302 -- function request_authorization($user, $omb, $token, $secret) { -- global $config; # for license URL -+ function request_authorization($user, $omb, $token, $secret) { -+ global $config; # for license URL -hunk ./actions/remotesubscribe.php 305 -- $con = omb_oauth_consumer(); -- $tok = new OAuthToken($token, $secret); -+ $con = omb_oauth_consumer(); -+ $tok = new OAuthToken($token, $secret); -hunk ./actions/remotesubscribe.php 308 -- $url = omb_service_uri($omb[OAUTH_ENDPOINT_AUTHORIZE]); -+ $url = omb_service_uri($omb[OAUTH_ENDPOINT_AUTHORIZE]); -hunk ./actions/remotesubscribe.php 310 -- # XXX: Is this the right thing to do? Strip off GET params and make them -- # POST params? Seems wrong to me. -+ # XXX: Is this the right thing to do? Strip off GET params and make them -+ # POST params? Seems wrong to me. -hunk ./actions/remotesubscribe.php 313 -- $parsed = parse_url($url); -- $params = array(); -- parse_str($parsed['query'], $params); -+ $parsed = parse_url($url); -+ $params = array(); -+ parse_str($parsed['query'], $params); -hunk ./actions/remotesubscribe.php 317 -- $req = OAuthRequest::from_consumer_and_token($con, $tok, 'GET', $url, $params); -+ $req = OAuthRequest::from_consumer_and_token($con, $tok, 'GET', $url, $params); -hunk ./actions/remotesubscribe.php 319 -- # We send over a ton of information. This lets the other -- # server store info about our user, and it lets the current -- # user decide if they really want to authorize the subscription. -+ # We send over a ton of information. This lets the other -+ # server store info about our user, and it lets the current -+ # user decide if they really want to authorize the subscription. -hunk ./actions/remotesubscribe.php 323 -- $req->set_parameter('omb_version', OMB_VERSION_01); -- $req->set_parameter('omb_listener', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST])); -- $req->set_parameter('omb_listenee', $user->uri); -- $req->set_parameter('omb_listenee_profile', common_profile_url($user->nickname)); -- $req->set_parameter('omb_listenee_nickname', $user->nickname); -- $req->set_parameter('omb_listenee_license', $config['license']['url']); -+ $req->set_parameter('omb_version', OMB_VERSION_01); -+ $req->set_parameter('omb_listener', omb_local_id($omb[OAUTH_ENDPOINT_REQUEST])); -+ $req->set_parameter('omb_listenee', $user->uri); -+ $req->set_parameter('omb_listenee_profile', common_profile_url($user->nickname)); -+ $req->set_parameter('omb_listenee_nickname', $user->nickname); -+ $req->set_parameter('omb_listenee_license', $config['license']['url']); -hunk ./actions/remotesubscribe.php 330 -- $profile = $user->getProfile(); -- if (!$profile) { -- common_log_db_error($user, 'SELECT', __FILE__); -- $this->server_error(_('User without matching profile')); -- return; -- } -+ $profile = $user->getProfile(); -+ if (!$profile) { -+ common_log_db_error($user, 'SELECT', __FILE__); -+ $this->server_error(_('User without matching profile')); -+ return; -+ } -hunk ./actions/remotesubscribe.php 337 -- if ($profile->fullname) { -- $req->set_parameter('omb_listenee_fullname', $profile->fullname); -- } -- if ($profile->homepage) { -- $req->set_parameter('omb_listenee_homepage', $profile->homepage); -- } -- if ($profile->bio) { -- $req->set_parameter('omb_listenee_bio', $profile->bio); -- } -- if ($profile->location) { -- $req->set_parameter('omb_listenee_location', $profile->location); -- } -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -- if ($avatar) { -- $req->set_parameter('omb_listenee_avatar', $avatar->url); -- } -+ if ($profile->fullname) { -+ $req->set_parameter('omb_listenee_fullname', $profile->fullname); -+ } -+ if ($profile->homepage) { -+ $req->set_parameter('omb_listenee_homepage', $profile->homepage); -+ } -+ if ($profile->bio) { -+ $req->set_parameter('omb_listenee_bio', $profile->bio); -+ } -+ if ($profile->location) { -+ $req->set_parameter('omb_listenee_location', $profile->location); -+ } -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ if ($avatar) { -+ $req->set_parameter('omb_listenee_avatar', $avatar->url); -+ } -hunk ./actions/remotesubscribe.php 354 -- # XXX: add a nonce to prevent replay attacks -+ # XXX: add a nonce to prevent replay attacks -hunk ./actions/remotesubscribe.php 356 -- $req->set_parameter('oauth_callback', common_local_url('finishremotesubscribe')); -+ $req->set_parameter('oauth_callback', common_local_url('finishremotesubscribe')); -hunk ./actions/remotesubscribe.php 358 -- # XXX: test to see if endpoint accepts this signature method -+ # XXX: test to see if endpoint accepts this signature method -hunk ./actions/remotesubscribe.php 360 -- $req->sign_request(omb_hmac_sha1(), $con, $tok); -+ $req->sign_request(omb_hmac_sha1(), $con, $tok); -hunk ./actions/remotesubscribe.php 362 -- # store all our info here -+ # store all our info here -hunk ./actions/remotesubscribe.php 364 -- $omb['listenee'] = $user->nickname; -- $omb['listener'] = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]); -- $omb['token'] = $token; -- $omb['secret'] = $secret; -- # call doesn't work after bounce back so we cache; maybe serialization issue...? -- $omb['access_token_url'] = omb_service_uri($omb[OAUTH_ENDPOINT_ACCESS]); -- $omb['post_notice_url'] = omb_service_uri($omb[OMB_ENDPOINT_POSTNOTICE]); -- $omb['update_profile_url'] = omb_service_uri($omb[OMB_ENDPOINT_UPDATEPROFILE]); -+ $omb['listenee'] = $user->nickname; -+ $omb['listener'] = omb_local_id($omb[OAUTH_ENDPOINT_REQUEST]); -+ $omb['token'] = $token; -+ $omb['secret'] = $secret; -+ # call doesn't work after bounce back so we cache; maybe serialization issue...? -+ $omb['access_token_url'] = omb_service_uri($omb[OAUTH_ENDPOINT_ACCESS]); -+ $omb['post_notice_url'] = omb_service_uri($omb[OMB_ENDPOINT_POSTNOTICE]); -+ $omb['update_profile_url'] = omb_service_uri($omb[OMB_ENDPOINT_UPDATEPROFILE]); -hunk ./actions/remotesubscribe.php 373 -- common_ensure_session(); -+ common_ensure_session(); -hunk ./actions/remotesubscribe.php 375 -- $_SESSION['oauth_authorization_request'] = $omb; -+ $_SESSION['oauth_authorization_request'] = $omb; -hunk ./actions/remotesubscribe.php 377 -- # Redirect to authorization service -+ # Redirect to authorization service -hunk ./actions/remotesubscribe.php 379 -- common_redirect($req->to_url()); -- return; -- } -+ common_redirect($req->to_url()); -+ return; -+ } -hunk ./actions/remotesubscribe.php 383 -- function make_nonce() { -- return common_good_rand(16); -- } -+ function make_nonce() { -+ return common_good_rand(16); -+ } -hunk ./actions/replies.php 26 -- function handle($args) { -+ function handle($args) { -hunk ./actions/replies.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/replies.php 30 -- $nickname = common_canonical_nickname($this->arg('nickname')); -- $user = User::staticGet('nickname', $nickname); -+ $nickname = common_canonical_nickname($this->arg('nickname')); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/replies.php 33 -- if (!$user) { -- $this->no_such_user(); -- return; -- } -+ if (!$user) { -+ $this->no_such_user(); -+ return; -+ } -hunk ./actions/replies.php 38 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/replies.php 40 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/replies.php 45 -- # Looks like we're good; show the header -+ # Looks like we're good; show the header -hunk ./actions/replies.php 47 -- common_show_header(sprintf(_("Replies to %s"), $profile->nickname), -- array($this, 'show_header'), $user, -- array($this, 'show_top')); -+ common_show_header(sprintf(_("Replies to %s"), $profile->nickname), -+ array($this, 'show_header'), $user, -+ array($this, 'show_top')); -hunk ./actions/replies.php 51 -- $this->show_replies($user); -+ $this->show_replies($user); -hunk ./actions/replies.php 53 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/replies.php 56 -- function no_such_user() { -- common_user_error(_('No such user.')); -- } -+ function no_such_user() { -+ common_user_error(_('No such user.')); -+ } -hunk ./actions/replies.php 60 -- function show_header($user) { -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('repliesrss', array('nickname' => -- $user->nickname)), -- 'type' => 'application/rss+xml', -- 'title' => sprintf(_('Feed for replies to %s'), $user->nickname))); -- } -+ function show_header($user) { -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('repliesrss', array('nickname' => -+ $user->nickname)), -+ 'type' => 'application/rss+xml', -+ 'title' => sprintf(_('Feed for replies to %s'), $user->nickname))); -+ } -hunk ./actions/replies.php 68 -- function show_top($user) { -- $cur = common_current_user(); -+ function show_top($user) { -+ $cur = common_current_user(); -hunk ./actions/replies.php 71 -- if ($cur && $cur->id == $user->id) { -- common_notice_form('replies'); -- } -+ if ($cur && $cur->id == $user->id) { -+ common_notice_form('replies'); -+ } -hunk ./actions/replies.php 75 -- $this->views_menu(); -+ $this->views_menu(); -hunk ./actions/replies.php 77 -- $this->show_feeds_list(array(0=>array('href'=>common_local_url('repliesrss', array('nickname' => $user->nickname)), -- 'type' => 'rss', -- 'version' => 'RSS 1.0', -- 'item' => 'repliesrss'))); -- } -+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('repliesrss', array('nickname' => $user->nickname)), -+ 'type' => 'rss', -+ 'version' => 'RSS 1.0', -+ 'item' => 'repliesrss'))); -+ } -hunk ./actions/replies.php 83 -- function show_replies($user) { -+ function show_replies($user) { -hunk ./actions/replies.php 85 -- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -hunk ./actions/replies.php 87 -- $notice = $user->getReplies(($page-1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -+ $notice = $user->getReplies(($page-1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -hunk ./actions/replies.php 89 -- $cnt = $this->show_notice_list($notice); -+ $cnt = $this->show_notice_list($notice); -hunk ./actions/replies.php 91 -- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'replies', array('nickname' => $user->nickname)); -- } -+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'replies', array('nickname' => $user->nickname)); -+ } -hunk ./actions/repliesrss.php 28 -- var $user = NULL; -+ var $user = NULL; -hunk ./actions/repliesrss.php 30 -- function init() { -- $nickname = $this->trimmed('nickname'); -- $this->user = User::staticGet('nickname', $nickname); -+ function init() { -+ $nickname = $this->trimmed('nickname'); -+ $this->user = User::staticGet('nickname', $nickname); -hunk ./actions/repliesrss.php 34 -- if (!$this->user) { -- common_user_error(_('No such user.')); -- return false; -- } else { -- return true; -- } -- } -+ if (!$this->user) { -+ common_user_error(_('No such user.')); -+ return false; -+ } else { -+ return true; -+ } -+ } -hunk ./actions/repliesrss.php 42 -- function get_notices($limit=0) { -+ function get_notices($limit=0) { -hunk ./actions/repliesrss.php 44 -- $user = $this->user; -+ $user = $this->user; -hunk ./actions/repliesrss.php 46 -- $notice = $user->getReplies(0, ($limit == 0) ? 48 : $limit); -+ $notice = $user->getReplies(0, ($limit == 0) ? 48 : $limit); -hunk ./actions/repliesrss.php 48 -- $notices = array(); -- -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ $notices = array(); -+ -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./actions/repliesrss.php 54 -- return $notices; -- } -+ return $notices; -+ } -hunk ./actions/repliesrss.php 57 -- function get_channel() { -- $user = $this->user; -- $c = array('url' => common_local_url('repliesrss', -- array('nickname' => -- $user->nickname)), -- 'title' => sprintf(_("Replies to %s"), $user->nickname), -- 'link' => common_local_url('replies', -- array('nickname' => -- $user->nickname)), -- 'description' => sprintf(_('Feed for replies to %s'), $user->nickname)); -- return $c; -- } -+ function get_channel() { -+ $user = $this->user; -+ $c = array('url' => common_local_url('repliesrss', -+ array('nickname' => -+ $user->nickname)), -+ 'title' => sprintf(_("Replies to %s"), $user->nickname), -+ 'link' => common_local_url('replies', -+ array('nickname' => -+ $user->nickname)), -+ 'description' => sprintf(_('Feed for replies to %s'), $user->nickname)); -+ return $c; -+ } -hunk ./actions/repliesrss.php 70 -- function get_image() { -- $user = $this->user; -- $profile = $user->getProfile(); -- if (!$profile) { -- return NULL; -- } -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -- return ($avatar) ? $avatar->url : NULL; -- } -+ function get_image() { -+ $user = $this->user; -+ $profile = $user->getProfile(); -+ if (!$profile) { -+ return NULL; -+ } -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ return ($avatar) ? $avatar->url : NULL; -+ } -hunk ./actions/requesttoken.php 25 -- -- function is_readonly() { -- return false; -- } -- -- function handle($args) { -- parent::handle($args); -- try { -- common_remove_magic_from_request(); -- $req = OAuthRequest::from_request(); -- $server = omb_oauth_server(); -- $token = $server->fetch_request_token($req); -- print $token; -- } catch (OAuthException $e) { -- common_server_error($e->getMessage()); -- } -- } -+ -+ function is_readonly() { -+ return false; -+ } -+ -+ function handle($args) { -+ parent::handle($args); -+ try { -+ common_remove_magic_from_request(); -+ $req = OAuthRequest::from_request(); -+ $server = omb_oauth_server(); -+ $token = $server->fetch_request_token($req); -+ print $token; -+ } catch (OAuthException $e) { -+ common_server_error($e->getMessage()); -+ } -+ } -hunk ./actions/showfavorites.php 26 -- function handle($args) { -+ function handle($args) { -hunk ./actions/showfavorites.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/showfavorites.php 30 -- $nickname = common_canonical_nickname($this->arg('nickname')); -- $user = User::staticGet('nickname', $nickname); -+ $nickname = common_canonical_nickname($this->arg('nickname')); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/showfavorites.php 33 -- if (!$user) { -- $this->client_error(_('No such user.')); -- return; -- } -+ if (!$user) { -+ $this->client_error(_('No such user.')); -+ return; -+ } -hunk ./actions/showfavorites.php 38 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/showfavorites.php 40 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/showfavorites.php 45 -- # Looks like we're good; show the header -+ # Looks like we're good; show the header -hunk ./actions/showfavorites.php 47 -- common_show_header(sprintf(_("%s favorite notices"), $profile->nickname), -- array($this, 'show_header'), $user, -- array($this, 'show_top')); -+ common_show_header(sprintf(_("%s favorite notices"), $profile->nickname), -+ array($this, 'show_header'), $user, -+ array($this, 'show_top')); -hunk ./actions/showfavorites.php 51 -- $this->show_notices($user); -+ $this->show_notices($user); -hunk ./actions/showfavorites.php 53 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/showfavorites.php 56 -- function show_header($user) { -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('favoritesrss', array('nickname' => -- $user->nickname)), -- 'type' => 'application/rss+xml', -- 'title' => sprintf(_('Feed for favorites of %s'), $user->nickname))); -- } -+ function show_header($user) { -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('favoritesrss', array('nickname' => -+ $user->nickname)), -+ 'type' => 'application/rss+xml', -+ 'title' => sprintf(_('Feed for favorites of %s'), $user->nickname))); -+ } -hunk ./actions/showfavorites.php 64 -- function show_top($user) { -- $cur = common_current_user(); -+ function show_top($user) { -+ $cur = common_current_user(); -hunk ./actions/showfavorites.php 67 -- if ($cur && $cur->id == $user->id) { -- common_notice_form('all'); -- } -+ if ($cur && $cur->id == $user->id) { -+ common_notice_form('all'); -+ } -hunk ./actions/showfavorites.php 71 -- $this->show_feeds_list(array(0=>array('href'=>common_local_url('favoritesrss', array('nickname' => $user->nickname)), -- 'type' => 'rss', -- 'version' => 'RSS 1.0', -- 'item' => 'Favorites'))); -- $this->views_menu(); -- } -+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('favoritesrss', array('nickname' => $user->nickname)), -+ 'type' => 'rss', -+ 'version' => 'RSS 1.0', -+ 'item' => 'Favorites'))); -+ $this->views_menu(); -+ } -hunk ./actions/showfavorites.php 78 -- function show_notices($user) { -+ function show_notices($user) { -hunk ./actions/showfavorites.php 80 -- $page = $this->trimmed('page'); -- if (!$page) { -- $page = 1; -- } -+ $page = $this->trimmed('page'); -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/showfavorites.php 85 -- $notice = $user->favoriteNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -+ $notice = $user->favoriteNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -hunk ./actions/showfavorites.php 87 -- if (!$notice) { -- $this->server_error(_('Could not retrieve favorite notices.')); -- return; -- } -+ if (!$notice) { -+ $this->server_error(_('Could not retrieve favorite notices.')); -+ return; -+ } -hunk ./actions/showfavorites.php 94 -- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'showfavorites', array('nickname' => $user->nickname)); -- } -+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'showfavorites', array('nickname' => $user->nickname)); -+ } -hunk ./actions/showmessage.php 26 -- function handle($args) { -+ function handle($args) { -hunk ./actions/showmessage.php 28 -- Action::handle($args); -+ Action::handle($args); -hunk ./actions/showmessage.php 30 -- $message = $this->get_message(); -+ $message = $this->get_message(); -hunk ./actions/showmessage.php 32 -- if (!$message) { -- $this->client_error(_('No such message.'), 404); -- return; -- } -- -- $cur = common_current_user(); -- -- if ($cur && ($cur->id == $message->from_profile || $cur->id == $message->to_profile)) { -- $this->show_page($cur, 1); -- } else { -- $this->client_error(_('Only the sender and recipient may read this message.'), 403); -- return; -- } -- } -- -- function get_message() { -- $id = $this->trimmed('message'); -- $message = Message::staticGet('id', $id); -- return $message; -- } -- -- function get_title($user, $page) { -- $message = $this->get_message(); -- if (!$message) { -- return NULL; -- } -- -- if ($user->id == $message->from_profile) { -- $to = $message->getTo(); -- $title = sprintf(_("Message to %1\$s on %2\$s"), -- $to->nickname, -- common_exact_date($message->created)); -- } else if ($user->id == $message->to_profile) { -- $from = $message->getFrom(); -- $title = sprintf(_("Message from %1\$s on %2\$s"), -- $from->nickname, -- common_exact_date($message->created)); -- } -- return $title; -- } -+ if (!$message) { -+ $this->client_error(_('No such message.'), 404); -+ return; -+ } -+ -+ $cur = common_current_user(); -+ -+ if ($cur && ($cur->id == $message->from_profile || $cur->id == $message->to_profile)) { -+ $this->show_page($cur, 1); -+ } else { -+ $this->client_error(_('Only the sender and recipient may read this message.'), 403); -+ return; -+ } -+ } -+ -+ function get_message() { -+ $id = $this->trimmed('message'); -+ $message = Message::staticGet('id', $id); -+ return $message; -+ } -+ -+ function get_title($user, $page) { -+ $message = $this->get_message(); -+ if (!$message) { -+ return NULL; -+ } -+ -+ if ($user->id == $message->from_profile) { -+ $to = $message->getTo(); -+ $title = sprintf(_("Message to %1\$s on %2\$s"), -+ $to->nickname, -+ common_exact_date($message->created)); -+ } else if ($user->id == $message->to_profile) { -+ $from = $message->getFrom(); -+ $title = sprintf(_("Message from %1\$s on %2\$s"), -+ $from->nickname, -+ common_exact_date($message->created)); -+ } -+ return $title; -+ } -hunk ./actions/showmessage.php 73 -- function get_messages($user, $page) { -- $message = new Message(); -- $message->id = $this->trimmed('message'); -- $message->find(); -- return $message; -- } -- -- function get_message_profile($message) { -- $user = common_current_user(); -- if ($user->id == $message->from_profile) { -- return $message->getTo(); -- } else if ($user->id == $message->to_profile) { -- return $message->getFrom(); -- } else { -- # This shouldn't happen -- return NULL; -- } -- } -- -- function get_instructions() { -- return ''; -- } -- -- function views_menu() { -- return; -- } -+ function get_messages($user, $page) { -+ $message = new Message(); -+ $message->id = $this->trimmed('message'); -+ $message->find(); -+ return $message; -+ } -+ -+ function get_message_profile($message) { -+ $user = common_current_user(); -+ if ($user->id == $message->from_profile) { -+ return $message->getTo(); -+ } else if ($user->id == $message->to_profile) { -+ return $message->getFrom(); -+ } else { -+ # This shouldn't happen -+ return NULL; -+ } -+ } -+ -+ function get_instructions() { -+ return ''; -+ } -+ -+ function views_menu() { -+ return; -+ } -hunk ./actions/showmessage.php 100 -- -+ -hunk ./actions/shownotice.php 26 -- var $notice = NULL; -- var $profile = NULL; -- var $avatar = NULL; -+ var $notice = NULL; -+ var $profile = NULL; -+ var $avatar = NULL; -hunk ./actions/shownotice.php 30 -- function prepare($args) { -+ function prepare($args) { -hunk ./actions/shownotice.php 32 -- parent::prepare($args); -+ parent::prepare($args); -hunk ./actions/shownotice.php 34 -- $id = $this->arg('notice'); -- $this->notice = Notice::staticGet($id); -+ $id = $this->arg('notice'); -+ $this->notice = Notice::staticGet($id); -hunk ./actions/shownotice.php 37 -- if (!$this->notice) { -- $this->client_error(_('No such notice.'), 404); -- return false; -- } -+ if (!$this->notice) { -+ $this->client_error(_('No such notice.'), 404); -+ return false; -+ } -hunk ./actions/shownotice.php 42 -- $this->profile = $this->notice->getProfile(); -+ $this->profile = $this->notice->getProfile(); -hunk ./actions/shownotice.php 44 -- if (!$this->profile) { -- $this->server_error(_('Notice has no profile'), 500); -- return false; -- } -+ if (!$this->profile) { -+ $this->server_error(_('Notice has no profile'), 500); -+ return false; -+ } -hunk ./actions/shownotice.php 49 -- $this->avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE); -+ $this->avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE); -hunk ./actions/shownotice.php 51 -- return true; -- } -+ return true; -+ } -hunk ./actions/shownotice.php 54 -- function last_modified() { -- return max(strtotime($this->notice->created), -- strtotime($this->profile->modified), -- ($this->avatar) ? strtotime($this->avatar->modified) : 0); -- } -+ function last_modified() { -+ return max(strtotime($this->notice->created), -+ strtotime($this->profile->modified), -+ ($this->avatar) ? strtotime($this->avatar->modified) : 0); -+ } -hunk ./actions/shownotice.php 60 -- function etag() { -- return 'W/"' . implode(':', array($this->arg('action'), -- common_language(), -- $this->notice->id, -- strtotime($this->notice->created), -- strtotime($this->profile->modified), -- ($this->avatar) ? strtotime($this->avatar->modified) : 0)) . '"'; -- } -+ function etag() { -+ return 'W/"' . implode(':', array($this->arg('action'), -+ common_language(), -+ $this->notice->id, -+ strtotime($this->notice->created), -+ strtotime($this->profile->modified), -+ ($this->avatar) ? strtotime($this->avatar->modified) : 0)) . '"'; -+ } -hunk ./actions/shownotice.php 69 -- function handle($args) { -+ function handle($args) { -hunk ./actions/shownotice.php 71 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/shownotice.php 73 -- common_show_header(sprintf(_('%1$s\'s status on %2$s'), -- $this->profile->nickname, -- common_exact_date($this->notice->created)), -- array($this, 'show_header'), NULL, -- array($this, 'show_top')); -+ common_show_header(sprintf(_('%1$s\'s status on %2$s'), -+ $this->profile->nickname, -+ common_exact_date($this->notice->created)), -+ array($this, 'show_header'), NULL, -+ array($this, 'show_top')); -hunk ./actions/shownotice.php 79 -- common_element_start('ul', array('id' => 'notices')); -+ common_element_start('ul', array('id' => 'notices')); -hunk ./actions/shownotice.php 82 -- common_element_end('ul'); -+ common_element_end('ul'); -hunk ./actions/shownotice.php 84 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/shownotice.php 87 -- function show_header() { -+ function show_header() { -hunk ./actions/shownotice.php 89 -- $user = User::staticGet($this->profile->id); -+ $user = User::staticGet($this->profile->id); -hunk ./actions/shownotice.php 91 -- if (!$user) { -- return; -- } -+ if (!$user) { -+ return; -+ } -hunk ./actions/shownotice.php 95 -- if ($user->emailmicroid && $user->email && $this->notice->uri) { -- common_element('meta', array('name' => 'microid', -- 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($this->notice->uri)))); -- } -+ if ($user->emailmicroid && $user->email && $this->notice->uri) { -+ common_element('meta', array('name' => 'microid', -+ 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($this->notice->uri)))); -+ } -hunk ./actions/shownotice.php 100 -- if ($user->jabbermicroid && $user->jabber && $this->notice->uri) { -- common_element('meta', array('name' => 'microid', -- 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($this->notice->uri)))); -- } -- } -+ if ($user->jabbermicroid && $user->jabber && $this->notice->uri) { -+ common_element('meta', array('name' => 'microid', -+ 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($this->notice->uri)))); -+ } -+ } -hunk ./actions/shownotice.php 106 -- function show_top() { -- $cur = common_current_user(); -- if ($cur && $cur->id == $this->profile->id) { -- common_notice_form(); -- } -- } -+ function show_top() { -+ $cur = common_current_user(); -+ if ($cur && $cur->id == $this->profile->id) { -+ common_notice_form(); -+ } -+ } -hunk ./actions/shownotice.php 113 -- function no_such_notice() { -- common_user_error(_('No such notice.')); -- } -+ function no_such_notice() { -+ common_user_error(_('No such notice.')); -+ } -hunk ./actions/showstream.php 29 -- function handle($args) { -+ function handle($args) { -hunk ./actions/showstream.php 31 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/showstream.php 34 -- $nickname = common_canonical_nickname($nickname_arg); -+ $nickname = common_canonical_nickname($nickname_arg); -hunk ./actions/showstream.php 47 -- $user = User::staticGet('nickname', $nickname); -+ $user = User::staticGet('nickname', $nickname); -hunk ./actions/showstream.php 49 -- if (!$user) { -- $this->no_such_user(); -- return; -- } -+ if (!$user) { -+ $this->no_such_user(); -+ return; -+ } -hunk ./actions/showstream.php 54 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/showstream.php 56 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/showstream.php 61 -- # Looks like we're good; start output -+ # Looks like we're good; start output -hunk ./actions/showstream.php 63 -- # For YADIS discovery, we also have a tag -+ # For YADIS discovery, we also have a tag -hunk ./actions/showstream.php 65 -- header('X-XRDS-Location: '. common_local_url('xrds', array('nickname' => -- $user->nickname))); -+ header('X-XRDS-Location: '. common_local_url('xrds', array('nickname' => -+ $user->nickname))); -hunk ./actions/showstream.php 68 -- common_show_header($profile->nickname, -- array($this, 'show_header'), $user, -- array($this, 'show_top')); -+ common_show_header($profile->nickname, -+ array($this, 'show_header'), $user, -+ array($this, 'show_top')); -hunk ./actions/showstream.php 72 -- $this->show_profile($profile); -+ $this->show_profile($profile); -hunk ./actions/showstream.php 74 -- $this->show_notices($user); -+ $this->show_notices($user); -hunk ./actions/showstream.php 76 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/showstream.php 79 -- function show_top($user) { -- $cur = common_current_user(); -+ function show_top($user) { -+ $cur = common_current_user(); -hunk ./actions/showstream.php 82 -- if ($cur && $cur->id == $user->id) { -- common_notice_form('showstream'); -- } -+ if ($cur && $cur->id == $user->id) { -+ common_notice_form('showstream'); -+ } -hunk ./actions/showstream.php 86 -- $this->views_menu(); -+ $this->views_menu(); -hunk ./actions/showstream.php 88 -- $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('nickname' => $user->nickname)), -- 'type' => 'rss', -- 'version' => 'RSS 1.0', -- 'item' => 'notices'), -- 1=>array('href'=>common_local_url('usertimeline', array('nickname' => $user->nickname)), -- 'type' => 'atom', -- 'version' => 'Atom 1.0', -- 'item' => 'usertimeline'), -+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('userrss', array('nickname' => $user->nickname)), -+ 'type' => 'rss', -+ 'version' => 'RSS 1.0', -+ 'item' => 'notices'), -+ 1=>array('href'=>common_local_url('usertimeline', array('nickname' => $user->nickname)), -+ 'type' => 'atom', -+ 'version' => 'Atom 1.0', -+ 'item' => 'usertimeline'), -hunk ./actions/showstream.php 97 -- 2=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)), -- 'type' => 'rdf', -- 'version' => 'FOAF', -- 'item' => 'foaf'))); -- } -+ 2=>array('href'=>common_local_url('foaf',array('nickname' => $user->nickname)), -+ 'type' => 'rdf', -+ 'version' => 'FOAF', -+ 'item' => 'foaf'))); -+ } -hunk ./actions/showstream.php 103 -- function show_header($user) { -- # Feeds -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('api', -- array('apiaction' => 'statuses', -- 'method' => 'user_timeline.rss', -- 'argument' => $user->nickname)), -- 'type' => 'application/rss+xml', -- 'title' => sprintf(_('Notice feed for %s'), $user->nickname))); -- common_element('link', array('rel' => 'alternate feed', -- 'href' => common_local_url('api', -- array('apiaction' => 'statuses', -- 'method' => 'user_timeline.atom', -- 'argument' => $user->nickname)), -- 'type' => 'application/atom+xml', -- 'title' => sprintf(_('Notice feed for %s'), $user->nickname))); -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('userrss', array('nickname' => -- $user->nickname)), -- 'type' => 'application/rdf+xml', -- 'title' => sprintf(_('Notice feed for %s'), $user->nickname))); -- # FOAF -- common_element('link', array('rel' => 'meta', -- 'href' => common_local_url('foaf', array('nickname' => -- $user->nickname)), -- 'type' => 'application/rdf+xml', -- 'title' => 'FOAF')); -- # for remote subscriptions etc. -- common_element('meta', array('http-equiv' => 'X-XRDS-Location', -- 'content' => common_local_url('xrds', array('nickname' => -- $user->nickname)))); -- $profile = $user->getProfile(); -- if ($profile->bio) { -- common_element('meta', array('name' => 'description', -- 'content' => $profile->bio)); -- } -+ function show_header($user) { -+ # Feeds -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('api', -+ array('apiaction' => 'statuses', -+ 'method' => 'user_timeline.rss', -+ 'argument' => $user->nickname)), -+ 'type' => 'application/rss+xml', -+ 'title' => sprintf(_('Notice feed for %s'), $user->nickname))); -+ common_element('link', array('rel' => 'alternate feed', -+ 'href' => common_local_url('api', -+ array('apiaction' => 'statuses', -+ 'method' => 'user_timeline.atom', -+ 'argument' => $user->nickname)), -+ 'type' => 'application/atom+xml', -+ 'title' => sprintf(_('Notice feed for %s'), $user->nickname))); -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('userrss', array('nickname' => -+ $user->nickname)), -+ 'type' => 'application/rdf+xml', -+ 'title' => sprintf(_('Notice feed for %s'), $user->nickname))); -+ # FOAF -+ common_element('link', array('rel' => 'meta', -+ 'href' => common_local_url('foaf', array('nickname' => -+ $user->nickname)), -+ 'type' => 'application/rdf+xml', -+ 'title' => 'FOAF')); -+ # for remote subscriptions etc. -+ common_element('meta', array('http-equiv' => 'X-XRDS-Location', -+ 'content' => common_local_url('xrds', array('nickname' => -+ $user->nickname)))); -+ $profile = $user->getProfile(); -+ if ($profile->bio) { -+ common_element('meta', array('name' => 'description', -+ 'content' => $profile->bio)); -+ } -hunk ./actions/showstream.php 140 -- if ($user->emailmicroid && $user->email && $profile->profileurl) { -- common_element('meta', array('name' => 'microid', -- 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($profile->profileurl)))); -- } -- if ($user->jabbermicroid && $user->jabber && $profile->profileurl) { -- common_element('meta', array('name' => 'microid', -- 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($profile->profileurl)))); -- } -+ if ($user->emailmicroid && $user->email && $profile->profileurl) { -+ common_element('meta', array('name' => 'microid', -+ 'content' => "mailto+http:sha1:" . sha1(sha1('mailto:' . $user->email) . sha1($profile->profileurl)))); -+ } -+ if ($user->jabbermicroid && $user->jabber && $profile->profileurl) { -+ common_element('meta', array('name' => 'microid', -+ 'content' => "xmpp+http:sha1:" . sha1(sha1('xmpp:' . $user->jabber) . sha1($profile->profileurl)))); -+ } -hunk ./actions/showstream.php 149 -- # See https://wiki.mozilla.org/Microsummaries -+ # See https://wiki.mozilla.org/Microsummaries -hunk ./actions/showstream.php 151 -- common_element('link', array('rel' => 'microsummary', -- 'href' => common_local_url('microsummary', -- array('nickname' => $profile->nickname)))); -- } -+ common_element('link', array('rel' => 'microsummary', -+ 'href' => common_local_url('microsummary', -+ array('nickname' => $profile->nickname)))); -+ } -hunk ./actions/showstream.php 156 -- function no_such_user() { -- $this->client_error(_('No such user.'), 404); -- } -+ function no_such_user() { -+ $this->client_error(_('No such user.'), 404); -+ } -hunk ./actions/showstream.php 160 -- function show_profile($profile) { -+ function show_profile($profile) { -hunk ./actions/showstream.php 162 -- common_element_start('div', array('id' => 'profile', 'class' => 'vcard')); -+ common_element_start('div', array('id' => 'profile', 'class' => 'vcard')); -hunk ./actions/showstream.php 164 -- $this->show_personal($profile); -+ $this->show_personal($profile); -hunk ./actions/showstream.php 166 -- $this->show_last_notice($profile); -+ $this->show_last_notice($profile); -hunk ./actions/showstream.php 168 -- $cur = common_current_user(); -+ $cur = common_current_user(); -hunk ./actions/showstream.php 170 -- $this->show_subscriptions($profile); -+ $this->show_subscriptions($profile); -hunk ./actions/showstream.php 172 -- common_element_end('div'); -- } -+ common_element_end('div'); -+ } -hunk ./actions/showstream.php 175 -- function show_personal($profile) { -+ function show_personal($profile) { -hunk ./actions/showstream.php 177 -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -- common_element_start('div', array('id' => 'profile_avatar')); -- common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE), -- 'class' => 'avatar profile photo', -- 'width' => AVATAR_PROFILE_SIZE, -- 'height' => AVATAR_PROFILE_SIZE, -- 'alt' => $profile->nickname)); -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ common_element_start('div', array('id' => 'profile_avatar')); -+ common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE), -+ 'class' => 'avatar profile photo', -+ 'width' => AVATAR_PROFILE_SIZE, -+ 'height' => AVATAR_PROFILE_SIZE, -+ 'alt' => $profile->nickname)); -hunk ./actions/showstream.php 188 -- $cur = common_current_user(); -- if ($cur) { -- if ($cur->id != $profile->id) { -- if ($cur->isSubscribed($profile)) { -- common_unsubscribe_form($profile); -- } else { -- common_subscribe_form($profile); -- } -- } -- } else { -- $this->show_remote_subscribe_link($profile); -- } -+ $cur = common_current_user(); -+ if ($cur) { -+ if ($cur->id != $profile->id) { -+ if ($cur->isSubscribed($profile)) { -+ common_unsubscribe_form($profile); -+ } else { -+ common_subscribe_form($profile); -+ } -+ } -+ } else { -+ $this->show_remote_subscribe_link($profile); -+ } -hunk ./actions/showstream.php 202 -- $user = User::staticGet('id', $profile->id); -- common_profile_new_message_nudge($cur, $user, $profile); -+ $user = User::staticGet('id', $profile->id); -+ common_profile_new_message_nudge($cur, $user, $profile); -hunk ./actions/showstream.php 218 -- common_element_end('ul'); -+ common_element_end('ul'); -hunk ./actions/showstream.php 220 -- common_element_end('div'); -+ common_element_end('div'); -hunk ./actions/showstream.php 222 -- common_element_start('div', array('id' => 'profile_information')); -+ common_element_start('div', array('id' => 'profile_information')); -hunk ./actions/showstream.php 224 -- if ($profile->fullname) { -- common_element('h1', array('class' => 'fn'), $profile->fullname . ' (' . $profile->nickname . ')'); -- } else { -- common_element('h1', array('class' => 'fn nickname'), $profile->nickname); -- } -+ if ($profile->fullname) { -+ common_element('h1', array('class' => 'fn'), $profile->fullname . ' (' . $profile->nickname . ')'); -+ } else { -+ common_element('h1', array('class' => 'fn nickname'), $profile->nickname); -+ } -hunk ./actions/showstream.php 230 -- if ($profile->location) { -- common_element('p', 'location', $profile->location); -- } -- if ($profile->bio) { -- common_element('p', 'description note', $profile->bio); -- } -- if ($profile->homepage) { -- common_element_start('p', 'website'); -- common_element('a', array('href' => $profile->homepage, -- 'rel' => 'me', 'class' => 'url'), -- $profile->homepage); -- common_element_end('p'); -- } -+ if ($profile->location) { -+ common_element('p', 'location', $profile->location); -+ } -+ if ($profile->bio) { -+ common_element('p', 'description note', $profile->bio); -+ } -+ if ($profile->homepage) { -+ common_element_start('p', 'website'); -+ common_element('a', array('href' => $profile->homepage, -+ 'rel' => 'me', 'class' => 'url'), -+ $profile->homepage); -+ common_element_end('p'); -+ } -hunk ./actions/showstream.php 244 -- $this->show_statistics($profile); -+ $this->show_statistics($profile); -hunk ./actions/showstream.php 246 -- common_element_end('div'); -- } -+ common_element_end('div'); -+ } -hunk ./actions/showstream.php 249 -- function show_remote_subscribe_link($profile) { -- $url = common_local_url('remotesubscribe', -- array('nickname' => $profile->nickname)); -- common_element('a', array('href' => $url, -- 'id' => 'remotesubscribe'), -- _('Subscribe')); -- } -+ function show_remote_subscribe_link($profile) { -+ $url = common_local_url('remotesubscribe', -+ array('nickname' => $profile->nickname)); -+ common_element('a', array('href' => $url, -+ 'id' => 'remotesubscribe'), -+ _('Subscribe')); -+ } -hunk ./actions/showstream.php 257 -- function show_unsubscribe_form($profile) { -- common_element_start('form', array('id' => 'unsubscribe', 'method' => 'post', -- 'action' => common_local_url('unsubscribe'))); -- common_hidden('token', common_session_token()); -- common_element('input', array('id' => 'unsubscribeto', -- 'name' => 'unsubscribeto', -- 'type' => 'hidden', -- 'value' => $profile->nickname)); -- common_element('input', array('type' => 'submit', -- 'class' => 'submit', -- 'value' => _('Unsubscribe'))); -- common_element_end('form'); -- } -+ function show_unsubscribe_form($profile) { -+ common_element_start('form', array('id' => 'unsubscribe', 'method' => 'post', -+ 'action' => common_local_url('unsubscribe'))); -+ common_hidden('token', common_session_token()); -+ common_element('input', array('id' => 'unsubscribeto', -+ 'name' => 'unsubscribeto', -+ 'type' => 'hidden', -+ 'value' => $profile->nickname)); -+ common_element('input', array('type' => 'submit', -+ 'class' => 'submit', -+ 'value' => _('Unsubscribe'))); -+ common_element_end('form'); -+ } -hunk ./actions/showstream.php 271 -- function show_subscriptions($profile) { -- global $config; -+ function show_subscriptions($profile) { -+ global $config; -hunk ./actions/showstream.php 274 -- $subs = DB_DataObject::factory('subscription'); -- $subs->subscriber = $profile->id; -- $subs->whereAdd('subscribed != ' . $profile->id); -+ $subs = DB_DataObject::factory('subscription'); -+ $subs->subscriber = $profile->id; -+ $subs->whereAdd('subscribed != ' . $profile->id); -hunk ./actions/showstream.php 278 -- $subs->orderBy('created DESC'); -+ $subs->orderBy('created DESC'); -hunk ./actions/showstream.php 280 -- # We ask for an extra one to know if we need to do another page -+ # We ask for an extra one to know if we need to do another page -hunk ./actions/showstream.php 282 -- $subs->limit(0, SUBSCRIPTIONS + 1); -+ $subs->limit(0, SUBSCRIPTIONS + 1); -hunk ./actions/showstream.php 284 -- $subs_count = $subs->find(); -+ $subs_count = $subs->find(); -hunk ./actions/showstream.php 286 -- common_element_start('div', array('id' => 'subscriptions')); -+ common_element_start('div', array('id' => 'subscriptions')); -hunk ./actions/showstream.php 288 -- common_element('h2', NULL, _('Subscriptions')); -+ common_element('h2', NULL, _('Subscriptions')); -hunk ./actions/showstream.php 290 -- if ($subs_count > 0) { -+ if ($subs_count > 0) { -hunk ./actions/showstream.php 292 -- common_element_start('ul', array('id' => 'subscriptions_avatars')); -+ common_element_start('ul', array('id' => 'subscriptions_avatars')); -hunk ./actions/showstream.php 294 -- for ($i = 0; $i < min($subs_count, SUBSCRIPTIONS); $i++) { -+ for ($i = 0; $i < min($subs_count, SUBSCRIPTIONS); $i++) { -hunk ./actions/showstream.php 296 -- if (!$subs->fetch()) { -- common_debug('Weirdly, broke out of subscriptions loop early', __FILE__); -- break; -- } -+ if (!$subs->fetch()) { -+ common_debug('Weirdly, broke out of subscriptions loop early', __FILE__); -+ break; -+ } -hunk ./actions/showstream.php 301 -- $other = Profile::staticGet($subs->subscribed); -+ $other = Profile::staticGet($subs->subscribed); -hunk ./actions/showstream.php 303 -- if (!$other) { -- common_log_db_error($subs, 'SELECT', __FILE__); -- continue; -- } -+ if (!$other) { -+ common_log_db_error($subs, 'SELECT', __FILE__); -+ continue; -+ } -hunk ./actions/showstream.php 308 -- common_element_start('li', 'vcard'); -- common_element_start('a', array('title' => ($other->fullname) ? -- $other->fullname : -- $other->nickname, -- 'href' => $other->profileurl, -- 'rel' => 'contact', -- 'class' => 'subscription fn url')); -- $avatar = $other->getAvatar(AVATAR_MINI_SIZE); -- common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)), -- 'width' => AVATAR_MINI_SIZE, -- 'height' => AVATAR_MINI_SIZE, -- 'class' => 'avatar mini photo', -- 'alt' => ($other->fullname) ? -- $other->fullname : -- $other->nickname)); -- common_element_end('a'); -- common_element_end('li'); -- } -+ common_element_start('li', 'vcard'); -+ common_element_start('a', array('title' => ($other->fullname) ? -+ $other->fullname : -+ $other->nickname, -+ 'href' => $other->profileurl, -+ 'rel' => 'contact', -+ 'class' => 'subscription fn url')); -+ $avatar = $other->getAvatar(AVATAR_MINI_SIZE); -+ common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)), -+ 'width' => AVATAR_MINI_SIZE, -+ 'height' => AVATAR_MINI_SIZE, -+ 'class' => 'avatar mini photo', -+ 'alt' => ($other->fullname) ? -+ $other->fullname : -+ $other->nickname)); -+ common_element_end('a'); -+ common_element_end('li'); -+ } -hunk ./actions/showstream.php 327 -- common_element_end('ul'); -- } -+ common_element_end('ul'); -+ } -hunk ./actions/showstream.php 330 -- if ($subs_count > SUBSCRIPTIONS) { -- common_element_start('p', array('id' => 'subscriptions_viewall')); -+ if ($subs_count > SUBSCRIPTIONS) { -+ common_element_start('p', array('id' => 'subscriptions_viewall')); -hunk ./actions/showstream.php 333 -- common_element('a', array('href' => common_local_url('subscriptions', -- array('nickname' => $profile->nickname)), -- 'class' => 'moresubscriptions'), -- _('All subscriptions')); -- common_element_end('p'); -- } -+ common_element('a', array('href' => common_local_url('subscriptions', -+ array('nickname' => $profile->nickname)), -+ 'class' => 'moresubscriptions'), -+ _('All subscriptions')); -+ common_element_end('p'); -+ } -hunk ./actions/showstream.php 340 -- common_element_end('div'); -- } -+ common_element_end('div'); -+ } -hunk ./actions/showstream.php 343 -- function show_statistics($profile) { -+ function show_statistics($profile) { -hunk ./actions/showstream.php 345 -- // XXX: WORM cache this -- $subs = DB_DataObject::factory('subscription'); -- $subs->subscriber = $profile->id; -- $subs_count = (int) $subs->count() - 1; -+ // XXX: WORM cache this -+ $subs = DB_DataObject::factory('subscription'); -+ $subs->subscriber = $profile->id; -+ $subs_count = (int) $subs->count() - 1; -hunk ./actions/showstream.php 350 -- $subbed = DB_DataObject::factory('subscription'); -- $subbed->subscribed = $profile->id; -- $subbed_count = (int) $subbed->count() - 1; -+ $subbed = DB_DataObject::factory('subscription'); -+ $subbed->subscribed = $profile->id; -+ $subbed_count = (int) $subbed->count() - 1; -hunk ./actions/showstream.php 354 -- $notices = DB_DataObject::factory('notice'); -- $notices->profile_id = $profile->id; -- $notice_count = (int) $notices->count(); -+ $notices = DB_DataObject::factory('notice'); -+ $notices->profile_id = $profile->id; -+ $notice_count = (int) $notices->count(); -hunk ./actions/showstream.php 358 -- common_element_start('div', 'statistics'); -- common_element('h2', 'statistics', _('Statistics')); -+ common_element_start('div', 'statistics'); -+ common_element('h2', 'statistics', _('Statistics')); -hunk ./actions/showstream.php 361 -- # Other stats...? -- common_element_start('dl', 'statistics'); -- common_element('dt', 'membersince', _('Member since')); -- common_element('dd', 'membersince', date('j M Y', -- strtotime($profile->created))); -+ # Other stats...? -+ common_element_start('dl', 'statistics'); -+ common_element('dt', 'membersince', _('Member since')); -+ common_element('dd', 'membersince', date('j M Y', -+ strtotime($profile->created))); -hunk ./actions/showstream.php 367 -- common_element_start('dt', 'subscriptions'); -- common_element('a', array('href' => common_local_url('subscriptions', -- array('nickname' => $profile->nickname))), -- _('Subscriptions')); -- common_element_end('dt'); -- common_element('dd', 'subscriptions', (is_int($subs_count)) ? $subs_count : '0'); -- common_element_start('dt', 'subscribers'); -- common_element('a', array('href' => common_local_url('subscribers', -- array('nickname' => $profile->nickname))), -- _('Subscribers')); -- common_element_end('dt'); -- common_element('dd', 'subscribers', (is_int($subbed_count)) ? $subbed_count : '0'); -- common_element('dt', 'notices', _('Notices')); -- common_element('dd', 'notices', (is_int($notice_count)) ? $notice_count : '0'); -- # XXX: link these to something -- common_element('dt', 'tags', _('Tags')); -- common_element_start('dd', 'tags'); -- $tags = Profile_tag::getTags($profile->id, $profile->id); -+ common_element_start('dt', 'subscriptions'); -+ common_element('a', array('href' => common_local_url('subscriptions', -+ array('nickname' => $profile->nickname))), -+ _('Subscriptions')); -+ common_element_end('dt'); -+ common_element('dd', 'subscriptions', (is_int($subs_count)) ? $subs_count : '0'); -+ common_element_start('dt', 'subscribers'); -+ common_element('a', array('href' => common_local_url('subscribers', -+ array('nickname' => $profile->nickname))), -+ _('Subscribers')); -+ common_element_end('dt'); -+ common_element('dd', 'subscribers', (is_int($subbed_count)) ? $subbed_count : '0'); -+ common_element('dt', 'notices', _('Notices')); -+ common_element('dd', 'notices', (is_int($notice_count)) ? $notice_count : '0'); -+ # XXX: link these to something -+ common_element('dt', 'tags', _('Tags')); -+ common_element_start('dd', 'tags'); -+ $tags = Profile_tag::getTags($profile->id, $profile->id); -hunk ./actions/showstream.php 386 -- common_element_start('ul', 'tags xoxo'); -- foreach ($tags as $tag) { -- common_element_start('li'); -- common_element('a', array('rel' => 'bookmark tag', -- 'href' => common_local_url('peopletag', -- array('tag' => $tag))), -- $tag); -- common_element_end('li'); -- } -- common_element_end('ul'); -- common_element_end('dd'); -+ common_element_start('ul', 'tags xoxo'); -+ foreach ($tags as $tag) { -+ common_element_start('li'); -+ common_element('a', array('rel' => 'bookmark tag', -+ 'href' => common_local_url('peopletag', -+ array('tag' => $tag))), -+ $tag); -+ common_element_end('li'); -+ } -+ common_element_end('ul'); -+ common_element_end('dd'); -hunk ./actions/showstream.php 398 -- common_element_end('dl'); -+ common_element_end('dl'); -hunk ./actions/showstream.php 400 -- common_element_end('div'); -- } -+ common_element_end('div'); -+ } -hunk ./actions/showstream.php 403 -- function show_notices($user) { -+ function show_notices($user) { -hunk ./actions/showstream.php 405 -- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -hunk ./actions/showstream.php 407 -- $notice = $user->getNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -+ $notice = $user->getNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); -hunk ./actions/showstream.php 412 -- common_pagination($page>1, $cnt>NOTICES_PER_PAGE, $page, -- 'showstream', array('nickname' => $user->nickname)); -- } -+ common_pagination($page>1, $cnt>NOTICES_PER_PAGE, $page, -+ 'showstream', array('nickname' => $user->nickname)); -+ } -hunk ./actions/showstream.php 416 -- function show_last_notice($profile) { -+ function show_last_notice($profile) { -hunk ./actions/showstream.php 418 -- common_element('h2', NULL, _('Currently')); -+ common_element('h2', NULL, _('Currently')); -hunk ./actions/showstream.php 420 -- $notice = $profile->getCurrentNotice(); -+ $notice = $profile->getCurrentNotice(); -hunk ./actions/showstream.php 422 -- if ($notice) { -- # FIXME: URL, image, video, audio -- common_element_start('p', array('class' => 'notice_current')); -- if ($notice->rendered) { -- common_raw($notice->rendered); -- } else { -- # XXX: may be some uncooked notices in the DB, -- # we cook them right now. This can probably disappear in future -- # versions (>> 0.4.x) -- common_raw(common_render_content($notice->content, $notice)); -- } -- common_element_end('p'); -- } -- } -+ if ($notice) { -+ # FIXME: URL, image, video, audio -+ common_element_start('p', array('class' => 'notice_current')); -+ if ($notice->rendered) { -+ common_raw($notice->rendered); -+ } else { -+ # XXX: may be some uncooked notices in the DB, -+ # we cook them right now. This can probably disappear in future -+ # versions (>> 0.4.x) -+ common_raw(common_render_content($notice->content, $notice)); -+ } -+ common_element_end('p'); -+ } -+ } -hunk ./actions/smssettings.php 27 -- function get_instructions() { -- return _('You can receive SMS messages through email from %%site.name%%.'); -- } -+ function get_instructions() { -+ return _('You can receive SMS messages through email from %%site.name%%.'); -+ } -hunk ./actions/smssettings.php 31 -- function show_form($msg=NULL, $success=false) { -- $user = common_current_user(); -- $this->form_header(_('SMS Settings'), $msg, $success); -- common_element_start('form', array('method' => 'post', -- 'id' => 'smssettings', -- 'action' => -- common_local_url('smssettings'))); -- common_hidden('token', common_session_token()); -- common_element('h2', NULL, _('Address')); -+ function show_form($msg=NULL, $success=false) { -+ $user = common_current_user(); -+ $this->form_header(_('SMS Settings'), $msg, $success); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'smssettings', -+ 'action' => -+ common_local_url('smssettings'))); -+ common_hidden('token', common_session_token()); -+ common_element('h2', NULL, _('Address')); -hunk ./actions/smssettings.php 41 -- if ($user->sms) { -- common_element_start('p'); -- $carrier = $user->getCarrier(); -- common_element('span', 'address confirmed', $user->sms . ' (' . $carrier->name . ')'); -- common_element('span', 'input_instructions', -- _('Current confirmed SMS-enabled phone number.')); -- common_hidden('sms', $user->sms); -- common_hidden('carrier', $user->carrier); -- common_element_end('p'); -- common_submit('remove', _('Remove')); -- } else { -- $confirm = $this->get_confirmation(); -- if ($confirm) { -- $carrier = Sms_carrier::staticGet($confirm->address_extra); -- common_element_start('p'); -- common_element('span', 'address unconfirmed', $confirm->address . ' (' . $carrier->name . ')'); -- common_element('span', 'input_instructions', -- _('Awaiting confirmation on this phone number.')); -- common_hidden('sms', $confirm->address); -- common_hidden('carrier', $confirm->address_extra); -- common_element_end('p'); -- common_submit('cancel', _('Cancel')); -- common_input('code', _('Confirmation code'), NULL, -- _('Enter the code you received on your phone.')); -- common_submit('confirm', _('Confirm')); -- } else { -- common_input('sms', _('SMS Phone number'), -- ($this->arg('sms')) ? $this->arg('sms') : NULL, -- _('Phone number, no punctuation or spaces, with area code')); -- $this->carrier_select(); -- common_submit('add', _('Add')); -- } -- } -+ if ($user->sms) { -+ common_element_start('p'); -+ $carrier = $user->getCarrier(); -+ common_element('span', 'address confirmed', $user->sms . ' (' . $carrier->name . ')'); -+ common_element('span', 'input_instructions', -+ _('Current confirmed SMS-enabled phone number.')); -+ common_hidden('sms', $user->sms); -+ common_hidden('carrier', $user->carrier); -+ common_element_end('p'); -+ common_submit('remove', _('Remove')); -+ } else { -+ $confirm = $this->get_confirmation(); -+ if ($confirm) { -+ $carrier = Sms_carrier::staticGet($confirm->address_extra); -+ common_element_start('p'); -+ common_element('span', 'address unconfirmed', $confirm->address . ' (' . $carrier->name . ')'); -+ common_element('span', 'input_instructions', -+ _('Awaiting confirmation on this phone number.')); -+ common_hidden('sms', $confirm->address); -+ common_hidden('carrier', $confirm->address_extra); -+ common_element_end('p'); -+ common_submit('cancel', _('Cancel')); -+ common_input('code', _('Confirmation code'), NULL, -+ _('Enter the code you received on your phone.')); -+ common_submit('confirm', _('Confirm')); -+ } else { -+ common_input('sms', _('SMS Phone number'), -+ ($this->arg('sms')) ? $this->arg('sms') : NULL, -+ _('Phone number, no punctuation or spaces, with area code')); -+ $this->carrier_select(); -+ common_submit('add', _('Add')); -+ } -+ } -hunk ./actions/smssettings.php 75 -- if ($user->sms) { -- common_element('h2', NULL, _('Incoming email')); -- -- if ($user->incomingemail) { -- common_element_start('p'); -- common_element('span', 'address', $user->incomingemail); -- common_element('span', 'input_instructions', -- _('Send email to this address to post new notices.')); -- common_element_end('p'); -- common_submit('removeincoming', _('Remove')); -- } -- -- common_element_start('p'); -- common_element('span', 'input_instructions', -- _('Make a new email address for posting to; cancels the old one.')); -- common_element_end('p'); -- common_submit('newincoming', _('New')); -- } -- -- common_element('h2', NULL, _('Preferences')); -- -- common_checkbox('smsnotify', -- _('Send me notices through SMS; I understand I may incur exorbitant charges from my carrier.'), -- $user->smsnotify); -- -- common_submit('save', _('Save')); -- -- common_element_end('form'); -- common_show_footer(); -- } -+ if ($user->sms) { -+ common_element('h2', NULL, _('Incoming email')); -+ -+ if ($user->incomingemail) { -+ common_element_start('p'); -+ common_element('span', 'address', $user->incomingemail); -+ common_element('span', 'input_instructions', -+ _('Send email to this address to post new notices.')); -+ common_element_end('p'); -+ common_submit('removeincoming', _('Remove')); -+ } -+ -+ common_element_start('p'); -+ common_element('span', 'input_instructions', -+ _('Make a new email address for posting to; cancels the old one.')); -+ common_element_end('p'); -+ common_submit('newincoming', _('New')); -+ } -+ -+ common_element('h2', NULL, _('Preferences')); -+ -+ common_checkbox('smsnotify', -+ _('Send me notices through SMS; I understand I may incur exorbitant charges from my carrier.'), -+ $user->smsnotify); -+ -+ common_submit('save', _('Save')); -+ -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/smssettings.php 106 -- function get_confirmation() { -- $user = common_current_user(); -- $confirm = new Confirm_address(); -- $confirm->user_id = $user->id; -- $confirm->address_type = 'sms'; -- if ($confirm->find(TRUE)) { -- return $confirm; -- } else { -- return NULL; -- } -- } -+ function get_confirmation() { -+ $user = common_current_user(); -+ $confirm = new Confirm_address(); -+ $confirm->user_id = $user->id; -+ $confirm->address_type = 'sms'; -+ if ($confirm->find(TRUE)) { -+ return $confirm; -+ } else { -+ return NULL; -+ } -+ } -hunk ./actions/smssettings.php 118 -- function handle_post() { -+ function handle_post() { -hunk ./actions/smssettings.php 120 -- # CSRF protection -+ # CSRF protection -hunk ./actions/smssettings.php 122 -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/smssettings.php 128 -- if ($this->arg('save')) { -- $this->save_preferences(); -- } else if ($this->arg('add')) { -- $this->add_address(); -- } else if ($this->arg('cancel')) { -- $this->cancel_confirmation(); -- } else if ($this->arg('remove')) { -- $this->remove_address(); -- } else if ($this->arg('removeincoming')) { -- $this->remove_incoming(); -- } else if ($this->arg('newincoming')) { -- $this->new_incoming(); -- } else if ($this->arg('confirm')) { -- $this->confirm_code(); -- } else { -- $this->show_form(_('Unexpected form submission.')); -- } -- } -+ if ($this->arg('save')) { -+ $this->save_preferences(); -+ } else if ($this->arg('add')) { -+ $this->add_address(); -+ } else if ($this->arg('cancel')) { -+ $this->cancel_confirmation(); -+ } else if ($this->arg('remove')) { -+ $this->remove_address(); -+ } else if ($this->arg('removeincoming')) { -+ $this->remove_incoming(); -+ } else if ($this->arg('newincoming')) { -+ $this->new_incoming(); -+ } else if ($this->arg('confirm')) { -+ $this->confirm_code(); -+ } else { -+ $this->show_form(_('Unexpected form submission.')); -+ } -+ } -hunk ./actions/smssettings.php 147 -- function save_preferences() { -+ function save_preferences() { -hunk ./actions/smssettings.php 149 -- $smsnotify = $this->boolean('smsnotify'); -- -- $user = common_current_user(); -+ $smsnotify = $this->boolean('smsnotify'); -+ -+ $user = common_current_user(); -hunk ./actions/smssettings.php 153 -- assert(!is_null($user)); # should already be checked -+ assert(!is_null($user)); # should already be checked -hunk ./actions/smssettings.php 155 -- $user->query('BEGIN'); -+ $user->query('BEGIN'); -hunk ./actions/smssettings.php 157 -- $original = clone($user); -+ $original = clone($user); -hunk ./actions/smssettings.php 159 -- $user->smsnotify = $smsnotify; -+ $user->smsnotify = $smsnotify; -hunk ./actions/smssettings.php 161 -- $result = $user->update($original); -+ $result = $user->update($original); -hunk ./actions/smssettings.php 163 -- if ($result === FALSE) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } -hunk ./actions/smssettings.php 169 -- $user->query('COMMIT'); -+ $user->query('COMMIT'); -hunk ./actions/smssettings.php 171 -- $this->show_form(_('Preferences saved.'), true); -- } -+ $this->show_form(_('Preferences saved.'), true); -+ } -hunk ./actions/smssettings.php 174 -- function add_address() { -+ function add_address() { -hunk ./actions/smssettings.php 176 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/smssettings.php 178 -- $sms = $this->trimmed('sms'); -- $carrier_id = $this->trimmed('carrier'); -- -- # Some validation -+ $sms = $this->trimmed('sms'); -+ $carrier_id = $this->trimmed('carrier'); -+ -+ # Some validation -hunk ./actions/smssettings.php 183 -- if (!$sms) { -- $this->show_form(_('No phone number.')); -- return; -- } -+ if (!$sms) { -+ $this->show_form(_('No phone number.')); -+ return; -+ } -hunk ./actions/smssettings.php 188 -- if (!$carrier_id) { -- $this->show_form(_('No carrier selected.')); -- return; -- } -- -- $sms = common_canonical_sms($sms); -- -- if ($user->sms == $sms) { -- $this->show_form(_('That is already your phone number.')); -- return; -- } else if ($this->sms_exists($sms)) { -- $this->show_form(_('That phone number already belongs to another user.')); -- return; -- } -+ if (!$carrier_id) { -+ $this->show_form(_('No carrier selected.')); -+ return; -+ } -+ -+ $sms = common_canonical_sms($sms); -+ -+ if ($user->sms == $sms) { -+ $this->show_form(_('That is already your phone number.')); -+ return; -+ } else if ($this->sms_exists($sms)) { -+ $this->show_form(_('That phone number already belongs to another user.')); -+ return; -+ } -hunk ./actions/smssettings.php 203 -- $confirm = new Confirm_address(); -- $confirm->address = $sms; -- $confirm->address_extra = $carrier_id; -- $confirm->address_type = 'sms'; -- $confirm->user_id = $user->id; -- $confirm->code = common_confirmation_code(40); -+ $confirm = new Confirm_address(); -+ $confirm->address = $sms; -+ $confirm->address_extra = $carrier_id; -+ $confirm->address_type = 'sms'; -+ $confirm->user_id = $user->id; -+ $confirm->code = common_confirmation_code(40); -hunk ./actions/smssettings.php 210 -- $result = $confirm->insert(); -+ $result = $confirm->insert(); -hunk ./actions/smssettings.php 212 -- if ($result === FALSE) { -- common_log_db_error($confirm, 'INSERT', __FILE__); -- common_server_error(_('Couldn\'t insert confirmation code.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($confirm, 'INSERT', __FILE__); -+ common_server_error(_('Couldn\'t insert confirmation code.')); -+ return; -+ } -hunk ./actions/smssettings.php 218 -- $carrier = Sms_carrier::staticGet($carrier_id); -- -- mail_confirm_sms($confirm->code, -- $user->nickname, -- $carrier->toEmailAddress($sms)); -+ $carrier = Sms_carrier::staticGet($carrier_id); -+ -+ mail_confirm_sms($confirm->code, -+ $user->nickname, -+ $carrier->toEmailAddress($sms)); -hunk ./actions/smssettings.php 224 -- $msg = _('A confirmation code was sent to the phone number you added. Check your inbox (and spam box!) for the code and instructions on how to use it.'); -+ $msg = _('A confirmation code was sent to the phone number you added. Check your inbox (and spam box!) for the code and instructions on how to use it.'); -hunk ./actions/smssettings.php 226 -- $this->show_form($msg, TRUE); -- } -+ $this->show_form($msg, TRUE); -+ } -hunk ./actions/smssettings.php 229 -- function cancel_confirmation() { -- -- $sms = $this->trimmed('sms'); -- $carrier = $this->trimmed('carrier'); -- -- $confirm = $this->get_confirmation(); -- -- if (!$confirm) { -- $this->show_form(_('No pending confirmation to cancel.')); -- return; -- } -- if ($confirm->address != $sms) { -- $this->show_form(_('That is the wrong confirmation number.')); -- return; -- } -+ function cancel_confirmation() { -+ -+ $sms = $this->trimmed('sms'); -+ $carrier = $this->trimmed('carrier'); -+ -+ $confirm = $this->get_confirmation(); -+ -+ if (!$confirm) { -+ $this->show_form(_('No pending confirmation to cancel.')); -+ return; -+ } -+ if ($confirm->address != $sms) { -+ $this->show_form(_('That is the wrong confirmation number.')); -+ return; -+ } -hunk ./actions/smssettings.php 248 -- common_log_db_error($confirm, 'DELETE', __FILE__); -+ common_log_db_error($confirm, 'DELETE', __FILE__); -hunk ./actions/smssettings.php 254 -- } -+ } -hunk ./actions/smssettings.php 256 -- function remove_address() { -+ function remove_address() { -hunk ./actions/smssettings.php 258 -- $user = common_current_user(); -- $sms = $this->arg('sms'); -- $carrier = $this->arg('carrier'); -- -- # Maybe an old tab open...? -+ $user = common_current_user(); -+ $sms = $this->arg('sms'); -+ $carrier = $this->arg('carrier'); -+ -+ # Maybe an old tab open...? -hunk ./actions/smssettings.php 264 -- if ($user->sms != $sms) { -- $this->show_form(_('That is not your phone number.')); -- return; -- } -+ if ($user->sms != $sms) { -+ $this->show_form(_('That is not your phone number.')); -+ return; -+ } -hunk ./actions/smssettings.php 269 -- $user->query('BEGIN'); -- $original = clone($user); -- $user->sms = NULL; -- $user->carrier = NULL; -- $user->smsemail = NULL; -- $result = $user->updateKeys($original); -- if (!$result) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t update user.')); -- return; -- } -- $user->query('COMMIT'); -+ $user->query('BEGIN'); -+ $original = clone($user); -+ $user->sms = NULL; -+ $user->carrier = NULL; -+ $user->smsemail = NULL; -+ $result = $user->updateKeys($original); -+ if (!$result) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t update user.')); -+ return; -+ } -+ $user->query('COMMIT'); -hunk ./actions/smssettings.php 282 -- $this->show_form(_('The address was removed.'), TRUE); -- } -- -- function sms_exists($sms) { -- $user = common_current_user(); -- $other = User::staticGet('sms', $sms); -- if (!$other) { -- return false; -- } else { -- return $other->id != $user->id; -- } -- } -+ $this->show_form(_('The address was removed.'), TRUE); -+ } -+ -+ function sms_exists($sms) { -+ $user = common_current_user(); -+ $other = User::staticGet('sms', $sms); -+ if (!$other) { -+ return false; -+ } else { -+ return $other->id != $user->id; -+ } -+ } -hunk ./actions/smssettings.php 295 -- function carrier_select() { -- $carrier = new Sms_carrier(); -- $cnt = $carrier->find(); -+ function carrier_select() { -+ $carrier = new Sms_carrier(); -+ $cnt = $carrier->find(); -hunk ./actions/smssettings.php 299 -- common_element_start('p'); -- common_element('label', array('for' => 'carrier')); -- common_element_start('select', array('name' => 'carrier', -- 'id' => 'carrier')); -- common_element('option', array('value' => 0), -- _('Select a carrier')); -- while ($carrier->fetch()) { -- common_element('option', array('value' => $carrier->id), -- $carrier->name); -- } -- common_element_end('select'); -- common_element_end('p'); -- common_element('span', 'input_instructions', -- sprintf(_('Mobile carrier for your phone. '. -- 'If you know a carrier that accepts ' . -- 'SMS over email but isn\'t listed here, ' . -- 'send email to let us know at %s.'), -- common_config('site', 'email'))); -- } -+ common_element_start('p'); -+ common_element('label', array('for' => 'carrier')); -+ common_element_start('select', array('name' => 'carrier', -+ 'id' => 'carrier')); -+ common_element('option', array('value' => 0), -+ _('Select a carrier')); -+ while ($carrier->fetch()) { -+ common_element('option', array('value' => $carrier->id), -+ $carrier->name); -+ } -+ common_element_end('select'); -+ common_element_end('p'); -+ common_element('span', 'input_instructions', -+ sprintf(_('Mobile carrier for your phone. '. -+ 'If you know a carrier that accepts ' . -+ 'SMS over email but isn\'t listed here, ' . -+ 'send email to let us know at %s.'), -+ common_config('site', 'email'))); -+ } -hunk ./actions/smssettings.php 319 -- function confirm_code() { -- -- $code = $this->trimmed('code'); -- -- if (!$code) { -- $this->show_form(_('No code entered')); -- return; -- } -- -- common_redirect(common_local_url('confirmaddress', -- array('code' => $code))); -- } -+ function confirm_code() { -+ -+ $code = $this->trimmed('code'); -+ -+ if (!$code) { -+ $this->show_form(_('No code entered')); -+ return; -+ } -+ -+ common_redirect(common_local_url('confirmaddress', -+ array('code' => $code))); -+ } -hunk ./actions/subedit.php 35 -- $token = $this->trimmed('token'); -+ $token = $this->trimmed('token'); -hunk ./actions/subedit.php 37 -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/subscribe.php 24 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/subscribe.php 27 -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- return; -- } -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ return; -+ } -hunk ./actions/subscribe.php 32 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/subscribe.php 34 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname))); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname))); -+ return; -+ } -hunk ./actions/subscribe.php 39 -- # CSRF protection -+ # CSRF protection -hunk ./actions/subscribe.php 41 -- $token = $this->trimmed('token'); -+ $token = $this->trimmed('token'); -hunk ./actions/subscribe.php 43 -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/subscribe.php 48 -- $other_id = $this->arg('subscribeto'); -+ $other_id = $this->arg('subscribeto'); -hunk ./actions/subscribe.php 53 -- $this->client_error(_('Not a local user.')); -- return; -+ $this->client_error(_('Not a local user.')); -+ return; -hunk ./actions/subscribe.php 57 -- $result = subs_subscribe_to($user, $other); -+ $result = subs_subscribe_to($user, $other); -hunk ./actions/subscribe.php 59 -- if($result != true) { -- common_user_error($result); -- return; -- } -+ if($result != true) { -+ common_user_error($result); -+ return; -+ } -hunk ./actions/subscribe.php 64 -- if ($this->boolean('ajax')) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Subscribed')); -- common_element_end('head'); -- common_element_start('body'); -- common_unsubscribe_form($other->getProfile()); -- common_element_end('body'); -- common_element_end('html'); -- } else { -- common_redirect(common_local_url('subscriptions', array('nickname' => -- $user->nickname))); -+ if ($this->boolean('ajax')) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Subscribed')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_unsubscribe_form($other->getProfile()); -+ common_element_end('body'); -+ common_element_end('html'); -+ } else { -+ common_redirect(common_local_url('subscriptions', array('nickname' => -+ $user->nickname))); -hunk ./actions/subscribe.php 77 -- } -+ } -hunk ./actions/subscribers.php 26 -- function gallery_type() { -- return _('Subscribers'); -- } -+ function gallery_type() { -+ return _('Subscribers'); -+ } -hunk ./actions/subscribers.php 30 -- function get_instructions(&$profile) { -- $user =& common_current_user(); -- if ($user && ($user->id == $profile->id)) { -- return _('These are the people who listen to your notices.'); -- } else { -- return sprintf(_('These are the people who listen to %s\'s notices.'), $profile->nickname); -- } -- } -+ function get_instructions(&$profile) { -+ $user =& common_current_user(); -+ if ($user && ($user->id == $profile->id)) { -+ return _('These are the people who listen to your notices.'); -+ } else { -+ return sprintf(_('These are the people who listen to %s\'s notices.'), $profile->nickname); -+ } -+ } -hunk ./actions/subscribers.php 39 -- function fields() { -- return array('subscriber', 'subscribed'); -- } -+ function fields() { -+ return array('subscriber', 'subscribed'); -+ } -hunk ./actions/subscribers.php 43 -- function div_class() { -- return 'subscribers'; -- } -+ function div_class() { -+ return 'subscribers'; -+ } -hunk ./actions/subscribers.php 47 -- function get_other(&$subs) { -- return $subs->subscriber; -- } -+ function get_other(&$subs) { -+ return $subs->subscriber; -+ } -hunk ./actions/subscriptions.php 26 -- function gallery_type() { -- return _('Subscriptions'); -- } -+ function gallery_type() { -+ return _('Subscriptions'); -+ } -hunk ./actions/subscriptions.php 30 -- function get_instructions(&$profile) { -- $user =& common_current_user(); -- if ($user && ($user->id == $profile->id)) { -- return _('These are the people whose notices you listen to.'); -- } else { -- return sprintf(_('These are the people whose notices %s listens to.'), $profile->nickname); -- } -- } -+ function get_instructions(&$profile) { -+ $user =& common_current_user(); -+ if ($user && ($user->id == $profile->id)) { -+ return _('These are the people whose notices you listen to.'); -+ } else { -+ return sprintf(_('These are the people whose notices %s listens to.'), $profile->nickname); -+ } -+ } -hunk ./actions/subscriptions.php 39 -- function fields() { -- return array('subscribed', 'subscriber'); -- } -+ function fields() { -+ return array('subscribed', 'subscriber'); -+ } -hunk ./actions/subscriptions.php 43 -- function div_class() { -- return 'subscriptions'; -- } -+ function div_class() { -+ return 'subscriptions'; -+ } -hunk ./actions/subscriptions.php 47 -- function get_other(&$subs) { -- return $subs->subscribed; -- } -+ function get_other(&$subs) { -+ return $subs->subscribed; -+ } -hunk ./actions/subscriptions.php 60 -- $sub = Subscription::pkeyGet(array('subscriber' => $this->owner->id, -- 'subscribed' => $profile->id)); -+ $sub = Subscription::pkeyGet(array('subscriber' => $this->owner->id, -+ 'subscribed' => $profile->id)); -hunk ./actions/sup.php 23 -- -- function handle($args) { -- -- parent::handle($args); -- -- $seconds = $this->trimmed('seconds'); -- -- if (!$seconds) { -- $seconds = 15; -- } -+ -+ function handle($args) { -+ -+ parent::handle($args); -+ -+ $seconds = $this->trimmed('seconds'); -+ -+ if (!$seconds) { -+ $seconds = 15; -+ } -hunk ./actions/sup.php 34 -- $updates = $this->get_updates($seconds); -- -- header('Content-Type: application/json; charset=utf-8'); -- -- print json_encode(array('updated_time' => date('c'), -- 'since_time' => date('c', time() - $seconds), -- 'available_periods' => $this->available_periods(), -- 'period' => $seconds, -- 'updates' => $updates)); -- } -- -- function available_periods() { -- static $periods = array(86400, 43200, 21600, 7200, -- 3600, 1800, 600, 300, 120, -- 60, 30, 15); -- $available = array(); -- foreach ($periods as $period) { -- $available[$period] = common_local_url('sup', -- array('seconds' => $period)); -- } -- -- return $available; -- } -- -- function get_updates($seconds) { -- $notice = new Notice(); -+ $updates = $this->get_updates($seconds); -+ -+ header('Content-Type: application/json; charset=utf-8'); -+ -+ print json_encode(array('updated_time' => date('c'), -+ 'since_time' => date('c', time() - $seconds), -+ 'available_periods' => $this->available_periods(), -+ 'period' => $seconds, -+ 'updates' => $updates)); -+ } -+ -+ function available_periods() { -+ static $periods = array(86400, 43200, 21600, 7200, -+ 3600, 1800, 600, 300, 120, -+ 60, 30, 15); -+ $available = array(); -+ foreach ($periods as $period) { -+ $available[$period] = common_local_url('sup', -+ array('seconds' => $period)); -+ } -+ -+ return $available; -+ } -+ -+ function get_updates($seconds) { -+ $notice = new Notice(); -hunk ./actions/sup.php 61 -- # XXX: cache this. Depends on how big this protocol becomes; -- # Re-doing this query every 15 seconds isn't the end of the world. -+ # XXX: cache this. Depends on how big this protocol becomes; -+ # Re-doing this query every 15 seconds isn't the end of the world. -hunk ./actions/sup.php 64 -- $notice->query('SELECT profile_id, max(id) AS max_id ' . -- 'FROM notice ' . -- 'WHERE created > (now() - ' . $seconds . ') ' . -- 'GROUP BY profile_id'); -- -- $updates = array(); -- -- while ($notice->fetch()) { -- $updates[] = array($notice->profile_id, $notice->max_id); -- } -- -- return $updates; -- } -- -- function is_readonly() { -- return true; -- } -+ $notice->query('SELECT profile_id, max(id) AS max_id ' . -+ 'FROM notice ' . -+ 'WHERE created > (now() - ' . $seconds . ') ' . -+ 'GROUP BY profile_id'); -+ -+ $updates = array(); -+ -+ while ($notice->fetch()) { -+ $updates[] = array($notice->profile_id, $notice->max_id); -+ } -+ -+ return $updates; -+ } -+ -+ function is_readonly() { -+ return true; -+ } -hunk ./actions/tag.php 27 -- function handle($args) { -+ function handle($args) { -hunk ./actions/tag.php 29 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/tag.php 31 -- # Looks like we're good; show the header -+ # Looks like we're good; show the header -hunk ./actions/tag.php 33 -- if (isset($args['tag']) && $args['tag']) { -- $tag = $args['tag']; -- common_show_header(sprintf(_("Notices tagged with %s"), $tag), -- array($this, 'show_header'), $tag, -- array($this, 'show_top')); -- $this->show_notices($tag); -- } else { -- common_show_header(_("Tags"), -- array($this, 'show_header'), '', -- array($this, 'show_top')); -- $this->show_tags(); -- } -+ if (isset($args['tag']) && $args['tag']) { -+ $tag = $args['tag']; -+ common_show_header(sprintf(_("Notices tagged with %s"), $tag), -+ array($this, 'show_header'), $tag, -+ array($this, 'show_top')); -+ $this->show_notices($tag); -+ } else { -+ common_show_header(_("Tags"), -+ array($this, 'show_header'), '', -+ array($this, 'show_top')); -+ $this->show_tags(); -+ } -hunk ./actions/tag.php 46 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/tag.php 49 -- function show_header($tag = false) { -- if ($tag) { -- common_element('link', array('rel' => 'alternate', -- 'href' => common_local_url('tagrss', array('tag' => $tag)), -- 'type' => 'application/rss+xml', -- 'title' => sprintf(_('Feed for tag %s'), $tag))); -- } -- } -+ function show_header($tag = false) { -+ if ($tag) { -+ common_element('link', array('rel' => 'alternate', -+ 'href' => common_local_url('tagrss', array('tag' => $tag)), -+ 'type' => 'application/rss+xml', -+ 'title' => sprintf(_('Feed for tag %s'), $tag))); -+ } -+ } -hunk ./actions/tag.php 58 -- function get_instructions() { -- return _('Showing most popular tags from the last week'); -- } -+ function get_instructions() { -+ return _('Showing most popular tags from the last week'); -+ } -hunk ./actions/tag.php 62 -- function show_top($tag = false) { -- if (!$tag) { -- $instr = $this->get_instructions(); -- $output = common_markup_to_html($instr); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- $this->public_views_menu(); -- } -- else { -- $this->show_feeds_list(array(0=>array('href'=>common_local_url('tagrss'), -- 'type' => 'rss', -- 'version' => 'RSS 1.0', -- 'item' => 'tagrss'))); -- } -- } -+ function show_top($tag = false) { -+ if (!$tag) { -+ $instr = $this->get_instructions(); -+ $output = common_markup_to_html($instr); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ $this->public_views_menu(); -+ } -+ else { -+ $this->show_feeds_list(array(0=>array('href'=>common_local_url('tagrss'), -+ 'type' => 'rss', -+ 'version' => 'RSS 1.0', -+ 'item' => 'tagrss'))); -+ } -+ } -hunk ./actions/tag.php 79 -- function show_tags() -- { -- # This should probably be cached rather than recalculated -- $tags = DB_DataObject::factory('Notice_tag'); -+ function show_tags() -+ { -+ # This should probably be cached rather than recalculated -+ $tags = DB_DataObject::factory('Notice_tag'); -hunk ./actions/tag.php 84 -- #Need to clear the selection and then only re-add the field -- #we are grouping by, otherwise it's not a valid 'group by' -- #even though MySQL seems to let it slide... -- $tags->selectAdd(); -- $tags->selectAdd('tag'); -+ #Need to clear the selection and then only re-add the field -+ #we are grouping by, otherwise it's not a valid 'group by' -+ #even though MySQL seems to let it slide... -+ $tags->selectAdd(); -+ $tags->selectAdd('tag'); -hunk ./actions/tag.php 90 -- #Add the aggregated columns... -- $tags->selectAdd('max(notice_id) as last_notice_id'); -- if(common_config('db','type')=='pgsql') { -- $calc='sum(exp(-extract(epoch from (now()-created))/%s)) as weight'; -- } else { -- $calc='sum(exp(-(now() - created)/%s)) as weight'; -- } -- $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff'))); -- $tags->groupBy('tag'); -- $tags->orderBy('weight DESC'); -+ #Add the aggregated columns... -+ $tags->selectAdd('max(notice_id) as last_notice_id'); -+ if(common_config('db','type')=='pgsql') { -+ $calc='sum(exp(-extract(epoch from (now()-created))/%s)) as weight'; -+ } else { -+ $calc='sum(exp(-(now() - created)/%s)) as weight'; -+ } -+ $tags->selectAdd(sprintf($calc, common_config('tag', 'dropoff'))); -+ $tags->groupBy('tag'); -+ $tags->orderBy('weight DESC'); -hunk ./actions/tag.php 101 -- # $tags->whereAdd('created > "' . strftime('%Y-%m-%d %H:%M:%S', strtotime('-1 MONTH')) . '"'); -+ # $tags->whereAdd('created > "' . strftime('%Y-%m-%d %H:%M:%S', strtotime('-1 MONTH')) . '"'); -hunk ./actions/tag.php 103 -- $tags->limit(TAGS_PER_PAGE); -+ $tags->limit(TAGS_PER_PAGE); -hunk ./actions/tag.php 105 -- $cnt = $tags->find(); -+ $cnt = $tags->find(); -hunk ./actions/tag.php 107 -- if ($cnt > 0) { -- common_element_start('p', 'tagcloud'); -+ if ($cnt > 0) { -+ common_element_start('p', 'tagcloud'); -hunk ./actions/tag.php 110 -- $tw = array(); -- $sum = 0; -- while ($tags->fetch()) { -- $tw[$tags->tag] = $tags->weight; -- $sum += $tags->weight; -- } -+ $tw = array(); -+ $sum = 0; -+ while ($tags->fetch()) { -+ $tw[$tags->tag] = $tags->weight; -+ $sum += $tags->weight; -+ } -hunk ./actions/tag.php 117 -- ksort($tw); -+ ksort($tw); -hunk ./actions/tag.php 119 -- foreach ($tw as $tag => $weight) { -- $this->show_tag($tag, $weight, $weight/$sum); -- } -+ foreach ($tw as $tag => $weight) { -+ $this->show_tag($tag, $weight, $weight/$sum); -+ } -hunk ./actions/tag.php 123 -- common_element_end('p'); -- } -- } -+ common_element_end('p'); -+ } -+ } -hunk ./actions/tag.php 127 -- function show_tag($tag, $weight, $relative) { -+ function show_tag($tag, $weight, $relative) { -hunk ./actions/tag.php 129 -- # XXX: these should probably tune to the size of the site -- if ($relative > 0.1) { -- $cls = 'largest'; -- } else if ($relative > 0.05) { -- $cls = 'verylarge'; -- } else if ($relative > 0.02) { -- $cls = 'large'; -- } else if ($relative > 0.01) { -- $cls = 'medium'; -- } else if ($relative > 0.005) { -- $cls = 'small'; -- } else if ($relative > 0.002) { -- $cls = 'verysmall'; -- } else { -- $cls = 'smallest'; -- } -+ # XXX: these should probably tune to the size of the site -+ if ($relative > 0.1) { -+ $cls = 'largest'; -+ } else if ($relative > 0.05) { -+ $cls = 'verylarge'; -+ } else if ($relative > 0.02) { -+ $cls = 'large'; -+ } else if ($relative > 0.01) { -+ $cls = 'medium'; -+ } else if ($relative > 0.005) { -+ $cls = 'small'; -+ } else if ($relative > 0.002) { -+ $cls = 'verysmall'; -+ } else { -+ $cls = 'smallest'; -+ } -hunk ./actions/tag.php 146 -- common_element('a', array('class' => "$cls weight-$weight relative-$relative", -- 'href' => common_local_url('tag', array('tag' => $tag))), -- $tag); -- common_text(' '); -- } -+ common_element('a', array('class' => "$cls weight-$weight relative-$relative", -+ 'href' => common_local_url('tag', array('tag' => $tag))), -+ $tag); -+ common_text(' '); -+ } -hunk ./actions/tag.php 152 -- function show_notices($tag) { -+ function show_notices($tag) { -hunk ./actions/tag.php 154 -- $cnt = 0; -+ $cnt = 0; -hunk ./actions/tag.php 156 -- $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -+ $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; -hunk ./actions/tag.php 158 -- $notice = Notice_tag::getStream($tag, (($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1); -+ $notice = Notice_tag::getStream($tag, (($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1); -hunk ./actions/tag.php 162 -- common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -- $page, 'tag', array('tag' => $tag)); -- } -+ common_pagination($page > 1, $cnt > NOTICES_PER_PAGE, -+ $page, 'tag', array('tag' => $tag)); -+ } -hunk ./actions/tagother.php 26 -- function handle($args) { -+ function handle($args) { -hunk ./actions/tagother.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/tagother.php 30 -- if (!common_logged_in()) { -- $this->client_error(_('Not logged in'), 403); -- return; -- } -+ if (!common_logged_in()) { -+ $this->client_error(_('Not logged in'), 403); -+ return; -+ } -hunk ./actions/tagother.php 35 -- if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- $this->save_tags(); -- } else { -- $id = $this->trimmed('id'); -- if (!$id) { -- $this->client_error(_('No id argument.')); -- return; -- } -- $profile = Profile::staticGet('id', $id); -- if (!$profile) { -- $this->client_error(_('No profile with that ID.')); -- return; -- } -- $this->show_form($profile); -- } -- } -+ if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ $this->save_tags(); -+ } else { -+ $id = $this->trimmed('id'); -+ if (!$id) { -+ $this->client_error(_('No id argument.')); -+ return; -+ } -+ $profile = Profile::staticGet('id', $id); -+ if (!$profile) { -+ $this->client_error(_('No profile with that ID.')); -+ return; -+ } -+ $this->show_form($profile); -+ } -+ } -hunk ./actions/tagother.php 52 -- function show_form($profile, $error=NULL) { -+ function show_form($profile, $error=NULL) { -hunk ./actions/tagother.php 54 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/tagother.php 56 -- common_show_header(_('Tag a person'), -- NULL, array($profile, $error), array($this, 'show_top')); -+ common_show_header(_('Tag a person'), -+ NULL, array($profile, $error), array($this, 'show_top')); -hunk ./actions/tagother.php 59 -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -hunk ./actions/tagother.php 61 -- common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE), -- 'class' => 'avatar stream', -- 'width' => AVATAR_PROFILE_SIZE, -- 'height' => AVATAR_PROFILE_SIZE, -- 'alt' => -- ($profile->fullname) ? $profile->fullname : -- $profile->nickname)); -+ common_element('img', array('src' => ($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_PROFILE_SIZE), -+ 'class' => 'avatar stream', -+ 'width' => AVATAR_PROFILE_SIZE, -+ 'height' => AVATAR_PROFILE_SIZE, -+ 'alt' => -+ ($profile->fullname) ? $profile->fullname : -+ $profile->nickname)); -hunk ./actions/tagother.php 69 -- common_element('a', array('href' => $profile->profileurl, -- 'class' => 'external profile nickname'), -- $profile->nickname); -+ common_element('a', array('href' => $profile->profileurl, -+ 'class' => 'external profile nickname'), -+ $profile->nickname); -hunk ./actions/tagother.php 73 -- if ($profile->fullname) { -- common_element_start('div', 'fullname'); -- if ($profile->homepage) { -- common_element('a', array('href' => $profile->homepage), -- $profile->fullname); -- } else { -- common_text($profile->fullname); -- } -- common_element_end('div'); -- } -- if ($profile->location) { -- common_element('div', 'location', $profile->location); -- } -- if ($profile->bio) { -- common_element('div', 'bio', $profile->bio); -- } -+ if ($profile->fullname) { -+ common_element_start('div', 'fullname'); -+ if ($profile->homepage) { -+ common_element('a', array('href' => $profile->homepage), -+ $profile->fullname); -+ } else { -+ common_text($profile->fullname); -+ } -+ common_element_end('div'); -+ } -+ if ($profile->location) { -+ common_element('div', 'location', $profile->location); -+ } -+ if ($profile->bio) { -+ common_element('div', 'bio', $profile->bio); -+ } -hunk ./actions/tagother.php 90 -- common_element_start('form', array('method' => 'post', -- 'id' => 'tag_user', -- 'name' => 'tagother', -- 'action' => $this->self_url())); -- common_hidden('token', common_session_token()); -- common_hidden('id', $profile->id); -- common_input('tags', _('Tags'), -- ($this->arg('tags')) ? $this->arg('tags') : implode(' ', Profile_tag::getTags($user->id, $profile->id)), -- _('Tags for this user (letters, numbers, -, ., and _), comma- or space- separated')); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'tag_user', -+ 'name' => 'tagother', -+ 'action' => $this->self_url())); -+ common_hidden('token', common_session_token()); -+ common_hidden('id', $profile->id); -+ common_input('tags', _('Tags'), -+ ($this->arg('tags')) ? $this->arg('tags') : implode(' ', Profile_tag::getTags($user->id, $profile->id)), -+ _('Tags for this user (letters, numbers, -, ., and _), comma- or space- separated')); -hunk ./actions/tagother.php 100 -- common_submit('save', _('Save')); -- common_element_end('form'); -- common_show_footer(); -+ common_submit('save', _('Save')); -+ common_element_end('form'); -+ common_show_footer(); -hunk ./actions/tagother.php 104 -- } -+ } -hunk ./actions/tagother.php 106 -- function save_tags() { -+ function save_tags() { -hunk ./actions/tagother.php 108 -- $id = $this->trimmed('id'); -- $tagstring = $this->trimmed('tags'); -- $token = $this->trimmed('token'); -+ $id = $this->trimmed('id'); -+ $tagstring = $this->trimmed('tags'); -+ $token = $this->trimmed('token'); -hunk ./actions/tagother.php 112 -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/tagother.php 117 -- $profile = Profile::staticGet('id', $id); -+ $profile = Profile::staticGet('id', $id); -hunk ./actions/tagother.php 119 -- if (!$profile) { -- $this->client_error(_('No such profile.')); -- return; -- } -+ if (!$profile) { -+ $this->client_error(_('No such profile.')); -+ return; -+ } -hunk ./actions/tagother.php 124 -- if (is_string($tagstring) && strlen($tagstring) > 0) { -+ if (is_string($tagstring) && strlen($tagstring) > 0) { -hunk ./actions/tagother.php 126 -- $tags = array_map('common_canonical_tag', -- preg_split('/[\s,]+/', $tagstring)); -+ $tags = array_map('common_canonical_tag', -+ preg_split('/[\s,]+/', $tagstring)); -hunk ./actions/tagother.php 129 -- foreach ($tags as $tag) { -- if (!common_valid_profile_tag($tag)) { -- $this->show_form($profile, sprintf(_('Invalid tag: "%s"'), $tag)); -- return; -- } -- } -- } else { -- $tags = array(); -- } -+ foreach ($tags as $tag) { -+ if (!common_valid_profile_tag($tag)) { -+ $this->show_form($profile, sprintf(_('Invalid tag: "%s"'), $tag)); -+ return; -+ } -+ } -+ } else { -+ $tags = array(); -+ } -hunk ./actions/tagother.php 139 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/tagother.php 141 -- if (!Subscription::pkeyGet(array('subscriber' => $user->id, -- 'subscribed' => $profile->id)) && -- !Subscription::pkeyGet(array('subscriber' => $profile->id, -- 'subscribed' => $user->id))) -- { -- $this->client_error(_('You can only tag people you are subscribed to or who are subscribed to you.')); -- return; -- } -+ if (!Subscription::pkeyGet(array('subscriber' => $user->id, -+ 'subscribed' => $profile->id)) && -+ !Subscription::pkeyGet(array('subscriber' => $profile->id, -+ 'subscribed' => $user->id))) -+ { -+ $this->client_error(_('You can only tag people you are subscribed to or who are subscribed to you.')); -+ return; -+ } -hunk ./actions/tagother.php 150 -- $result = Profile_tag::setTags($user->id, $profile->id, $tags); -+ $result = Profile_tag::setTags($user->id, $profile->id, $tags); -hunk ./actions/tagother.php 152 -- if (!$result) { -- $this->client_error(_('Could not save tags.')); -- return; -- } -+ if (!$result) { -+ $this->client_error(_('Could not save tags.')); -+ return; -+ } -hunk ./actions/tagother.php 157 -- $action = $user->isSubscribed($profile) ? 'subscriptions' : 'subscribers'; -+ $action = $user->isSubscribed($profile) ? 'subscriptions' : 'subscribers'; -hunk ./actions/tagother.php 159 -- if ($this->boolean('ajax')) { -- common_start_html('text/xml'); -- common_element_start('head'); -- common_element('title', null, _('Tags')); -- common_element_end('head'); -- common_element_start('body'); -- common_element_start('p', 'subtags'); -- foreach ($tags as $tag) { -- common_element('a', array('href' => common_local_url($action, -- array('nickname' => $user->nickname, -- 'tag' => $tag))), -- $tag); -- } -- common_element_end('p'); -- common_element_end('body'); -- common_element_end('html'); -- } else { -- common_redirect(common_local_url($action, array('nickname' => -- $user->nickname))); -+ if ($this->boolean('ajax')) { -+ common_start_html('text/xml'); -+ common_element_start('head'); -+ common_element('title', null, _('Tags')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_element_start('p', 'subtags'); -+ foreach ($tags as $tag) { -+ common_element('a', array('href' => common_local_url($action, -+ array('nickname' => $user->nickname, -+ 'tag' => $tag))), -+ $tag); -+ } -+ common_element_end('p'); -+ common_element_end('body'); -+ common_element_end('html'); -+ } else { -+ common_redirect(common_local_url($action, array('nickname' => -+ $user->nickname))); -hunk ./actions/tagother.php 179 -- } -+ } -hunk ./actions/tagother.php 181 -- function show_top($arr = NULL) { -- list($profile, $error) = $arr; -- if ($error) { -- common_element('p', 'error', $error); -- } else { -- common_element_start('div', 'instructions'); -- common_element('p', NULL, -- _('Use this form to add tags to your subscribers or subscriptions.')); -- common_element_end('div'); -- } -- } -+ function show_top($arr = NULL) { -+ list($profile, $error) = $arr; -+ if ($error) { -+ common_element('p', 'error', $error); -+ } else { -+ common_element_start('div', 'instructions'); -+ common_element('p', NULL, -+ _('Use this form to add tags to your subscribers or subscriptions.')); -+ common_element_end('div'); -+ } -+ } -hunk ./actions/tagrss.php 28 -- function init() { -- $tag = $this->trimmed('tag'); -- $this->tag = Notice_tag::staticGet('tag', $tag); -+ function init() { -+ $tag = $this->trimmed('tag'); -+ $this->tag = Notice_tag::staticGet('tag', $tag); -hunk ./actions/tagrss.php 32 -- if (!$this->tag) { -- common_user_error(_('No such tag.')); -- return false; -- } else { -- return true; -- } -- } -+ if (!$this->tag) { -+ common_user_error(_('No such tag.')); -+ return false; -+ } else { -+ return true; -+ } -+ } -hunk ./actions/tagrss.php 40 -- function get_notices($limit=0) { -- $tag = $this->tag; -+ function get_notices($limit=0) { -+ $tag = $this->tag; -hunk ./actions/tagrss.php 43 -- if (is_null($tag)) { -- return NULL; -- } -+ if (is_null($tag)) { -+ return NULL; -+ } -hunk ./actions/tagrss.php 47 -- $notice = Notice_tag::getStream($tag->tag, 0, ($limit == 0) ? NOTICES_PER_PAGE : $limit); -+ $notice = Notice_tag::getStream($tag->tag, 0, ($limit == 0) ? NOTICES_PER_PAGE : $limit); -hunk ./actions/tagrss.php 49 -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./actions/tagrss.php 53 -- return $notices; -- } -+ return $notices; -+ } -hunk ./actions/tagrss.php 56 -- function get_channel() { -- $tag = $this->tag->tag; -+ function get_channel() { -+ $tag = $this->tag->tag; -hunk ./actions/tagrss.php 59 -- $c = array('url' => common_local_url('tagrss', array('tag' => $tagname)), -- 'title' => $tagname, -- 'link' => common_local_url('tagrss', array('tag' => $tagname)), -- 'description' => sprintf(_('Microblog tagged with %s'), $tagname)); -- return $c; -- } -+ $c = array('url' => common_local_url('tagrss', array('tag' => $tagname)), -+ 'title' => $tagname, -+ 'link' => common_local_url('tagrss', array('tag' => $tagname)), -+ 'description' => sprintf(_('Microblog tagged with %s'), $tagname)); -+ return $c; -+ } -hunk ./actions/twitapiaccount.php 26 -- function verify_credentials($args, $apidata) { -- parent::handle($args); -+ function verify_credentials($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapiaccount.php 29 -- if (!in_array($apidata['content-type'], array('xml', 'json'))) { -- common_user_error(_('API method not found!'), $code = 404); -- return; -- } -+ if (!in_array($apidata['content-type'], array('xml', 'json'))) { -+ common_user_error(_('API method not found!'), $code = 404); -+ return; -+ } -hunk ./actions/twitapiaccount.php 34 -- $this->show_extended_profile($apidata['user'], $apidata); -- } -+ $this->show_extended_profile($apidata['user'], $apidata); -+ } -hunk ./actions/twitapiaccount.php 37 -- function end_session($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function end_session($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapiaccount.php 42 -- function update_location($args, $apidata) { -- parent::handle($args); -+ function update_location($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapiaccount.php 45 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapiaccount.php 50 -- $location = trim($this->arg('location')); -+ $location = trim($this->arg('location')); -hunk ./actions/twitapiaccount.php 52 -- if (!is_null($location) && strlen($location) > 255) { -+ if (!is_null($location) && strlen($location) > 255) { -hunk ./actions/twitapiaccount.php 54 -- // XXX: But Twitter just truncates and runs with it. -- Zach -- $this->client_error(_('That\'s too long. Max notice size is 255 chars.'), 406, $apidate['content-type']); -- return; -- } -+ // XXX: But Twitter just truncates and runs with it. -- Zach -+ $this->client_error(_('That\'s too long. Max notice size is 255 chars.'), 406, $apidate['content-type']); -+ return; -+ } -hunk ./actions/twitapiaccount.php 59 -- $user = $apidata['user']; -- $profile = $user->getProfile(); -+ $user = $apidata['user']; -+ $profile = $user->getProfile(); -hunk ./actions/twitapiaccount.php 62 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/twitapiaccount.php 67 -- $orig_profile = clone($profile); -- $profile->location = $location; -+ $orig_profile = clone($profile); -+ $profile->location = $location; -hunk ./actions/twitapiaccount.php 70 -- $result = $profile->update($orig_profile); -+ $result = $profile->update($orig_profile); -hunk ./actions/twitapiaccount.php 72 -- if (!$result) { -- common_log_db_error($profile, 'UPDATE', __FILE__); -- common_server_error(_('Couldn\'t save profile.')); -- return; -- } -+ if (!$result) { -+ common_log_db_error($profile, 'UPDATE', __FILE__); -+ common_server_error(_('Couldn\'t save profile.')); -+ return; -+ } -hunk ./actions/twitapiaccount.php 78 -- common_broadcast_profile($profile); -- $type = $apidata['content-type']; -+ common_broadcast_profile($profile); -+ $type = $apidata['content-type']; -hunk ./actions/twitapiaccount.php 81 -- $this->init_document($type); -- $this->show_profile($profile, $type); -- $this->end_document($type); -- } -+ $this->init_document($type); -+ $this->show_profile($profile, $type); -+ $this->end_document($type); -+ } -hunk ./actions/twitapiaccount.php 87 -- function update_delivery_device($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function update_delivery_device($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapiaccount.php 92 -- function rate_limit_status($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function rate_limit_status($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapiblocks.php 26 -- function create($args, $apidata) { -+ function create($args, $apidata) { -hunk ./actions/twitapiblocks.php 28 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/twitapiblocks.php 30 -- $blockee = $this->get_user($apidata['api_arg'], $apidata); -+ $blockee = $this->get_user($apidata['api_arg'], $apidata); -hunk ./actions/twitapiblocks.php 33 -- $this->client_error('Not Found', 404, $apidata['content-type']); -- return; -+ $this->client_error('Not Found', 404, $apidata['content-type']); -+ return; -hunk ./actions/twitapiblocks.php 45 -- common_server_error(_('Block user failed.')); -+ common_server_error(_('Block user failed.')); -hunk ./actions/twitapiblocks.php 47 -- } -+ } -hunk ./actions/twitapiblocks.php 49 -- function destroy($args, $apidata) { -- parent::handle($args); -- $blockee = $this->get_user($apidata['api_arg'], $apidata); -+ function destroy($args, $apidata) { -+ parent::handle($args); -+ $blockee = $this->get_user($apidata['api_arg'], $apidata); -hunk ./actions/twitapiblocks.php 54 -- $this->client_error('Not Found', 404, $apidata['content-type']); -- return; -+ $this->client_error('Not Found', 404, $apidata['content-type']); -+ return; -hunk ./actions/twitapiblocks.php 66 -- common_server_error(_('Unblock user failed.')); -+ common_server_error(_('Unblock user failed.')); -hunk ./actions/twitapiblocks.php 68 -- } -+ } -hunk ./actions/twitapidirect_messages.php 26 -- function direct_messages($args, $apidata) { -- parent::handle($args); -- return $this->show_messages($args, $apidata, 'received'); -- } -+ function direct_messages($args, $apidata) { -+ parent::handle($args); -+ return $this->show_messages($args, $apidata, 'received'); -+ } -hunk ./actions/twitapidirect_messages.php 31 -- function sent($args, $apidata) { -- parent::handle($args); -- return $this->show_messages($args, $apidata, 'sent'); -- } -+ function sent($args, $apidata) { -+ parent::handle($args); -+ return $this->show_messages($args, $apidata, 'sent'); -+ } -hunk ./actions/twitapidirect_messages.php 36 -- function show_messages($args, $apidata, $type) { -+ function show_messages($args, $apidata, $type) { -hunk ./actions/twitapidirect_messages.php 38 -- $user = $apidata['user']; -+ $user = $apidata['user']; -hunk ./actions/twitapidirect_messages.php 40 -- $count = $this->arg('count'); -- $since = $this->arg('since'); -- $since_id = $this->arg('since_id'); -- $before_id = $this->arg('before_id'); -+ $count = $this->arg('count'); -+ $since = $this->arg('since'); -+ $since_id = $this->arg('since_id'); -+ $before_id = $this->arg('before_id'); -hunk ./actions/twitapidirect_messages.php 45 -- $page = $this->arg('page'); -+ $page = $this->arg('page'); -hunk ./actions/twitapidirect_messages.php 47 -- if (!$page) { -- $page = 1; -- } -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/twitapidirect_messages.php 51 -- if (!$count) { -- $count = 20; -- } -+ if (!$count) { -+ $count = 20; -+ } -hunk ./actions/twitapidirect_messages.php 55 -- $message = new Message(); -+ $message = new Message(); -hunk ./actions/twitapidirect_messages.php 57 -- $title = null; -- $subtitle = null; -- $link = null; -- $server = common_root_url(); -+ $title = null; -+ $subtitle = null; -+ $link = null; -+ $server = common_root_url(); -hunk ./actions/twitapidirect_messages.php 62 -- if ($type == 'received') { -- $message->to_profile = $user->id; -- $title = sprintf(_("Direct messages to %s"), $user->nickname); -- $subtitle = sprintf(_("All the direct messages sent to %s"), $user->nickname); -- $link = $server . $user->nickname . '/inbox'; -- } else { -- $message->from_profile = $user->id; -- $title = _('Direct Messages You\'ve Sent'); -- $subtitle = sprintf(_("All the direct messages sent from %s"), $user->nickname); -- $link = $server . $user->nickname . '/outbox'; -- } -+ if ($type == 'received') { -+ $message->to_profile = $user->id; -+ $title = sprintf(_("Direct messages to %s"), $user->nickname); -+ $subtitle = sprintf(_("All the direct messages sent to %s"), $user->nickname); -+ $link = $server . $user->nickname . '/inbox'; -+ } else { -+ $message->from_profile = $user->id; -+ $title = _('Direct Messages You\'ve Sent'); -+ $subtitle = sprintf(_("All the direct messages sent from %s"), $user->nickname); -+ $link = $server . $user->nickname . '/outbox'; -+ } -hunk ./actions/twitapidirect_messages.php 74 -- if ($before_id) { -- $message->whereAdd("id < $before_id"); -- } -+ if ($before_id) { -+ $message->whereAdd("id < $before_id"); -+ } -hunk ./actions/twitapidirect_messages.php 78 -- if ($since_id) { -- $message->whereAdd("id > $since_id"); -- } -+ if ($since_id) { -+ $message->whereAdd("id > $since_id"); -+ } -hunk ./actions/twitapidirect_messages.php 82 -- $since = strtotime($this->arg('since')); -+ $since = strtotime($this->arg('since')); -hunk ./actions/twitapidirect_messages.php 84 -- if ($since) { -- $d = date('Y-m-d H:i:s', $since); -- $message->whereAdd("created > '$d'"); -- } -+ if ($since) { -+ $d = date('Y-m-d H:i:s', $since); -+ $message->whereAdd("created > '$d'"); -+ } -hunk ./actions/twitapidirect_messages.php 89 -- $message->orderBy('created DESC, id DESC'); -- $message->limit((($page-1)*20), $count); -- $message->find(); -+ $message->orderBy('created DESC, id DESC'); -+ $message->limit((($page-1)*20), $count); -+ $message->find(); -hunk ./actions/twitapidirect_messages.php 93 -- switch($apidata['content-type']) { -- case 'xml': -- $this->show_xml_dmsgs($message); -- break; -- case 'rss': -- $this->show_rss_dmsgs($message, $title, $link, $subtitle); -- break; -- case 'atom': -- $this->show_atom_dmsgs($message, $title, $link, $subtitle); -- break; -- case 'json': -- $this->show_json_dmsgs($message); -- break; -- default: -- common_user_error(_('API method not found!'), $code = 404); -- } -+ switch($apidata['content-type']) { -+ case 'xml': -+ $this->show_xml_dmsgs($message); -+ break; -+ case 'rss': -+ $this->show_rss_dmsgs($message, $title, $link, $subtitle); -+ break; -+ case 'atom': -+ $this->show_atom_dmsgs($message, $title, $link, $subtitle); -+ break; -+ case 'json': -+ $this->show_json_dmsgs($message); -+ break; -+ default: -+ common_user_error(_('API method not found!'), $code = 404); -+ } -hunk ./actions/twitapidirect_messages.php 110 -- } -+ } -hunk ./actions/twitapidirect_messages.php 112 -- // had to change this from "new" to "create" to avoid PHP reserved word -- function create($args, $apidata) { -- parent::handle($args); -+ // had to change this from "new" to "create" to avoid PHP reserved word -+ function create($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapidirect_messages.php 116 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapidirect_messages.php 121 -- $user = $apidata['user']; -- $source = $this->trimmed('source'); // Not supported by Twitter. -+ $user = $apidata['user']; -+ $source = $this->trimmed('source'); // Not supported by Twitter. -hunk ./actions/twitapidirect_messages.php 125 -- if (!$source || in_array($source, $reserved_sources)) { -- $source = 'api'; -- } -+ if (!$source || in_array($source, $reserved_sources)) { -+ $source = 'api'; -+ } -hunk ./actions/twitapidirect_messages.php 129 -- $content = $this->trimmed('text'); -+ $content = $this->trimmed('text'); -hunk ./actions/twitapidirect_messages.php 131 -- if (!$content) { -- $this->client_error(_('No message text!'), $code = 406, $apidata['content-type']); -- } else { -- $content_shortened = common_shorten_links($content); -- if (mb_strlen($content_shortened) > 140) { -- $this->client_error(_('That\'s too long. Max message size is 140 chars.'), -- $code = 406, $apidata['content-type']); -- return; -- } -- } -+ if (!$content) { -+ $this->client_error(_('No message text!'), $code = 406, $apidata['content-type']); -+ } else { -+ $content_shortened = common_shorten_links($content); -+ if (mb_strlen($content_shortened) > 140) { -+ $this->client_error(_('That\'s too long. Max message size is 140 chars.'), -+ $code = 406, $apidata['content-type']); -+ return; -+ } -+ } -hunk ./actions/twitapidirect_messages.php 142 -- $other = $this->get_user($this->trimmed('user')); -+ $other = $this->get_user($this->trimmed('user')); -hunk ./actions/twitapidirect_messages.php 144 -- if (!$other) { -- $this->client_error(_('Recipient user not found.'), $code = 403, $apidata['content-type']); -- return; -- } else if (!$user->mutuallySubscribed($other)) { -- $this->client_error(_('Can\'t send direct messages to users who aren\'t your friend.'), -- $code = 403, $apidata['content-type']); -- return; -- } else if ($user->id == $other->id) { -- // Sending msgs to yourself is allowed by Twitter -- $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'), -- $code = 403, $apidata['content-type']); -- return; -- } -+ if (!$other) { -+ $this->client_error(_('Recipient user not found.'), $code = 403, $apidata['content-type']); -+ return; -+ } else if (!$user->mutuallySubscribed($other)) { -+ $this->client_error(_('Can\'t send direct messages to users who aren\'t your friend.'), -+ $code = 403, $apidata['content-type']); -+ return; -+ } else if ($user->id == $other->id) { -+ // Sending msgs to yourself is allowed by Twitter -+ $this->client_error(_('Don\'t send a message to yourself; just say it to yourself quietly instead.'), -+ $code = 403, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapidirect_messages.php 158 -- $message = Message::saveNew($user->id, $other->id, -- html_entity_decode($content, ENT_NOQUOTES, 'UTF-8'), $source); -+ $message = Message::saveNew($user->id, $other->id, -+ html_entity_decode($content, ENT_NOQUOTES, 'UTF-8'), $source); -hunk ./actions/twitapidirect_messages.php 161 -- if (is_string($message)) { -- $this->server_error($message); -- return; -- } -+ if (is_string($message)) { -+ $this->server_error($message); -+ return; -+ } -hunk ./actions/twitapidirect_messages.php 166 -- $this->notify($user, $other, $message); -+ $this->notify($user, $other, $message); -hunk ./actions/twitapidirect_messages.php 168 -- if ($apidata['content-type'] == 'xml') { -- $this->show_single_xml_dmsg($message); -- } elseif ($apidata['content-type'] == 'json') { -- $this->show_single_json_dmsg($message); -- } -+ if ($apidata['content-type'] == 'xml') { -+ $this->show_single_xml_dmsg($message); -+ } elseif ($apidata['content-type'] == 'json') { -+ $this->show_single_json_dmsg($message); -+ } -hunk ./actions/twitapidirect_messages.php 174 -- } -+ } -hunk ./actions/twitapidirect_messages.php 176 -- function destroy($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function destroy($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapidirect_messages.php 181 -- function show_xml_dmsgs($message) { -+ function show_xml_dmsgs($message) { -hunk ./actions/twitapidirect_messages.php 183 -- $this->init_document('xml'); -- common_element_start('direct-messages', array('type' => 'array')); -+ $this->init_document('xml'); -+ common_element_start('direct-messages', array('type' => 'array')); -hunk ./actions/twitapidirect_messages.php 186 -- if (is_array($messages)) { -- foreach ($message as $m) { -- $twitter_dm = $this->twitter_dmsg_array($m); -- $this->show_twitter_xml_dmsg($twitter_dm); -- } -- } else { -- while ($message->fetch()) { -- $twitter_dm = $this->twitter_dmsg_array($message); -- $this->show_twitter_xml_dmsg($twitter_dm); -- } -- } -+ if (is_array($messages)) { -+ foreach ($message as $m) { -+ $twitter_dm = $this->twitter_dmsg_array($m); -+ $this->show_twitter_xml_dmsg($twitter_dm); -+ } -+ } else { -+ while ($message->fetch()) { -+ $twitter_dm = $this->twitter_dmsg_array($message); -+ $this->show_twitter_xml_dmsg($twitter_dm); -+ } -+ } -hunk ./actions/twitapidirect_messages.php 198 -- common_element_end('direct-messages'); -- $this->end_document('xml'); -+ common_element_end('direct-messages'); -+ $this->end_document('xml'); -hunk ./actions/twitapidirect_messages.php 201 -- } -+ } -hunk ./actions/twitapidirect_messages.php 203 -- function show_json_dmsgs($message) { -+ function show_json_dmsgs($message) { -hunk ./actions/twitapidirect_messages.php 205 -- $this->init_document('json'); -+ $this->init_document('json'); -hunk ./actions/twitapidirect_messages.php 207 -- $dmsgs = array(); -+ $dmsgs = array(); -hunk ./actions/twitapidirect_messages.php 209 -- if (is_array($message)) { -- foreach ($message as $m) { -- $twitter_dm = $this->twitter_dmsg_array($m); -- array_push($dmsgs, $twitter_dm); -- } -- } else { -- while ($message->fetch()) { -- $twitter_dm = $this->twitter_dmsg_array($message); -- array_push($dmsgs, $twitter_dm); -- } -- } -+ if (is_array($message)) { -+ foreach ($message as $m) { -+ $twitter_dm = $this->twitter_dmsg_array($m); -+ array_push($dmsgs, $twitter_dm); -+ } -+ } else { -+ while ($message->fetch()) { -+ $twitter_dm = $this->twitter_dmsg_array($message); -+ array_push($dmsgs, $twitter_dm); -+ } -+ } -hunk ./actions/twitapidirect_messages.php 221 -- $this->show_json_objects($dmsgs); -- $this->end_document('json'); -+ $this->show_json_objects($dmsgs); -+ $this->end_document('json'); -hunk ./actions/twitapidirect_messages.php 224 -- } -+ } -hunk ./actions/twitapidirect_messages.php 226 -- function show_rss_dmsgs($message, $title, $link, $subtitle) { -+ function show_rss_dmsgs($message, $title, $link, $subtitle) { -hunk ./actions/twitapidirect_messages.php 228 -- $this->init_document('rss'); -+ $this->init_document('rss'); -hunk ./actions/twitapidirect_messages.php 230 -- common_element_start('channel'); -- common_element('title', NULL, $title); -+ common_element_start('channel'); -+ common_element('title', NULL, $title); -hunk ./actions/twitapidirect_messages.php 233 -- common_element('link', NULL, $link); -- common_element('description', NULL, $subtitle); -- common_element('language', NULL, 'en-us'); -- common_element('ttl', NULL, '40'); -+ common_element('link', NULL, $link); -+ common_element('description', NULL, $subtitle); -+ common_element('language', NULL, 'en-us'); -+ common_element('ttl', NULL, '40'); -hunk ./actions/twitapidirect_messages.php 238 -- if (is_array($message)) { -- foreach ($message as $m) { -- $entry = $this->twitter_rss_dmsg_array($m); -- $this->show_twitter_rss_item($entry); -- } -- } else { -- while ($message->fetch()) { -- $entry = $this->twitter_rss_dmsg_array($message); -- $this->show_twitter_rss_item($entry); -- } -- } -+ if (is_array($message)) { -+ foreach ($message as $m) { -+ $entry = $this->twitter_rss_dmsg_array($m); -+ $this->show_twitter_rss_item($entry); -+ } -+ } else { -+ while ($message->fetch()) { -+ $entry = $this->twitter_rss_dmsg_array($message); -+ $this->show_twitter_rss_item($entry); -+ } -+ } -hunk ./actions/twitapidirect_messages.php 250 -- common_element_end('channel'); -- $this->end_twitter_rss(); -+ common_element_end('channel'); -+ $this->end_twitter_rss(); -hunk ./actions/twitapidirect_messages.php 253 -- } -+ } -hunk ./actions/twitapidirect_messages.php 255 -- function show_atom_dmsgs($message, $title, $link, $subtitle) { -+ function show_atom_dmsgs($message, $title, $link, $subtitle) { -hunk ./actions/twitapidirect_messages.php 257 -- $this->init_document('atom'); -+ $this->init_document('atom'); -hunk ./actions/twitapidirect_messages.php 259 -- common_element('title', NULL, $title); -- $siteserver = common_config('site', 'server'); -- common_element('id', NULL, "tag:$siteserver,2008:DirectMessage"); -- common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL); -- common_element('updated', NULL, common_date_iso8601(strftime('%c'))); -- common_element('subtitle', NULL, $subtitle); -+ common_element('title', NULL, $title); -+ $siteserver = common_config('site', 'server'); -+ common_element('id', NULL, "tag:$siteserver,2008:DirectMessage"); -+ common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL); -+ common_element('updated', NULL, common_date_iso8601(strftime('%c'))); -+ common_element('subtitle', NULL, $subtitle); -hunk ./actions/twitapidirect_messages.php 266 -- if (is_array($message)) { -- foreach ($message as $m) { -- $entry = $this->twitter_rss_dmsg_array($m); -- $this->show_twitter_atom_entry($entry); -- } -- } else { -- while ($message->fetch()) { -- $entry = $this->twitter_rss_dmsg_array($message); -- $this->show_twitter_atom_entry($entry); -- } -- } -+ if (is_array($message)) { -+ foreach ($message as $m) { -+ $entry = $this->twitter_rss_dmsg_array($m); -+ $this->show_twitter_atom_entry($entry); -+ } -+ } else { -+ while ($message->fetch()) { -+ $entry = $this->twitter_rss_dmsg_array($message); -+ $this->show_twitter_atom_entry($entry); -+ } -+ } -hunk ./actions/twitapidirect_messages.php 278 -- $this->end_document('atom'); -- } -+ $this->end_document('atom'); -+ } -hunk ./actions/twitapidirect_messages.php 281 -- // swiped from MessageAction. Should it be place in util.php? -- function notify($from, $to, $message) { -- mail_notify_message($message, $from, $to); -- # XXX: Jabber, SMS notifications... probably queued -- } -+ // swiped from MessageAction. Should it be place in util.php? -+ function notify($from, $to, $message) { -+ mail_notify_message($message, $from, $to); -+ # XXX: Jabber, SMS notifications... probably queued -+ } -hunk ./actions/twitapifavorites.php 26 -- function favorites($args, $apidata) { -- parent::handle($args); -+ function favorites($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapifavorites.php 29 -- $this->auth_user = $apidata['user']; -- $user = $this->get_user($apidata['api_arg'], $apidata); -+ $this->auth_user = $apidata['user']; -+ $user = $this->get_user($apidata['api_arg'], $apidata); -hunk ./actions/twitapifavorites.php 32 -- if (!$user) { -- $this->client_error('Not Found', 404, $apidata['content-type']); -- return; -- } -+ if (!$user) { -+ $this->client_error('Not Found', 404, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifavorites.php 37 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/twitapifavorites.php 39 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/twitapifavorites.php 44 -- $page = $this->arg('page'); -+ $page = $this->arg('page'); -hunk ./actions/twitapifavorites.php 46 -- if (!$page) { -- $page = 1; -- } -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/twitapifavorites.php 50 -- if (!$count) { -- $count = 20; -- } -+ if (!$count) { -+ $count = 20; -+ } -hunk ./actions/twitapifavorites.php 54 -- $notice = $user->favoriteNotices((($page-1)*20), $count); -+ $notice = $user->favoriteNotices((($page-1)*20), $count); -hunk ./actions/twitapifavorites.php 56 -- if (!$notice) { -- common_server_error(_('Could not retrieve favorite notices.')); -- return; -- } -+ if (!$notice) { -+ common_server_error(_('Could not retrieve favorite notices.')); -+ return; -+ } -hunk ./actions/twitapifavorites.php 61 -- $sitename = common_config('site', 'name'); -- $siteserver = common_config('site', 'server'); -+ $sitename = common_config('site', 'name'); -+ $siteserver = common_config('site', 'server'); -hunk ./actions/twitapifavorites.php 64 -- $title = sprintf(_('%s / Favorites from %s'), $sitename, $user->nickname); -- $id = "tag:$siteserver:favorites:".$user->id; -- $link = common_local_url('favorites', array('nickname' => $user->nickname)); -- $subtitle = sprintf(_('%s updates favorited by %s / %s.'), $sitename, $profile->getBestName(), $user->nickname); -+ $title = sprintf(_('%s / Favorites from %s'), $sitename, $user->nickname); -+ $id = "tag:$siteserver:favorites:".$user->id; -+ $link = common_local_url('favorites', array('nickname' => $user->nickname)); -+ $subtitle = sprintf(_('%s updates favorited by %s / %s.'), $sitename, $profile->getBestName(), $user->nickname); -hunk ./actions/twitapifavorites.php 69 -- switch($apidata['content-type']) { -- case 'xml': -- $this->show_xml_timeline($notice); -- break; -- case 'rss': -- $this->show_rss_timeline($notice, $title, $link, $subtitle); -- break; -- case 'atom': -- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle); -- break; -- case 'json': -- $this->show_json_timeline($notice); -- break; -- default: -- common_user_error(_('API method not found!'), $code = 404); -- } -+ switch($apidata['content-type']) { -+ case 'xml': -+ $this->show_xml_timeline($notice); -+ break; -+ case 'rss': -+ $this->show_rss_timeline($notice, $title, $link, $subtitle); -+ break; -+ case 'atom': -+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle); -+ break; -+ case 'json': -+ $this->show_json_timeline($notice); -+ break; -+ default: -+ common_user_error(_('API method not found!'), $code = 404); -+ } -hunk ./actions/twitapifavorites.php 86 -- } -+ } -hunk ./actions/twitapifavorites.php 88 -- function create($args, $apidata) { -- parent::handle($args); -+ function create($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapifavorites.php 91 -- // Check for RESTfulness -- if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { -- // XXX: Twitter just prints the err msg, no XML / JSON. -- $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']); -- return; -- } -+ // Check for RESTfulness -+ if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { -+ // XXX: Twitter just prints the err msg, no XML / JSON. -+ $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifavorites.php 98 -- if (!in_array($apidata['content-type'], array('xml', 'json'))) { -- common_user_error(_('API method not found!'), $code = 404); -- return; -- } -+ if (!in_array($apidata['content-type'], array('xml', 'json'))) { -+ common_user_error(_('API method not found!'), $code = 404); -+ return; -+ } -hunk ./actions/twitapifavorites.php 103 -- $this->auth_user = $apidata['user']; -- $user = $this->auth_user; -- $notice_id = $apidata['api_arg']; -- $notice = Notice::staticGet($notice_id); -+ $this->auth_user = $apidata['user']; -+ $user = $this->auth_user; -+ $notice_id = $apidata['api_arg']; -+ $notice = Notice::staticGet($notice_id); -hunk ./actions/twitapifavorites.php 108 -- if (!$notice) { -- $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']); -- return; -- } -+ if (!$notice) { -+ $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifavorites.php 113 -- // XXX: Twitter lets you fave things repeatedly via api. -- if ($user->hasFave($notice)) { -- $this->client_error(_('This notice is already a favorite!'), 403, $apidata['content-type']); -- return; -- } -+ // XXX: Twitter lets you fave things repeatedly via api. -+ if ($user->hasFave($notice)) { -+ $this->client_error(_('This notice is already a favorite!'), 403, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifavorites.php 119 -- $fave = Fave::addNew($user, $notice); -+ $fave = Fave::addNew($user, $notice); -hunk ./actions/twitapifavorites.php 121 -- if (!$fave) { -- common_server_error(_('Could not create favorite.')); -- return; -- } -+ if (!$fave) { -+ common_server_error(_('Could not create favorite.')); -+ return; -+ } -hunk ./actions/twitapifavorites.php 126 -- $this->notify($fave, $notice, $user); -- $user->blowFavesCache(); -+ $this->notify($fave, $notice, $user); -+ $user->blowFavesCache(); -hunk ./actions/twitapifavorites.php 129 -- if ($apidata['content-type'] == 'xml') { -- $this->show_single_xml_status($notice); -- } elseif ($apidata['content-type'] == 'json') { -- $this->show_single_json_status($notice); -- } -+ if ($apidata['content-type'] == 'xml') { -+ $this->show_single_xml_status($notice); -+ } elseif ($apidata['content-type'] == 'json') { -+ $this->show_single_json_status($notice); -+ } -hunk ./actions/twitapifavorites.php 135 -- } -+ } -hunk ./actions/twitapifavorites.php 137 -- function destroy($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function destroy($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapifavorites.php 142 -- // XXX: these two funcs swiped from faves. Maybe put in util.php, or some common base class? -+ // XXX: these two funcs swiped from faves. Maybe put in util.php, or some common base class? -hunk ./actions/twitapifavorites.php 144 -- function notify($fave, $notice, $user) { -- $other = User::staticGet('id', $notice->profile_id); -- if ($other && $other->id != $user->id) { -- if ($other->email && $other->emailnotifyfav) { -- $this->notify_mail($other, $user, $notice); -- } -- # XXX: notify by IM -- # XXX: notify by SMS -- } -- } -+ function notify($fave, $notice, $user) { -+ $other = User::staticGet('id', $notice->profile_id); -+ if ($other && $other->id != $user->id) { -+ if ($other->email && $other->emailnotifyfav) { -+ $this->notify_mail($other, $user, $notice); -+ } -+ # XXX: notify by IM -+ # XXX: notify by SMS -+ } -+ } -hunk ./actions/twitapifavorites.php 155 -- function notify_mail($other, $user, $notice) { -- $profile = $user->getProfile(); -- $bestname = $profile->getBestName(); -- $subject = sprintf(_('%s added your notice as a favorite'), $bestname); -- $body = sprintf(_("%1\$s just added your notice from %2\$s as one of their favorites.\n\n" . -- "In case you forgot, you can see the text of your notice here:\n\n" . -- "%3\$s\n\n" . -- "You can see the list of %1\$s's favorites here:\n\n" . -- "%4\$s\n\n" . -- "Faithfully yours,\n" . -- "%5\$s\n"), -- $bestname, -- common_exact_date($notice->created), -- common_local_url('shownotice', array('notice' => $notice->id)), -- common_local_url('showfavorites', array('nickname' => $user->nickname)), -- common_config('site', 'name')); -+ function notify_mail($other, $user, $notice) { -+ $profile = $user->getProfile(); -+ $bestname = $profile->getBestName(); -+ $subject = sprintf(_('%s added your notice as a favorite'), $bestname); -+ $body = sprintf(_("%1\$s just added your notice from %2\$s as one of their favorites.\n\n" . -+ "In case you forgot, you can see the text of your notice here:\n\n" . -+ "%3\$s\n\n" . -+ "You can see the list of %1\$s's favorites here:\n\n" . -+ "%4\$s\n\n" . -+ "Faithfully yours,\n" . -+ "%5\$s\n"), -+ $bestname, -+ common_exact_date($notice->created), -+ common_local_url('shownotice', array('notice' => $notice->id)), -+ common_local_url('showfavorites', array('nickname' => $user->nickname)), -+ common_config('site', 'name')); -hunk ./actions/twitapifavorites.php 172 -- mail_to_user($other, $subject, $body); -- } -+ mail_to_user($other, $subject, $body); -+ } -hunk ./actions/twitapifriendships.php 26 -- function create($args, $apidata) { -- parent::handle($args); -+ function create($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapifriendships.php 29 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifriendships.php 34 -- $id = $apidata['api_arg']; -+ $id = $apidata['api_arg']; -hunk ./actions/twitapifriendships.php 36 -- $other = $this->get_user($id); -+ $other = $this->get_user($id); -hunk ./actions/twitapifriendships.php 38 -- if (!$other) { -- $this->client_error(_('Could not follow user: User not found.'), 403, $apidata['content-type']); -- return; -- } -+ if (!$other) { -+ $this->client_error(_('Could not follow user: User not found.'), 403, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifriendships.php 43 -- $user = $apidata['user']; -+ $user = $apidata['user']; -hunk ./actions/twitapifriendships.php 45 -- if ($user->isSubscribed($other)) { -- $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname); -- $this->client_error($errmsg, 403, $apidata['content-type']); -- return; -- } -+ if ($user->isSubscribed($other)) { -+ $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname); -+ $this->client_error($errmsg, 403, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifriendships.php 51 -- $sub = new Subscription(); -+ $sub = new Subscription(); -hunk ./actions/twitapifriendships.php 53 -- $sub->query('BEGIN'); -+ $sub->query('BEGIN'); -hunk ./actions/twitapifriendships.php 55 -- $sub->subscriber = $user->id; -- $sub->subscribed = $other->id; -- $sub->created = DB_DataObject_Cast::dateTime(); # current time -+ $sub->subscriber = $user->id; -+ $sub->subscribed = $other->id; -+ $sub->created = DB_DataObject_Cast::dateTime(); # current time -hunk ./actions/twitapifriendships.php 59 -- $result = $sub->insert(); -+ $result = $sub->insert(); -hunk ./actions/twitapifriendships.php 61 -- if (!$result) { -- $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname); -- $this->client_error($errmsg, 400, $apidata['content-type']); -- return; -- } -+ if (!$result) { -+ $errmsg = sprintf(_('Could not follow user: %s is already on your list.'), $other->nickname); -+ $this->client_error($errmsg, 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifriendships.php 67 -- $sub->query('COMMIT'); -+ $sub->query('COMMIT'); -hunk ./actions/twitapifriendships.php 69 -- mail_subscribe_notify($other, $user); -+ mail_subscribe_notify($other, $user); -hunk ./actions/twitapifriendships.php 71 -- $type = $apidata['content-type']; -- $this->init_document($type); -- $this->show_profile($other, $type); -- $this->end_document($type); -+ $type = $apidata['content-type']; -+ $this->init_document($type); -+ $this->show_profile($other, $type); -+ $this->end_document($type); -hunk ./actions/twitapifriendships.php 76 -- } -+ } -hunk ./actions/twitapifriendships.php 78 -- function destroy($args, $apidata) { -- parent::handle($args); -+ function destroy($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapifriendships.php 81 -- if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { -- $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']); -- return; -- } -+ if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { -+ $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifriendships.php 86 -- $id = $apidata['api_arg']; -+ $id = $apidata['api_arg']; -hunk ./actions/twitapifriendships.php 88 -- # We can't subscribe to a remote person, but we can unsub -+ # We can't subscribe to a remote person, but we can unsub -hunk ./actions/twitapifriendships.php 90 -- $other = $this->get_profile($id); -- $user = $apidata['user']; -+ $other = $this->get_profile($id); -+ $user = $apidata['user']; -hunk ./actions/twitapifriendships.php 93 -- $sub = new Subscription(); -- $sub->subscriber = $user->id; -- $sub->subscribed = $other->id; -+ $sub = new Subscription(); -+ $sub->subscriber = $user->id; -+ $sub->subscribed = $other->id; -hunk ./actions/twitapifriendships.php 97 -- if ($sub->find(TRUE)) { -- $sub->query('BEGIN'); -- $sub->delete(); -- $sub->query('COMMIT'); -- } else { -- $this->client_error(_('You are not friends with the specified user.'), 403, $apidata['content-type']); -- return; -- } -+ if ($sub->find(TRUE)) { -+ $sub->query('BEGIN'); -+ $sub->delete(); -+ $sub->query('COMMIT'); -+ } else { -+ $this->client_error(_('You are not friends with the specified user.'), 403, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifriendships.php 106 -- $type = $apidata['content-type']; -- $this->init_document($type); -- $this->show_profile($other, $type); -- $this->end_document($type); -+ $type = $apidata['content-type']; -+ $this->init_document($type); -+ $this->show_profile($other, $type); -+ $this->end_document($type); -hunk ./actions/twitapifriendships.php 111 -- } -+ } -hunk ./actions/twitapifriendships.php 113 -- function exists($args, $apidata) { -- parent::handle($args); -+ function exists($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapifriendships.php 116 -- if (!in_array($apidata['content-type'], array('xml', 'json'))) { -- common_user_error(_('API method not found!'), $code = 404); -- return; -- } -+ if (!in_array($apidata['content-type'], array('xml', 'json'))) { -+ common_user_error(_('API method not found!'), $code = 404); -+ return; -+ } -hunk ./actions/twitapifriendships.php 121 -- $user_a_id = $this->trimmed('user_a'); -- $user_b_id = $this->trimmed('user_b'); -+ $user_a_id = $this->trimmed('user_a'); -+ $user_b_id = $this->trimmed('user_b'); -hunk ./actions/twitapifriendships.php 124 -- $user_a = $this->get_user($user_a_id); -- $user_b = $this->get_user($user_b_id); -+ $user_a = $this->get_user($user_a_id); -+ $user_b = $this->get_user($user_b_id); -hunk ./actions/twitapifriendships.php 127 -- if (!$user_a || !$user_b) { -- $this->client_error(_('Two user ids or screen_names must be supplied.'), 400, $apidata['content-type']); -- return; -- } -+ if (!$user_a || !$user_b) { -+ $this->client_error(_('Two user ids or screen_names must be supplied.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapifriendships.php 132 -- if ($user_a->isSubscribed($user_b)) { -- $result = 'true'; -- } else { -- $result = 'false'; -- } -+ if ($user_a->isSubscribed($user_b)) { -+ $result = 'true'; -+ } else { -+ $result = 'false'; -+ } -hunk ./actions/twitapifriendships.php 138 -- switch ($apidata['content-type']) { -- case 'xml': -- $this->init_document('xml'); -- common_element('friends', NULL, $result); -- $this->end_document('xml'); -- break; -- case 'json': -- $this->init_document('json'); -- print json_encode($result); -- $this->end_document('json'); -- break; -- default: -- break; -- } -+ switch ($apidata['content-type']) { -+ case 'xml': -+ $this->init_document('xml'); -+ common_element('friends', NULL, $result); -+ $this->end_document('xml'); -+ break; -+ case 'json': -+ $this->init_document('json'); -+ print json_encode($result); -+ $this->end_document('json'); -+ break; -+ default: -+ break; -+ } -hunk ./actions/twitapifriendships.php 153 -- } -+ } -hunk ./actions/twitapihelp.php 26 -- /* Returns the string "ok" in the requested format with a 200 OK HTTP status code. -- * URL:http://identi.ca/api/help/test.format -- * Formats: xml, json -- */ -- function test($args, $apidata) { -- parent::handle($args); -+ /* Returns the string "ok" in the requested format with a 200 OK HTTP status code. -+ * URL:http://identi.ca/api/help/test.format -+ * Formats: xml, json -+ */ -+ function test($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapihelp.php 33 -- if ($apidata['content-type'] == 'xml') { -- $this->init_document('xml'); -- common_element('ok', NULL, 'true'); -- $this->end_document('xml'); -- } elseif ($apidata['content-type'] == 'json') { -- $this->init_document('json'); -- print '"ok"'; -- $this->end_document('json'); -- } else { -- common_user_error(_('API method not found!'), $code=404); -- } -+ if ($apidata['content-type'] == 'xml') { -+ $this->init_document('xml'); -+ common_element('ok', NULL, 'true'); -+ $this->end_document('xml'); -+ } elseif ($apidata['content-type'] == 'json') { -+ $this->init_document('json'); -+ print '"ok"'; -+ $this->end_document('json'); -+ } else { -+ common_user_error(_('API method not found!'), $code=404); -+ } -hunk ./actions/twitapihelp.php 45 -- } -+ } -hunk ./actions/twitapihelp.php 47 -- function downtime_schedule($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function downtime_schedule($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapinotifications.php 27 -- function follow($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function follow($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapinotifications.php 32 -- function leave($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function leave($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapistatuses.php 26 -- function public_timeline($args, $apidata) { -- parent::handle($args); -+ function public_timeline($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 29 -- $sitename = common_config('site', 'name'); -- $siteserver = common_config('site', 'server'); -- $title = sprintf(_("%s public timeline"), $sitename); -- $id = "tag:$siteserver:Statuses"; -- $link = common_root_url(); -- $subtitle = sprintf(_("%s updates from everyone!"), $sitename); -+ $sitename = common_config('site', 'name'); -+ $siteserver = common_config('site', 'server'); -+ $title = sprintf(_("%s public timeline"), $sitename); -+ $id = "tag:$siteserver:Statuses"; -+ $link = common_root_url(); -+ $subtitle = sprintf(_("%s updates from everyone!"), $sitename); -hunk ./actions/twitapistatuses.php 36 -- // Number of public statuses to return by default -- Twitter sends 20 -- $MAX_PUBSTATUSES = 20; -+ // Number of public statuses to return by default -- Twitter sends 20 -+ $MAX_PUBSTATUSES = 20; -hunk ./actions/twitapistatuses.php 39 -- // FIXME: To really live up to the spec we need to build a list -- // of notices by users who have custom avatars, so fix this SQL -- Zach -+ // FIXME: To really live up to the spec we need to build a list -+ // of notices by users who have custom avatars, so fix this SQL -- Zach -hunk ./actions/twitapistatuses.php 42 -- $page = $this->arg('page'); -- $since_id = $this->arg('since_id'); -- $before_id = $this->arg('before_id'); -+ $page = $this->arg('page'); -+ $since_id = $this->arg('since_id'); -+ $before_id = $this->arg('before_id'); -hunk ./actions/twitapistatuses.php 46 -- // NOTE: page, since_id, and before_id are extensions to Twitter API -- TB -- if (!$page) { -- $page = 1; -- } -- if (!$since_id) { -- $since_id = 0; -- } -- if (!$before_id) { -- $before_id = 0; -- } -+ // NOTE: page, since_id, and before_id are extensions to Twitter API -- TB -+ if (!$page) { -+ $page = 1; -+ } -+ if (!$since_id) { -+ $since_id = 0; -+ } -+ if (!$before_id) { -+ $before_id = 0; -+ } -hunk ./actions/twitapistatuses.php 57 -- $since = strtotime($this->arg('since')); -+ $since = strtotime($this->arg('since')); -hunk ./actions/twitapistatuses.php 59 -- $notice = Notice::publicStream((($page-1)*$MAX_PUBSTATUSES), $MAX_PUBSTATUSES, $since_id, $before_id, $since); -+ $notice = Notice::publicStream((($page-1)*$MAX_PUBSTATUSES), $MAX_PUBSTATUSES, $since_id, $before_id, $since); -hunk ./actions/twitapistatuses.php 61 -- if ($notice) { -+ if ($notice) { -hunk ./actions/twitapistatuses.php 63 -- switch($apidata['content-type']) { -- case 'xml': -- $this->show_xml_timeline($notice); -- break; -- case 'rss': -- $this->show_rss_timeline($notice, $title, $link, $subtitle); -- break; -- case 'atom': -- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle); -- break; -- case 'json': -- $this->show_json_timeline($notice); -- break; -- default: -- common_user_error(_('API method not found!'), $code = 404); -- break; -- } -+ switch($apidata['content-type']) { -+ case 'xml': -+ $this->show_xml_timeline($notice); -+ break; -+ case 'rss': -+ $this->show_rss_timeline($notice, $title, $link, $subtitle); -+ break; -+ case 'atom': -+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle); -+ break; -+ case 'json': -+ $this->show_json_timeline($notice); -+ break; -+ default: -+ common_user_error(_('API method not found!'), $code = 404); -+ break; -+ } -hunk ./actions/twitapistatuses.php 81 -- } else { -- common_server_error(_('Couldn\'t find any statuses.'), $code = 503); -- } -+ } else { -+ common_server_error(_('Couldn\'t find any statuses.'), $code = 503); -+ } -hunk ./actions/twitapistatuses.php 85 -- } -+ } -hunk ./actions/twitapistatuses.php 87 -- function friends_timeline($args, $apidata) { -- parent::handle($args); -+ function friends_timeline($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 90 -- $since = $this->arg('since'); -- $since_id = $this->arg('since_id'); -- $count = $this->arg('count'); -- $page = $this->arg('page'); -- $before_id = $this->arg('before_id'); -+ $since = $this->arg('since'); -+ $since_id = $this->arg('since_id'); -+ $count = $this->arg('count'); -+ $page = $this->arg('page'); -+ $before_id = $this->arg('before_id'); -hunk ./actions/twitapistatuses.php 96 -- if (!$page) { -- $page = 1; -- } -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/twitapistatuses.php 100 -- if (!$count) { -- $count = 20; -- } -+ if (!$count) { -+ $count = 20; -+ } -hunk ./actions/twitapistatuses.php 104 -- if (!$since_id) { -- $since_id = 0; -- } -+ if (!$since_id) { -+ $since_id = 0; -+ } -hunk ./actions/twitapistatuses.php 108 -- // NOTE: before_id is an extension to Twitter API -- TB -- if (!$before_id) { -- $before_id = 0; -- } -+ // NOTE: before_id is an extension to Twitter API -- TB -+ if (!$before_id) { -+ $before_id = 0; -+ } -hunk ./actions/twitapistatuses.php 113 -- $since = strtotime($this->arg('since')); -+ $since = strtotime($this->arg('since')); -hunk ./actions/twitapistatuses.php 115 -- $user = $this->get_user(NULL, $apidata); -- $this->auth_user = $user; -+ $user = $this->get_user(NULL, $apidata); -+ $this->auth_user = $user; -hunk ./actions/twitapistatuses.php 118 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/twitapistatuses.php 120 -- $sitename = common_config('site', 'name'); -- $siteserver = common_config('site', 'server'); -+ $sitename = common_config('site', 'name'); -+ $siteserver = common_config('site', 'server'); -hunk ./actions/twitapistatuses.php 123 -- $title = sprintf(_("%s and friends"), $user->nickname); -- $id = "tag:$siteserver:friends:" . $user->id; -- $link = common_local_url('all', array('nickname' => $user->nickname)); -- $subtitle = sprintf(_('Updates from %1$s and friends on %2$s!'), $user->nickname, $sitename); -+ $title = sprintf(_("%s and friends"), $user->nickname); -+ $id = "tag:$siteserver:friends:" . $user->id; -+ $link = common_local_url('all', array('nickname' => $user->nickname)); -+ $subtitle = sprintf(_('Updates from %1$s and friends on %2$s!'), $user->nickname, $sitename); -hunk ./actions/twitapistatuses.php 128 -- $notice = $user->noticesWithFriends(($page-1)*20, $count, $since_id, $before_id, $since); -+ $notice = $user->noticesWithFriends(($page-1)*20, $count, $since_id, $before_id, $since); -hunk ./actions/twitapistatuses.php 130 -- switch($apidata['content-type']) { -- case 'xml': -- $this->show_xml_timeline($notice); -- break; -- case 'rss': -- $this->show_rss_timeline($notice, $title, $link, $subtitle); -- break; -- case 'atom': -- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle); -- break; -- case 'json': -- $this->show_json_timeline($notice); -- break; -- default: -- common_user_error(_('API method not found!'), $code = 404); -- } -+ switch($apidata['content-type']) { -+ case 'xml': -+ $this->show_xml_timeline($notice); -+ break; -+ case 'rss': -+ $this->show_rss_timeline($notice, $title, $link, $subtitle); -+ break; -+ case 'atom': -+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle); -+ break; -+ case 'json': -+ $this->show_json_timeline($notice); -+ break; -+ default: -+ common_user_error(_('API method not found!'), $code = 404); -+ } -hunk ./actions/twitapistatuses.php 147 -- } -+ } -hunk ./actions/twitapistatuses.php 149 -- function user_timeline($args, $apidata) { -- parent::handle($args); -+ function user_timeline($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 152 -- $this->auth_user = $apidata['user']; -- $user = $this->get_user($apidata['api_arg'], $apidata); -+ $this->auth_user = $apidata['user']; -+ $user = $this->get_user($apidata['api_arg'], $apidata); -hunk ./actions/twitapistatuses.php 155 -- if (!$user) { -- $this->client_error('Not Found', 404, $apidata['content-type']); -- return; -- } -+ if (!$user) { -+ $this->client_error('Not Found', 404, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapistatuses.php 160 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/twitapistatuses.php 162 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/twitapistatuses.php 167 -- $count = $this->arg('count'); -- $since = $this->arg('since'); -- $since_id = $this->arg('since_id'); -- $page = $this->arg('page'); -- $before_id = $this->arg('before_id'); -+ $count = $this->arg('count'); -+ $since = $this->arg('since'); -+ $since_id = $this->arg('since_id'); -+ $page = $this->arg('page'); -+ $before_id = $this->arg('before_id'); -hunk ./actions/twitapistatuses.php 173 -- if (!$page) { -- $page = 1; -- } -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/twitapistatuses.php 177 -- if (!$count) { -- $count = 20; -- } -+ if (!$count) { -+ $count = 20; -+ } -hunk ./actions/twitapistatuses.php 181 -- if (!$since_id) { -- $since_id = 0; -- } -+ if (!$since_id) { -+ $since_id = 0; -+ } -hunk ./actions/twitapistatuses.php 185 -- // NOTE: before_id is an extensions to Twitter API -- TB -- if (!$before_id) { -- $before_id = 0; -- } -+ // NOTE: before_id is an extensions to Twitter API -- TB -+ if (!$before_id) { -+ $before_id = 0; -+ } -hunk ./actions/twitapistatuses.php 190 -- $since = strtotime($this->arg('since')); -+ $since = strtotime($this->arg('since')); -hunk ./actions/twitapistatuses.php 192 -- $sitename = common_config('site', 'name'); -- $siteserver = common_config('site', 'server'); -+ $sitename = common_config('site', 'name'); -+ $siteserver = common_config('site', 'server'); -hunk ./actions/twitapistatuses.php 195 -- $title = sprintf(_("%s timeline"), $user->nickname); -- $id = "tag:$siteserver:user:".$user->id; -- $link = common_local_url('showstream', array('nickname' => $user->nickname)); -- $subtitle = sprintf(_('Updates from %1$s on %2$s!'), $user->nickname, $sitename); -+ $title = sprintf(_("%s timeline"), $user->nickname); -+ $id = "tag:$siteserver:user:".$user->id; -+ $link = common_local_url('showstream', array('nickname' => $user->nickname)); -+ $subtitle = sprintf(_('Updates from %1$s on %2$s!'), $user->nickname, $sitename); -hunk ./actions/twitapistatuses.php 200 -- # FriendFeed's SUP protocol -- # Also added RSS and Atom feeds -+ # FriendFeed's SUP protocol -+ # Also added RSS and Atom feeds -hunk ./actions/twitapistatuses.php 203 -- $suplink = common_local_url('sup', NULL, $user->id); -- header('X-SUP-ID: '.$suplink); -+ $suplink = common_local_url('sup', NULL, $user->id); -+ header('X-SUP-ID: '.$suplink); -hunk ./actions/twitapistatuses.php 206 -- # XXX: since -+ # XXX: since -hunk ./actions/twitapistatuses.php 208 -- $notice = $user->getNotices((($page-1)*20), $count, $since_id, $before_id, $since); -+ $notice = $user->getNotices((($page-1)*20), $count, $since_id, $before_id, $since); -hunk ./actions/twitapistatuses.php 210 -- switch($apidata['content-type']) { -- case 'xml': -- $this->show_xml_timeline($notice); -- break; -- case 'rss': -- $this->show_rss_timeline($notice, $title, $link, $subtitle, $suplink); -- break; -- case 'atom': -- $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, $suplink); -- break; -- case 'json': -- $this->show_json_timeline($notice); -- break; -- default: -- common_user_error(_('API method not found!'), $code = 404); -- } -+ switch($apidata['content-type']) { -+ case 'xml': -+ $this->show_xml_timeline($notice); -+ break; -+ case 'rss': -+ $this->show_rss_timeline($notice, $title, $link, $subtitle, $suplink); -+ break; -+ case 'atom': -+ $this->show_atom_timeline($notice, $title, $id, $link, $subtitle, $suplink); -+ break; -+ case 'json': -+ $this->show_json_timeline($notice); -+ break; -+ default: -+ common_user_error(_('API method not found!'), $code = 404); -+ } -hunk ./actions/twitapistatuses.php 227 -- } -+ } -hunk ./actions/twitapistatuses.php 229 -- function update($args, $apidata) { -+ function update($args, $apidata) { -hunk ./actions/twitapistatuses.php 231 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 233 -- if (!in_array($apidata['content-type'], array('xml', 'json'))) { -- common_user_error(_('API method not found!'), $code = 404); -- return; -- } -+ if (!in_array($apidata['content-type'], array('xml', 'json'))) { -+ common_user_error(_('API method not found!'), $code = 404); -+ return; -+ } -hunk ./actions/twitapistatuses.php 238 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ $this->client_error(_('This method requires a POST.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapistatuses.php 243 -- $this->auth_user = $apidata['user']; -- $user = $this->auth_user; -- $status = $this->trimmed('status'); -- $source = $this->trimmed('source'); -- $in_reply_to_status_id = intval($this->trimmed('in_reply_to_status_id')); -+ $this->auth_user = $apidata['user']; -+ $user = $this->auth_user; -+ $status = $this->trimmed('status'); -+ $source = $this->trimmed('source'); -+ $in_reply_to_status_id = intval($this->trimmed('in_reply_to_status_id')); -hunk ./actions/twitapistatuses.php 249 -- if (!$source || in_array($source, $reserved_sources)) { -- $source = 'api'; -- } -+ if (!$source || in_array($source, $reserved_sources)) { -+ $source = 'api'; -+ } -hunk ./actions/twitapistatuses.php 253 -- if (!$status) { -+ if (!$status) { -hunk ./actions/twitapistatuses.php 255 -- // XXX: Note: In this case, Twitter simply returns '200 OK' -- // No error is given, but the status is not posted to the -- // user's timeline. Seems bad. Shouldn't we throw an -- // errror? -- Zach -- return; -+ // XXX: Note: In this case, Twitter simply returns '200 OK' -+ // No error is given, but the status is not posted to the -+ // user's timeline. Seems bad. Shouldn't we throw an -+ // errror? -- Zach -+ return; -hunk ./actions/twitapistatuses.php 261 -- } else { -+ } else { -hunk ./actions/twitapistatuses.php 263 -- $status_shortened = common_shorten_links($status); -+ $status_shortened = common_shorten_links($status); -hunk ./actions/twitapistatuses.php 265 -- if (mb_strlen($status_shortened) > 140) { -+ if (mb_strlen($status_shortened) > 140) { -hunk ./actions/twitapistatuses.php 267 -- // XXX: Twitter truncates anything over 140, flags the status -- // as "truncated." Sending this error may screw up some clients -- // that assume Twitter will truncate for them. Should we just -- // truncate too? -- Zach -- $this->client_error(_('That\'s too long. Max notice size is 140 chars.'), $code = 406, $apidata['content-type']); -- return; -+ // XXX: Twitter truncates anything over 140, flags the status -+ // as "truncated." Sending this error may screw up some clients -+ // that assume Twitter will truncate for them. Should we just -+ // truncate too? -- Zach -+ $this->client_error(_('That\'s too long. Max notice size is 140 chars.'), $code = 406, $apidata['content-type']); -+ return; -hunk ./actions/twitapistatuses.php 274 -- } -- } -+ } -+ } -hunk ./actions/twitapistatuses.php 277 -- // Check for commands -- $inter = new CommandInterpreter(); -- $cmd = $inter->handle_command($user, $status_shortened); -+ // Check for commands -+ $inter = new CommandInterpreter(); -+ $cmd = $inter->handle_command($user, $status_shortened); -hunk ./actions/twitapistatuses.php 281 -- if ($cmd) { -+ if ($cmd) { -hunk ./actions/twitapistatuses.php 283 -- if ($this->supported($cmd)) { -- $cmd->execute(new Channel()); -- } -+ if ($this->supported($cmd)) { -+ $cmd->execute(new Channel()); -+ } -hunk ./actions/twitapistatuses.php 287 -- // cmd not supported? Twitter just returns your latest status. -- // And, it returns your last status whether the cmd was successful -- // or not! -- $n = $user->getCurrentNotice(); -- $apidata['api_arg'] = $n->id; -- } else { -+ // cmd not supported? Twitter just returns your latest status. -+ // And, it returns your last status whether the cmd was successful -+ // or not! -+ $n = $user->getCurrentNotice(); -+ $apidata['api_arg'] = $n->id; -+ } else { -hunk ./actions/twitapistatuses.php 294 -- $reply_to = NULL; -+ $reply_to = NULL; -hunk ./actions/twitapistatuses.php 296 -- if ($in_reply_to_status_id) { -+ if ($in_reply_to_status_id) { -hunk ./actions/twitapistatuses.php 298 -- // check whether notice actually exists -- $reply = Notice::staticGet($in_reply_to_status_id); -+ // check whether notice actually exists -+ $reply = Notice::staticGet($in_reply_to_status_id); -hunk ./actions/twitapistatuses.php 301 -- if ($reply) { -- $reply_to = $in_reply_to_status_id; -- } else { -- $this->client_error(_('Not found'), $code = 404, $apidata['content-type']); -- return; -- } -- } -+ if ($reply) { -+ $reply_to = $in_reply_to_status_id; -+ } else { -+ $this->client_error(_('Not found'), $code = 404, $apidata['content-type']); -+ return; -+ } -+ } -hunk ./actions/twitapistatuses.php 309 -- $notice = Notice::saveNew($user->id, html_entity_decode($status, ENT_NOQUOTES, 'UTF-8'), -- $source, 1, $reply_to); -+ $notice = Notice::saveNew($user->id, html_entity_decode($status, ENT_NOQUOTES, 'UTF-8'), -+ $source, 1, $reply_to); -hunk ./actions/twitapistatuses.php 312 -- if (is_string($notice)) { -- $this->server_error($notice); -- return; -- } -+ if (is_string($notice)) { -+ $this->server_error($notice); -+ return; -+ } -hunk ./actions/twitapistatuses.php 317 -- common_broadcast_notice($notice); -- $apidata['api_arg'] = $notice->id; -- } -+ common_broadcast_notice($notice); -+ $apidata['api_arg'] = $notice->id; -+ } -hunk ./actions/twitapistatuses.php 321 -- $this->show($args, $apidata); -- } -+ $this->show($args, $apidata); -+ } -hunk ./actions/twitapistatuses.php 324 -- function replies($args, $apidata) { -+ function replies($args, $apidata) { -hunk ./actions/twitapistatuses.php 326 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 328 -- $since = $this->arg('since'); -- $count = $this->arg('count'); -- $page = $this->arg('page'); -- $since_id = $this->arg('since_id'); -- $before_id = $this->arg('before_id'); -+ $since = $this->arg('since'); -+ $count = $this->arg('count'); -+ $page = $this->arg('page'); -+ $since_id = $this->arg('since_id'); -+ $before_id = $this->arg('before_id'); -hunk ./actions/twitapistatuses.php 334 -- $this->auth_user = $apidata['user']; -- $user = $this->auth_user; -- $profile = $user->getProfile(); -+ $this->auth_user = $apidata['user']; -+ $user = $this->auth_user; -+ $profile = $user->getProfile(); -hunk ./actions/twitapistatuses.php 338 -- $sitename = common_config('site', 'name'); -- $siteserver = common_config('site', 'server'); -+ $sitename = common_config('site', 'name'); -+ $siteserver = common_config('site', 'server'); -hunk ./actions/twitapistatuses.php 341 -- $title = sprintf(_('%1$s / Updates replying to %2$s'), $sitename, $user->nickname); -- $id = "tag:$siteserver:replies:".$user->id; -- $link = common_local_url('replies', array('nickname' => $user->nickname)); -- $subtitle = sprintf(_('%1$s updates that reply to updates from %2$s / %3$s.'), $sitename, $user->nickname, $profile->getBestName()); -+ $title = sprintf(_('%1$s / Updates replying to %2$s'), $sitename, $user->nickname); -+ $id = "tag:$siteserver:replies:".$user->id; -+ $link = common_local_url('replies', array('nickname' => $user->nickname)); -+ $subtitle = sprintf(_('%1$s updates that reply to updates from %2$s / %3$s.'), $sitename, $user->nickname, $profile->getBestName()); -hunk ./actions/twitapistatuses.php 346 -- if (!$page) { -- $page = 1; -- } -+ if (!$page) { -+ $page = 1; -+ } -hunk ./actions/twitapistatuses.php 350 -- if (!$count) { -- $count = 20; -- } -+ if (!$count) { -+ $count = 20; -+ } -hunk ./actions/twitapistatuses.php 354 -- if (!$since_id) { -- $since_id = 0; -- } -+ if (!$since_id) { -+ $since_id = 0; -+ } -hunk ./actions/twitapistatuses.php 358 -- // NOTE: before_id is an extension to Twitter API -- TB -- if (!$before_id) { -- $before_id = 0; -- } -+ // NOTE: before_id is an extension to Twitter API -- TB -+ if (!$before_id) { -+ $before_id = 0; -+ } -hunk ./actions/twitapistatuses.php 363 -- $since = strtotime($this->arg('since')); -+ $since = strtotime($this->arg('since')); -hunk ./actions/twitapistatuses.php 365 -- $notice = $user->getReplies((($page-1)*20), $count, $since_id, $before_id, $since); -- $notices = array(); -+ $notice = $user->getReplies((($page-1)*20), $count, $since_id, $before_id, $since); -+ $notices = array(); -hunk ./actions/twitapistatuses.php 368 -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./actions/twitapistatuses.php 372 -- switch($apidata['content-type']) { -- case 'xml': -- $this->show_xml_timeline($notices); -- break; -- case 'rss': -- $this->show_rss_timeline($notices, $title, $link, $subtitle); -- break; -- case 'atom': -- $this->show_atom_timeline($notices, $title, $id, $link, $subtitle); -- break; -- case 'json': -- $this->show_json_timeline($notices); -- break; -- default: -- common_user_error(_('API method not found!'), $code = 404); -- } -+ switch($apidata['content-type']) { -+ case 'xml': -+ $this->show_xml_timeline($notices); -+ break; -+ case 'rss': -+ $this->show_rss_timeline($notices, $title, $link, $subtitle); -+ break; -+ case 'atom': -+ $this->show_atom_timeline($notices, $title, $id, $link, $subtitle); -+ break; -+ case 'json': -+ $this->show_json_timeline($notices); -+ break; -+ default: -+ common_user_error(_('API method not found!'), $code = 404); -+ } -hunk ./actions/twitapistatuses.php 389 -- } -+ } -hunk ./actions/twitapistatuses.php 391 -- function show($args, $apidata) { -- parent::handle($args); -+ function show($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 394 -- if (!in_array($apidata['content-type'], array('xml', 'json'))) { -- common_user_error(_('API method not found!'), $code = 404); -- return; -- } -+ if (!in_array($apidata['content-type'], array('xml', 'json'))) { -+ common_user_error(_('API method not found!'), $code = 404); -+ return; -+ } -hunk ./actions/twitapistatuses.php 399 -- $this->auth_user = $apidata['user']; -- $notice_id = $apidata['api_arg']; -- $notice = Notice::staticGet($notice_id); -+ $this->auth_user = $apidata['user']; -+ $notice_id = $apidata['api_arg']; -+ $notice = Notice::staticGet($notice_id); -hunk ./actions/twitapistatuses.php 403 -- if ($notice) { -- if ($apidata['content-type'] == 'xml') { -- $this->show_single_xml_status($notice); -- } elseif ($apidata['content-type'] == 'json') { -- $this->show_single_json_status($notice); -- } -- } else { -- // XXX: Twitter just sets a 404 header and doens't bother to return an err msg -- $this->client_error(_('No status with that ID found.'), 404, $apidata['content-type']); -- } -+ if ($notice) { -+ if ($apidata['content-type'] == 'xml') { -+ $this->show_single_xml_status($notice); -+ } elseif ($apidata['content-type'] == 'json') { -+ $this->show_single_json_status($notice); -+ } -+ } else { -+ // XXX: Twitter just sets a 404 header and doens't bother to return an err msg -+ $this->client_error(_('No status with that ID found.'), 404, $apidata['content-type']); -+ } -hunk ./actions/twitapistatuses.php 414 -- } -+ } -hunk ./actions/twitapistatuses.php 416 -- function destroy($args, $apidata) { -+ function destroy($args, $apidata) { -hunk ./actions/twitapistatuses.php 418 -- parent::handle($args); -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 420 -- if (!in_array($apidata['content-type'], array('xml', 'json'))) { -- common_user_error(_('API method not found!'), $code = 404); -- return; -- } -+ if (!in_array($apidata['content-type'], array('xml', 'json'))) { -+ common_user_error(_('API method not found!'), $code = 404); -+ return; -+ } -hunk ./actions/twitapistatuses.php 425 -- // Check for RESTfulness -- if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { -- // XXX: Twitter just prints the err msg, no XML / JSON. -- $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']); -- return; -- } -+ // Check for RESTfulness -+ if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { -+ // XXX: Twitter just prints the err msg, no XML / JSON. -+ $this->client_error(_('This method requires a POST or DELETE.'), 400, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapistatuses.php 432 -- $this->auth_user = $apidata['user']; -- $user = $this->auth_user; -- $notice_id = $apidata['api_arg']; -- $notice = Notice::staticGet($notice_id); -+ $this->auth_user = $apidata['user']; -+ $user = $this->auth_user; -+ $notice_id = $apidata['api_arg']; -+ $notice = Notice::staticGet($notice_id); -hunk ./actions/twitapistatuses.php 437 -- if (!$notice) { -- $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']); -- return; -- } -+ if (!$notice) { -+ $this->client_error(_('No status found with that ID.'), 404, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapistatuses.php 442 -- if ($user->id == $notice->profile_id) { -- $replies = new Reply; -- $replies->get('notice_id', $notice_id); -- common_dequeue_notice($notice); -- $replies->delete(); -- $notice->delete(); -+ if ($user->id == $notice->profile_id) { -+ $replies = new Reply; -+ $replies->get('notice_id', $notice_id); -+ common_dequeue_notice($notice); -+ $replies->delete(); -+ $notice->delete(); -hunk ./actions/twitapistatuses.php 449 -- if ($apidata['content-type'] == 'xml') { -- $this->show_single_xml_status($notice); -- } elseif ($apidata['content-type'] == 'json') { -- $this->show_single_json_status($notice); -- } -- } else { -- $this->client_error(_('You may not delete another user\'s status.'), 403, $apidata['content-type']); -- } -+ if ($apidata['content-type'] == 'xml') { -+ $this->show_single_xml_status($notice); -+ } elseif ($apidata['content-type'] == 'json') { -+ $this->show_single_json_status($notice); -+ } -+ } else { -+ $this->client_error(_('You may not delete another user\'s status.'), 403, $apidata['content-type']); -+ } -hunk ./actions/twitapistatuses.php 458 -- } -+ } -hunk ./actions/twitapistatuses.php 460 -- function friends($args, $apidata) { -- parent::handle($args); -- return $this->subscriptions($apidata, 'subscribed', 'subscriber'); -- } -+ function friends($args, $apidata) { -+ parent::handle($args); -+ return $this->subscriptions($apidata, 'subscribed', 'subscriber'); -+ } -hunk ./actions/twitapistatuses.php 465 -- function followers($args, $apidata) { -- parent::handle($args); -+ function followers($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapistatuses.php 468 -- return $this->subscriptions($apidata, 'subscriber', 'subscribed'); -- } -+ return $this->subscriptions($apidata, 'subscriber', 'subscribed'); -+ } -hunk ./actions/twitapistatuses.php 471 -- function subscriptions($apidata, $other_attr, $user_attr) { -+ function subscriptions($apidata, $other_attr, $user_attr) { -hunk ./actions/twitapistatuses.php 473 -- # XXX: lite -+ # XXX: lite -hunk ./actions/twitapistatuses.php 475 -- $this->auth_user = $apidate['user']; -- $user = $this->get_user($apidata['api_arg'], $apidata); -+ $this->auth_user = $apidate['user']; -+ $user = $this->get_user($apidata['api_arg'], $apidata); -hunk ./actions/twitapistatuses.php 478 -- if (!$user) { -- $this->client_error('Not Found', 404, $apidata['content-type']); -- return; -- } -+ if (!$user) { -+ $this->client_error('Not Found', 404, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapistatuses.php 483 -- $page = $this->trimmed('page'); -+ $page = $this->trimmed('page'); -hunk ./actions/twitapistatuses.php 485 -- if (!$page || !is_numeric($page)) { -- $page = 1; -- } -+ if (!$page || !is_numeric($page)) { -+ $page = 1; -+ } -hunk ./actions/twitapistatuses.php 489 -- $profile = $user->getProfile(); -+ $profile = $user->getProfile(); -hunk ./actions/twitapistatuses.php 491 -- if (!$profile) { -- common_server_error(_('User has no profile.')); -- return; -- } -+ if (!$profile) { -+ common_server_error(_('User has no profile.')); -+ return; -+ } -hunk ./actions/twitapistatuses.php 496 -- $sub = new Subscription(); -- $sub->$user_attr = $profile->id; -+ $sub = new Subscription(); -+ $sub->$user_attr = $profile->id; -hunk ./actions/twitapistatuses.php 499 -- $since = strtotime($this->trimmed('since')); -+ $since = strtotime($this->trimmed('since')); -hunk ./actions/twitapistatuses.php 501 -- if ($since) { -- $d = date('Y-m-d H:i:s', $since); -- $sub->whereAdd("created > '$d'"); -- } -+ if ($since) { -+ $d = date('Y-m-d H:i:s', $since); -+ $sub->whereAdd("created > '$d'"); -+ } -hunk ./actions/twitapistatuses.php 506 -- $sub->orderBy('created DESC'); -- $sub->limit(($page-1)*100, 100); -+ $sub->orderBy('created DESC'); -+ $sub->limit(($page-1)*100, 100); -hunk ./actions/twitapistatuses.php 509 -- $others = array(); -+ $others = array(); -hunk ./actions/twitapistatuses.php 511 -- if ($sub->find()) { -- while ($sub->fetch()) { -- $others[] = Profile::staticGet($sub->$other_attr); -- } -- } else { -- // user has no followers -- } -+ if ($sub->find()) { -+ while ($sub->fetch()) { -+ $others[] = Profile::staticGet($sub->$other_attr); -+ } -+ } else { -+ // user has no followers -+ } -hunk ./actions/twitapistatuses.php 519 -- $type = $apidata['content-type']; -+ $type = $apidata['content-type']; -hunk ./actions/twitapistatuses.php 521 -- $this->init_document($type); -- $this->show_profiles($others, $type); -- $this->end_document($type); -- } -+ $this->init_document($type); -+ $this->show_profiles($others, $type); -+ $this->end_document($type); -+ } -hunk ./actions/twitapistatuses.php 526 -- function show_profiles($profiles, $type) { -- switch ($type) { -- case 'xml': -- common_element_start('users', array('type' => 'array')); -- foreach ($profiles as $profile) { -- $this->show_profile($profile); -- } -- common_element_end('users'); -- break; -- case 'json': -- $arrays = array(); -- foreach ($profiles as $profile) { -- $arrays[] = $this->twitter_user_array($profile, true); -- } -- print json_encode($arrays); -- break; -- default: -- $this->client_error(_('unsupported file type')); -- } -- } -+ function show_profiles($profiles, $type) { -+ switch ($type) { -+ case 'xml': -+ common_element_start('users', array('type' => 'array')); -+ foreach ($profiles as $profile) { -+ $this->show_profile($profile); -+ } -+ common_element_end('users'); -+ break; -+ case 'json': -+ $arrays = array(); -+ foreach ($profiles as $profile) { -+ $arrays[] = $this->twitter_user_array($profile, true); -+ } -+ print json_encode($arrays); -+ break; -+ default: -+ $this->client_error(_('unsupported file type')); -+ } -+ } -hunk ./actions/twitapistatuses.php 547 -- function featured($args, $apidata) { -- parent::handle($args); -- common_server_error(_('API method under construction.'), $code=501); -- } -+ function featured($args, $apidata) { -+ parent::handle($args); -+ common_server_error(_('API method under construction.'), $code=501); -+ } -hunk ./actions/twitapistatuses.php 552 -- function supported($cmd) { -+ function supported($cmd) { -hunk ./actions/twitapistatuses.php 554 -- $cmdlist = array('MessageCommand', 'SubCommand', 'UnsubCommand', 'FavCommand', 'OnCommand', 'OffCommand'); -+ $cmdlist = array('MessageCommand', 'SubCommand', 'UnsubCommand', 'FavCommand', 'OnCommand', 'OffCommand'); -hunk ./actions/twitapistatuses.php 556 -- if (in_array(get_class($cmd), $cmdlist)) { -- return true; -- } -+ if (in_array(get_class($cmd), $cmdlist)) { -+ return true; -+ } -hunk ./actions/twitapistatuses.php 560 -- return false; -- } -+ return false; -+ } -hunk ./actions/twitapiusers.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./actions/twitapiusers.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./actions/twitapiusers.php 26 -- function show($args, $apidata) { -- parent::handle($args); -+ function show($args, $apidata) { -+ parent::handle($args); -hunk ./actions/twitapiusers.php 29 -- if (!in_array($apidata['content-type'], array('xml', 'json'))) { -- common_user_error(_('API method not found!'), $code = 404); -- return; -- } -+ if (!in_array($apidata['content-type'], array('xml', 'json'))) { -+ common_user_error(_('API method not found!'), $code = 404); -+ return; -+ } -hunk ./actions/twitapiusers.php 34 -- $user = null; -- $email = $this->arg('email'); +- function show_form($err=NULL) { ++ function show_form($err=null) { +hunk ./actions/remotesubscribe.php 73 +- common_show_header(_('Remote subscribe'), NULL, $err, ++ common_show_header(_('Remote subscribe'), null, $err, +hunk ./actions/remotesubscribe.php 156 +- $user = NULL; + $user = null; -+ $email = $this->arg('email'); -hunk ./actions/twitapiusers.php 37 -- if ($email) { -- $user = User::staticGet('email', $email); -- } elseif (isset($apidata['api_arg'])) { -- $user = $this->get_user($apidata['api_arg']); -- } -+ if ($email) { -+ $user = User::staticGet('email', $email); -+ } elseif (isset($apidata['api_arg'])) { -+ $user = $this->get_user($apidata['api_arg']); -+ } -hunk ./actions/twitapiusers.php 43 -- if (!$user) { -- // XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach -- $this->client_error(_('Not found.'), 404, $apidata['content-type']); -- return; -- } -+ if (!$user) { -+ // XXX: Twitter returns a random(?) user instead of throwing and err! -- Zach -+ $this->client_error(_('Not found.'), 404, $apidata['content-type']); -+ return; -+ } -hunk ./actions/twitapiusers.php 49 -- $this->show_extended_profile($user, $apidata); -- } -+ $this->show_extended_profile($user, $apidata); -+ } -hunk ./actions/twittersettings.php 28 -- function get_instructions() { -- return _('Add your Twitter account to automatically send your notices to Twitter, ' . -- 'and subscribe to Twitter friends already here.'); -- } -+ function get_instructions() { -+ return _('Add your Twitter account to automatically send your notices to Twitter, ' . -+ 'and subscribe to Twitter friends already here.'); -+ } +hunk ./actions/remotesubscribe.php 176 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 184 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 188 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 194 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 202 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 206 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 213 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 218 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 228 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 242 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 270 +- $req = OAuthRequest::from_consumer_and_token($con, NULL, "POST", $url, $params); ++ $req = OAuthRequest::from_consumer_and_token($con, null, "POST", $url, $params); +hunk ./actions/remotesubscribe.php 275 +- return NULL; ++ return null; +hunk ./actions/remotesubscribe.php 283 +- $req->sign_request(omb_hmac_sha1(), $con, NULL); ++ $req->sign_request(omb_hmac_sha1(), $con, null); +hunk ./actions/remotesubscribe.php 294 +- return NULL; ++ return null; +hunk ./actions/repliesrss.php 28 +- var $user = NULL; ++ var $user = null; +hunk ./actions/repliesrss.php 74 +- return NULL; ++ return null; +hunk ./actions/repliesrss.php 77 +- return ($avatar) ? $avatar->url : NULL; ++ return ($avatar) ? $avatar->url : null; +hunk ./actions/showmessage.php 56 +- return NULL; ++ return null; +hunk ./actions/showmessage.php 88 +- return NULL; ++ return null; +hunk ./actions/shownotice.php 26 +- var $notice = NULL; +- var $profile = NULL; +- var $avatar = NULL; ++ var $notice = null; ++ var $profile = null; ++ var $avatar = null; +hunk ./actions/shownotice.php 76 +- array($this, 'show_header'), NULL, ++ array($this, 'show_header'), null, +hunk ./actions/showstream.php 288 +- common_element('h2', NULL, _('Subscriptions')); ++ common_element('h2', null, _('Subscriptions')); +hunk ./actions/showstream.php 418 +- common_element('h2', NULL, _('Currently')); ++ common_element('h2', null, _('Currently')); +hunk ./actions/smssettings.php 31 +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { +hunk ./actions/smssettings.php 39 +- common_element('h2', NULL, _('Address')); ++ common_element('h2', null, _('Address')); +hunk ./actions/smssettings.php 63 +- common_input('code', _('Confirmation code'), NULL, ++ common_input('code', _('Confirmation code'), null, +hunk ./actions/smssettings.php 68 +- ($this->arg('sms')) ? $this->arg('sms') : NULL, ++ ($this->arg('sms')) ? $this->arg('sms') : null, +hunk ./actions/smssettings.php 76 +- common_element('h2', NULL, _('Incoming email')); ++ common_element('h2', null, _('Incoming email')); +hunk ./actions/smssettings.php 94 +- common_element('h2', NULL, _('Preferences')); ++ common_element('h2', null, _('Preferences')); +hunk ./actions/smssettings.php 114 +- return NULL; ++ return null; +hunk ./actions/smssettings.php 271 +- $user->sms = NULL; +- $user->carrier = NULL; +- $user->smsemail = NULL; ++ $user->sms = null; ++ $user->carrier = null; ++ $user->smsemail = null; +hunk ./actions/subedit.php 24 +- var $profile = NULL; ++ var $profile = null; +hunk ./actions/tagother.php 52 +- function show_form($profile, $error=NULL) { ++ function show_form($profile, $error=null) { +hunk ./actions/tagother.php 57 +- NULL, array($profile, $error), array($this, 'show_top')); ++ null, array($profile, $error), array($this, 'show_top')); +hunk ./actions/tagother.php 181 +- function show_top($arr = NULL) { ++ function show_top($arr = null) { +hunk ./actions/tagother.php 187 +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/tagrss.php 44 +- return NULL; ++ return null; +hunk ./actions/twitapidirect_messages.php 231 +- common_element('title', NULL, $title); ++ common_element('title', null, $title); +hunk ./actions/twitapidirect_messages.php 233 +- common_element('link', NULL, $link); +- common_element('description', NULL, $subtitle); +- common_element('language', NULL, 'en-us'); +- common_element('ttl', NULL, '40'); ++ common_element('link', null, $link); ++ common_element('description', null, $subtitle); ++ common_element('language', null, 'en-us'); ++ common_element('ttl', null, '40'); +hunk ./actions/twitapidirect_messages.php 259 +- common_element('title', NULL, $title); ++ common_element('title', null, $title); +hunk ./actions/twitapidirect_messages.php 261 +- common_element('id', NULL, "tag:$siteserver,2008:DirectMessage"); +- common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), NULL); +- common_element('updated', NULL, common_date_iso8601(strftime('%c'))); +- common_element('subtitle', NULL, $subtitle); ++ common_element('id', null, "tag:$siteserver,2008:DirectMessage"); ++ common_element('link', array('href' => $link, 'rel' => 'alternate', 'type' => 'text/html'), null); ++ common_element('updated', null, common_date_iso8601(strftime('%c'))); ++ common_element('subtitle', null, $subtitle); +hunk ./actions/twitapifriendships.php 141 +- common_element('friends', NULL, $result); ++ common_element('friends', null, $result); +hunk ./actions/twitapihelp.php 35 +- common_element('ok', NULL, 'true'); ++ common_element('ok', null, 'true'); +hunk ./actions/twitapistatuses.php 115 +- $user = $this->get_user(NULL, $apidata); ++ $user = $this->get_user(null, $apidata); +hunk ./actions/twitapistatuses.php 203 +- $suplink = common_local_url('sup', NULL, $user->id); ++ $suplink = common_local_url('sup', null, $user->id); +hunk ./actions/twitapistatuses.php 294 +- $reply_to = NULL; ++ $reply_to = null; hunk ./actions/twittersettings.php 33 -- function show_form($msg=NULL, $success=false) { -- $user = common_current_user(); -- $profile = $user->getProfile(); -- $fuser = NULL; -- $flink = Foreign_link::getByUserID($user->id, 1); // 1 == Twitter -+ function show_form($msg=NULL, $success=false) { -+ $user = common_current_user(); -+ $profile = $user->getProfile(); -+ $fuser = NULL; -+ $flink = Foreign_link::getByUserID($user->id, 1); // 1 == Twitter -hunk ./actions/twittersettings.php 39 -- if ($flink) { -- $fuser = $flink->getForeignUser(); -- } -+ if ($flink) { -+ $fuser = $flink->getForeignUser(); -+ } -hunk ./actions/twittersettings.php 43 -- $this->form_header(_('Twitter settings'), $msg, $success); -- common_element_start('form', array('method' => 'post', -- 'id' => 'twittersettings', -- 'action' => -- common_local_url('twittersettings'))); -- common_hidden('token', common_session_token()); -+ $this->form_header(_('Twitter settings'), $msg, $success); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'twittersettings', -+ 'action' => -+ common_local_url('twittersettings'))); -+ common_hidden('token', common_session_token()); +- function show_form($msg=NULL, $success=false) { ++ function show_form($msg=null, $success=false) { +hunk ./actions/twittersettings.php 36 +- $fuser = NULL; ++ $fuser = null; hunk ./actions/twittersettings.php 50 -- common_element('h2', NULL, _('Twitter Account')); -+ common_element('h2', NULL, _('Twitter Account')); -hunk ./actions/twittersettings.php 52 -- if ($fuser) { -- common_element_start('p'); -+ if ($fuser) { -+ common_element_start('p'); -hunk ./actions/twittersettings.php 55 -- common_element('span', 'twitter_user', $fuser->nickname); -- common_element('a', array('href' => $fuser->uri), $fuser->uri); -- common_element('span', 'input_instructions', -- _('Current verified Twitter account.')); -- common_hidden('flink_foreign_id', $flink->foreign_id); -- common_element_end('p'); -- common_submit('remove', _('Remove')); -- } else { -- common_input('twitter_username', _('Twitter user name'), -- ($this->arg('twitter_username')) ? $this->arg('twitter_username') : $profile->nickname, -- _('No spaces, please.')); // hey, it's what Twitter says -+ common_element('span', 'twitter_user', $fuser->nickname); -+ common_element('a', array('href' => $fuser->uri), $fuser->uri); -+ common_element('span', 'input_instructions', -+ _('Current verified Twitter account.')); -+ common_hidden('flink_foreign_id', $flink->foreign_id); -+ common_element_end('p'); -+ common_submit('remove', _('Remove')); -+ } else { -+ common_input('twitter_username', _('Twitter user name'), -+ ($this->arg('twitter_username')) ? $this->arg('twitter_username') : $profile->nickname, -+ _('No spaces, please.')); // hey, it's what Twitter says -hunk ./actions/twittersettings.php 67 -- common_password('twitter_password', _('Twitter password')); -- } -+ common_password('twitter_password', _('Twitter password')); -+ } +- common_element('h2', NULL, _('Twitter Account')); ++ common_element('h2', null, _('Twitter Account')); hunk ./actions/twittersettings.php 70 -- common_element('h2', NULL, _('Preferences')); -+ common_element('h2', NULL, _('Preferences')); -hunk ./actions/twittersettings.php 72 -- common_checkbox('noticesync', _('Automatically send my notices to Twitter.'), -- ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND) : true); -+ common_checkbox('noticesync', _('Automatically send my notices to Twitter.'), -+ ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND) : true); -hunk ./actions/twittersettings.php 75 -- common_checkbox('replysync', _('Send local "@" replies to Twitter.'), -- ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true); -+ common_checkbox('replysync', _('Send local "@" replies to Twitter.'), -+ ($flink) ? ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true); -hunk ./actions/twittersettings.php 78 -- common_checkbox('friendsync', _('Subscribe to my Twitter friends here.'), -- ($flink) ? ($flink->friendsync & FOREIGN_FRIEND_RECV) : false); -+ common_checkbox('friendsync', _('Subscribe to my Twitter friends here.'), -+ ($flink) ? ($flink->friendsync & FOREIGN_FRIEND_RECV) : false); -hunk ./actions/twittersettings.php 81 -- if ($flink) { -- common_submit('save', _('Save')); -- } else { -- common_submit('add', _('Add')); -- } -+ if ($flink) { -+ common_submit('save', _('Save')); -+ } else { -+ common_submit('add', _('Add')); -+ } -hunk ./actions/twittersettings.php 87 -- $this->show_twitter_subscriptions(); -+ $this->show_twitter_subscriptions(); -hunk ./actions/twittersettings.php 89 -- common_element_end('form'); -+ common_element_end('form'); -hunk ./actions/twittersettings.php 91 -- common_show_footer(); -- } -+ common_show_footer(); -+ } -hunk ./actions/twittersettings.php 94 -- function subscribed_twitter_users() { -+ function subscribed_twitter_users() { -hunk ./actions/twittersettings.php 96 -- $current_user = common_current_user(); -+ $current_user = common_current_user(); -hunk ./actions/twittersettings.php 98 -- $qry = 'SELECT user.* ' . -- 'FROM subscription ' . -- 'JOIN user ON subscription.subscribed = user.id ' . -- 'JOIN foreign_link ON foreign_link.user_id = user.id ' . -- 'WHERE subscriber = %d ' . -- 'ORDER BY user.nickname'; -+ $qry = 'SELECT user.* ' . -+ 'FROM subscription ' . -+ 'JOIN user ON subscription.subscribed = user.id ' . -+ 'JOIN foreign_link ON foreign_link.user_id = user.id ' . -+ 'WHERE subscriber = %d ' . -+ 'ORDER BY user.nickname'; -hunk ./actions/twittersettings.php 105 -- $user = new User(); -+ $user = new User(); -hunk ./actions/twittersettings.php 107 -- $user->query(sprintf($qry, $current_user->id)); -+ $user->query(sprintf($qry, $current_user->id)); -hunk ./actions/twittersettings.php 109 -- $users = array(); -+ $users = array(); -hunk ./actions/twittersettings.php 111 -- while ($user->fetch()) { -+ while ($user->fetch()) { -hunk ./actions/twittersettings.php 113 -- // Don't include the user's own self-subscription -- if ($user->id != $current_user->id) { -- $users[] = clone($user); -- } -- } -+ // Don't include the user's own self-subscription -+ if ($user->id != $current_user->id) { -+ $users[] = clone($user); -+ } -+ } -hunk ./actions/twittersettings.php 119 -- return $users; -- } -+ return $users; -+ } -hunk ./actions/twittersettings.php 122 -- function show_twitter_subscriptions() { -+ function show_twitter_subscriptions() { -hunk ./actions/twittersettings.php 124 -- $friends = $this->subscribed_twitter_users(); -- $friends_count = count($friends); -+ $friends = $this->subscribed_twitter_users(); -+ $friends_count = count($friends); -hunk ./actions/twittersettings.php 127 -- if ($friends_count > 0) { -+ if ($friends_count > 0) { +- common_element('h2', NULL, _('Preferences')); ++ common_element('h2', null, _('Preferences')); hunk ./actions/twittersettings.php 129 -- common_element('h3', NULL, _('Twitter Friends')); -- common_element_start('div', array('id' => 'subscriptions')); -- common_element_start('ul', array('id' => 'subscriptions_avatars')); -+ common_element('h3', NULL, _('Twitter Friends')); -+ common_element_start('div', array('id' => 'subscriptions')); -+ common_element_start('ul', array('id' => 'subscriptions_avatars')); -hunk ./actions/twittersettings.php 133 -- for ($i = 0; $i < min($friends_count, SUBSCRIPTIONS); $i++) { -+ for ($i = 0; $i < min($friends_count, SUBSCRIPTIONS); $i++) { -hunk ./actions/twittersettings.php 135 -- $other = Profile::staticGet($friends[$i]->id); -+ $other = Profile::staticGet($friends[$i]->id); -hunk ./actions/twittersettings.php 137 -- if (!$other) { -- common_log_db_error($subs, 'SELECT', __FILE__); -- continue; -- } -+ if (!$other) { -+ common_log_db_error($subs, 'SELECT', __FILE__); -+ continue; -+ } -hunk ./actions/twittersettings.php 142 -- common_element_start('li'); -- common_element_start('a', array('title' => ($other->fullname) ? -- $other->fullname : -- $other->nickname, -- 'href' => $other->profileurl, -- 'rel' => 'contact', -- 'class' => 'subscription')); -- $avatar = $other->getAvatar(AVATAR_MINI_SIZE); -- common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)), -- 'width' => AVATAR_MINI_SIZE, -- 'height' => AVATAR_MINI_SIZE, -- 'class' => 'avatar mini', -- 'alt' => ($other->fullname) ? -- $other->fullname : -- $other->nickname)); -- common_element_end('a'); -- common_element_end('li'); -+ common_element_start('li'); -+ common_element_start('a', array('title' => ($other->fullname) ? -+ $other->fullname : -+ $other->nickname, -+ 'href' => $other->profileurl, -+ 'rel' => 'contact', -+ 'class' => 'subscription')); -+ $avatar = $other->getAvatar(AVATAR_MINI_SIZE); -+ common_element('img', array('src' => (($avatar) ? common_avatar_display_url($avatar) : common_default_avatar(AVATAR_MINI_SIZE)), -+ 'width' => AVATAR_MINI_SIZE, -+ 'height' => AVATAR_MINI_SIZE, -+ 'class' => 'avatar mini', -+ 'alt' => ($other->fullname) ? -+ $other->fullname : -+ $other->nickname)); -+ common_element_end('a'); -+ common_element_end('li'); -hunk ./actions/twittersettings.php 160 -- } -+ } -hunk ./actions/twittersettings.php 162 -- common_element_end('ul'); -- common_element_end('div'); -+ common_element_end('ul'); -+ common_element_end('div'); -hunk ./actions/twittersettings.php 165 -- } -+ } -hunk ./actions/twittersettings.php 167 -- // XXX Figure out a way to show all Twitter friends... ? -+ // XXX Figure out a way to show all Twitter friends... ? -hunk ./actions/twittersettings.php 169 -- /* -- if ($subs_count > SUBSCRIPTIONS) { -- common_element_start('p', array('id' => 'subscriptions_viewall')); -+ /* -+ if ($subs_count > SUBSCRIPTIONS) { -+ common_element_start('p', array('id' => 'subscriptions_viewall')); -hunk ./actions/twittersettings.php 173 -- common_element('a', array('href' => common_local_url('subscriptions', -- array('nickname' => $profile->nickname)), -- 'class' => 'moresubscriptions'), -- _('All subscriptions')); -- common_element_end('p'); -- } -- */ -+ common_element('a', array('href' => common_local_url('subscriptions', -+ array('nickname' => $profile->nickname)), -+ 'class' => 'moresubscriptions'), -+ _('All subscriptions')); -+ common_element_end('p'); -+ } -+ */ -hunk ./actions/twittersettings.php 181 -- } -+ } -hunk ./actions/twittersettings.php 183 -- function handle_post() { -+ function handle_post() { -hunk ./actions/twittersettings.php 185 -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $this->show_form(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $this->show_form(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/twittersettings.php 192 -- if ($this->arg('save')) { -- $this->save_preferences(); -- } else if ($this->arg('add')) { -- $this->add_twitter_acct(); -- } else if ($this->arg('remove')) { -- $this->remove_twitter_acct(); -- } else { -- $this->show_form(_('Unexpected form submission.')); -- } -- } -+ if ($this->arg('save')) { -+ $this->save_preferences(); -+ } else if ($this->arg('add')) { -+ $this->add_twitter_acct(); -+ } else if ($this->arg('remove')) { -+ $this->remove_twitter_acct(); -+ } else { -+ $this->show_form(_('Unexpected form submission.')); -+ } -+ } -hunk ./actions/twittersettings.php 203 -- function add_twitter_acct() { -+ function add_twitter_acct() { -hunk ./actions/twittersettings.php 205 -- $screen_name = $this->trimmed('twitter_username'); -- $password = $this->trimmed('twitter_password'); -- $noticesync = $this->boolean('noticesync'); -- $replysync = $this->boolean('replysync'); -- $friendsync = $this->boolean('friendsync'); -+ $screen_name = $this->trimmed('twitter_username'); -+ $password = $this->trimmed('twitter_password'); -+ $noticesync = $this->boolean('noticesync'); -+ $replysync = $this->boolean('replysync'); -+ $friendsync = $this->boolean('friendsync'); -hunk ./actions/twittersettings.php 211 -- if (!Validate::string($screen_name, -- array( 'min_length' => 1, -- 'max_length' => 15, -- 'format' => VALIDATE_NUM . VALIDATE_ALPHA . '_'))) { -- $this->show_form( -- _('Username must have only numbers, upper- and lowercase letters, and underscore (_). 15 chars max.')); -- return; -- } -+ if (!Validate::string($screen_name, -+ array( 'min_length' => 1, -+ 'max_length' => 15, -+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA . '_'))) { -+ $this->show_form( -+ _('Username must have only numbers, upper- and lowercase letters, and underscore (_). 15 chars max.')); -+ return; -+ } -hunk ./actions/twittersettings.php 220 -- if (!$this->verify_credentials($screen_name, $password)) { -- $this->show_form(_('Could not verify your Twitter credentials!')); -- return; -- } -+ if (!$this->verify_credentials($screen_name, $password)) { -+ $this->show_form(_('Could not verify your Twitter credentials!')); -+ return; -+ } -hunk ./actions/twittersettings.php 225 -- $twit_user = twitter_user_info($screen_name, $password); -+ $twit_user = twitter_user_info($screen_name, $password); -hunk ./actions/twittersettings.php 227 -- if (!$twit_user) { -- $this->show_form(sprintf(_('Unable to retrieve account information for "%s" from Twitter.'), -- $screen_name)); -- return; -- } -+ if (!$twit_user) { -+ $this->show_form(sprintf(_('Unable to retrieve account information for "%s" from Twitter.'), -+ $screen_name)); -+ return; -+ } -hunk ./actions/twittersettings.php 233 -- if (!save_twitter_user($twit_user->id, $screen_name)) { -- $this->show_form(_('Unable to save your Twitter settings!')); -- return; -- } -+ if (!save_twitter_user($twit_user->id, $screen_name)) { -+ $this->show_form(_('Unable to save your Twitter settings!')); -+ return; -+ } -hunk ./actions/twittersettings.php 238 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/twittersettings.php 240 -- $flink = DB_DataObject::factory('foreign_link'); -- $flink->user_id = $user->id; -- $flink->foreign_id = $twit_user->id; -- $flink->service = 1; // Twitter -- $flink->credentials = $password; -- $flink->created = common_sql_now(); -+ $flink = DB_DataObject::factory('foreign_link'); -+ $flink->user_id = $user->id; -+ $flink->foreign_id = $twit_user->id; -+ $flink->service = 1; // Twitter -+ $flink->credentials = $password; -+ $flink->created = common_sql_now(); -hunk ./actions/twittersettings.php 247 -- $this->set_flags($flink, $noticesync, $replysync, $friendsync); -+ $this->set_flags($flink, $noticesync, $replysync, $friendsync); -hunk ./actions/twittersettings.php 249 -- $flink_id = $flink->insert(); -+ $flink_id = $flink->insert(); -hunk ./actions/twittersettings.php 251 -- if (!$flink_id) { -- common_log_db_error($flink, 'INSERT', __FILE__); -- $this->show_form(_('Unable to save your Twitter settings!')); -- return; -- } -+ if (!$flink_id) { -+ common_log_db_error($flink, 'INSERT', __FILE__); -+ $this->show_form(_('Unable to save your Twitter settings!')); -+ return; -+ } -hunk ./actions/twittersettings.php 257 -- if ($friendsync) { -- save_twitter_friends($user, $twit_user->id, $screen_name, $password); -- } -+ if ($friendsync) { -+ save_twitter_friends($user, $twit_user->id, $screen_name, $password); -+ } -hunk ./actions/twittersettings.php 261 -- $this->show_form(_('Twitter settings saved.'), true); -- } -+ $this->show_form(_('Twitter settings saved.'), true); -+ } -hunk ./actions/twittersettings.php 264 -- function remove_twitter_acct() { -+ function remove_twitter_acct() { -hunk ./actions/twittersettings.php 266 -- $user = common_current_user(); -- $flink = Foreign_link::getByUserID($user->id, 1); -- $flink_foreign_id = $this->arg('flink_foreign_id'); -+ $user = common_current_user(); -+ $flink = Foreign_link::getByUserID($user->id, 1); -+ $flink_foreign_id = $this->arg('flink_foreign_id'); -hunk ./actions/twittersettings.php 270 -- # Maybe an old tab open...? -- if ($flink->foreign_id != $flink_foreign_id) { -- $this->show_form(_('That is not your Twitter account.')); -- return; -- } -+ # Maybe an old tab open...? -+ if ($flink->foreign_id != $flink_foreign_id) { -+ $this->show_form(_('That is not your Twitter account.')); -+ return; -+ } -hunk ./actions/twittersettings.php 276 -- $result = $flink->delete(); -+ $result = $flink->delete(); -hunk ./actions/twittersettings.php 278 -- if (!$result) { -- common_log_db_error($flink, 'DELETE', __FILE__); -- common_server_error(_('Couldn\'t remove Twitter user.')); -- return; -- } -+ if (!$result) { -+ common_log_db_error($flink, 'DELETE', __FILE__); -+ common_server_error(_('Couldn\'t remove Twitter user.')); -+ return; -+ } -hunk ./actions/twittersettings.php 284 -- $this->show_form(_('Twitter account removed.'), TRUE); -- } -+ $this->show_form(_('Twitter account removed.'), TRUE); -+ } -hunk ./actions/twittersettings.php 287 -- function save_preferences() { -+ function save_preferences() { -hunk ./actions/twittersettings.php 289 -- $noticesync = $this->boolean('noticesync'); -- $friendsync = $this->boolean('friendsync'); -- $replysync = $this->boolean('replysync'); -+ $noticesync = $this->boolean('noticesync'); -+ $friendsync = $this->boolean('friendsync'); -+ $replysync = $this->boolean('replysync'); -hunk ./actions/twittersettings.php 293 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/twittersettings.php 295 -- $flink = Foreign_link::getByUserID($user->id, 1); -+ $flink = Foreign_link::getByUserID($user->id, 1); -hunk ./actions/twittersettings.php 297 -- if (!$flink) { -- common_log_db_error($flink, 'SELECT', __FILE__); -- $this->show_form(_('Couldn\'t save Twitter preferences.')); -- return; -- } -+ if (!$flink) { -+ common_log_db_error($flink, 'SELECT', __FILE__); -+ $this->show_form(_('Couldn\'t save Twitter preferences.')); -+ return; -+ } -hunk ./actions/twittersettings.php 303 -- $twitter_id = $flink->foreign_id; -- $password = $flink->credentials; -+ $twitter_id = $flink->foreign_id; -+ $password = $flink->credentials; -hunk ./actions/twittersettings.php 306 -- $fuser = $flink->getForeignUser(); -+ $fuser = $flink->getForeignUser(); -hunk ./actions/twittersettings.php 308 -- if (!$fuser) { -- common_log_db_error($fuser, 'SELECT', __FILE__); -- $this->show_form(_('Couldn\'t save Twitter preferences.')); -- return; -- } -+ if (!$fuser) { -+ common_log_db_error($fuser, 'SELECT', __FILE__); -+ $this->show_form(_('Couldn\'t save Twitter preferences.')); -+ return; -+ } -hunk ./actions/twittersettings.php 314 -- $screen_name = $fuser->nickname; -+ $screen_name = $fuser->nickname; -hunk ./actions/twittersettings.php 316 -- $original = clone($flink); -- $this->set_flags($flink, $noticesync, $replysync, $friendsync); -- $result = $flink->update($original); -+ $original = clone($flink); -+ $this->set_flags($flink, $noticesync, $replysync, $friendsync); -+ $result = $flink->update($original); -hunk ./actions/twittersettings.php 320 -- if ($result === FALSE) { -- common_log_db_error($flink, 'UPDATE', __FILE__); -- $this->show_form(_('Couldn\'t save Twitter preferences.')); -- return; -- } -+ if ($result === FALSE) { -+ common_log_db_error($flink, 'UPDATE', __FILE__); -+ $this->show_form(_('Couldn\'t save Twitter preferences.')); -+ return; -+ } -hunk ./actions/twittersettings.php 326 -- if ($friendsync) { -- save_twitter_friends($user, $flink->foreign_id, $screen_name, $password); -- } -+ if ($friendsync) { -+ save_twitter_friends($user, $flink->foreign_id, $screen_name, $password); -+ } -hunk ./actions/twittersettings.php 330 -- $this->show_form(_('Twitter preferences saved.')); -- } -+ $this->show_form(_('Twitter preferences saved.')); -+ } -hunk ./actions/twittersettings.php 333 -- function verify_credentials($screen_name, $password) { -- $uri = 'http://twitter.com/account/verify_credentials.json'; -- $data = get_twitter_data($uri, $screen_name, $password); -+ function verify_credentials($screen_name, $password) { -+ $uri = 'http://twitter.com/account/verify_credentials.json'; -+ $data = get_twitter_data($uri, $screen_name, $password); -hunk ./actions/twittersettings.php 337 -- if (!$data) { -- return false; -- } -+ if (!$data) { -+ return false; -+ } -hunk ./actions/twittersettings.php 341 -- $user = json_decode($data); -+ $user = json_decode($data); -hunk ./actions/twittersettings.php 343 -- if (!$user) { -- return false; -- } -+ if (!$user) { -+ return false; -+ } -hunk ./actions/twittersettings.php 347 -- $twitter_id = $user->status->id; -+ $twitter_id = $user->status->id; -hunk ./actions/twittersettings.php 349 -- if ($twitter_id) { -- return $twitter_id; -- } -+ if ($twitter_id) { -+ return $twitter_id; -+ } -hunk ./actions/twittersettings.php 353 -- return false; -- } -+ return false; -+ } -hunk ./actions/twittersettings.php 356 -- function set_flags(&$flink, $noticesync, $replysync, $friendsync) { -- if ($noticesync) { -- $flink->noticesync |= FOREIGN_NOTICE_SEND; -- } else { -- $flink->noticesync &= ~FOREIGN_NOTICE_SEND; -- } -+ function set_flags(&$flink, $noticesync, $replysync, $friendsync) { -+ if ($noticesync) { -+ $flink->noticesync |= FOREIGN_NOTICE_SEND; -+ } else { -+ $flink->noticesync &= ~FOREIGN_NOTICE_SEND; -+ } -hunk ./actions/twittersettings.php 363 -- if ($replysync) { -- $flink->noticesync |= FOREIGN_NOTICE_SEND_REPLY; -- } else { -- $flink->noticesync &= ~FOREIGN_NOTICE_SEND_REPLY; -- } -+ if ($replysync) { -+ $flink->noticesync |= FOREIGN_NOTICE_SEND_REPLY; -+ } else { -+ $flink->noticesync &= ~FOREIGN_NOTICE_SEND_REPLY; -+ } -hunk ./actions/twittersettings.php 369 -- if ($friendsync) { -- $flink->friendsync |= FOREIGN_FRIEND_RECV; -- } else { -- $flink->friendsync &= ~FOREIGN_FRIEND_RECV; -- } -+ if ($friendsync) { -+ $flink->friendsync |= FOREIGN_FRIEND_RECV; -+ } else { -+ $flink->friendsync &= ~FOREIGN_FRIEND_RECV; -+ } -hunk ./actions/twittersettings.php 375 -- $flink->profilesync = 0; -- } -+ $flink->profilesync = 0; -+ } -hunk ./actions/unblock.php 35 -- $token = $this->trimmed('token'); -+ $token = $this->trimmed('token'); -hunk ./actions/unblock.php 37 -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/unsubscribe.php 22 -- function handle($args) { -- parent::handle($args); -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- return; -- } -+ function handle($args) { -+ parent::handle($args); -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ return; -+ } -hunk ./actions/unsubscribe.php 29 -- $user = common_current_user(); -+ $user = common_current_user(); -hunk ./actions/unsubscribe.php 31 -- if ($_SERVER['REQUEST_METHOD'] != 'POST') { -- common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname))); -- return; -- } -+ if ($_SERVER['REQUEST_METHOD'] != 'POST') { -+ common_redirect(common_local_url('subscriptions', array('nickname' => $user->nickname))); -+ return; -+ } -hunk ./actions/unsubscribe.php 36 -- # CSRF protection -+ # CSRF protection -hunk ./actions/unsubscribe.php 38 -- $token = $this->trimmed('token'); -+ $token = $this->trimmed('token'); -hunk ./actions/unsubscribe.php 40 -- if (!$token || $token != common_session_token()) { -- $this->client_error(_('There was a problem with your session token. Try again, please.')); -- return; -- } -+ if (!$token || $token != common_session_token()) { -+ $this->client_error(_('There was a problem with your session token. Try again, please.')); -+ return; -+ } -hunk ./actions/unsubscribe.php 45 -- $other_id = $this->arg('unsubscribeto'); -+ $other_id = $this->arg('unsubscribeto'); -hunk ./actions/unsubscribe.php 59 -- $result = subs_unsubscribe_to($user, $other); -+ $result = subs_unsubscribe_to($user, $other); -hunk ./actions/unsubscribe.php 61 -- if ($result != true) { -- common_user_error($result); -- return; -- } -+ if ($result != true) { -+ common_user_error($result); -+ return; -+ } -hunk ./actions/unsubscribe.php 66 -- if ($this->boolean('ajax')) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Unsubscribed')); -- common_element_end('head'); -- common_element_start('body'); -- common_subscribe_form($other); -- common_element_end('body'); -- common_element_end('html'); -- } else { -- common_redirect(common_local_url('subscriptions', array('nickname' => -- $user->nickname))); -+ if ($this->boolean('ajax')) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Unsubscribed')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_subscribe_form($other); -+ common_element_end('body'); -+ common_element_end('html'); -+ } else { -+ common_redirect(common_local_url('subscriptions', array('nickname' => -+ $user->nickname))); -hunk ./actions/unsubscribe.php 79 -- } -+ } -hunk ./actions/updateprofile.php 25 -- -- function handle($args) { -- parent::handle($args); -- try { -- common_remove_magic_from_request(); -- $req = OAuthRequest::from_request(); -- # Note: server-to-server function! -- $server = omb_oauth_server(); -- list($consumer, $token) = $server->verify_request($req); -- if ($this->update_profile($req, $consumer, $token)) { -- print "omb_version=".OMB_VERSION_01; -- } -- } catch (OAuthException $e) { -- $this->server_error($e->getMessage()); -- return; -- } -- } -+ -+ function handle($args) { -+ parent::handle($args); -+ try { -+ common_remove_magic_from_request(); -+ $req = OAuthRequest::from_request(); -+ # Note: server-to-server function! -+ $server = omb_oauth_server(); -+ list($consumer, $token) = $server->verify_request($req); -+ if ($this->update_profile($req, $consumer, $token)) { -+ print "omb_version=".OMB_VERSION_01; -+ } -+ } catch (OAuthException $e) { -+ $this->server_error($e->getMessage()); -+ return; -+ } -+ } -hunk ./actions/updateprofile.php 43 -- function update_profile($req, $consumer, $token) { -- $version = $req->get_parameter('omb_version'); -- if ($version != OMB_VERSION_01) { -- $this->client_error(_('Unsupported OMB version'), 400); -- return false; -- } -- # First, check to see if listenee exists -- $listenee = $req->get_parameter('omb_listenee'); -- $remote = Remote_profile::staticGet('uri', $listenee); -- if (!$remote) { -- $this->client_error(_('Profile unknown'), 404); -- return false; -- } -- # Second, check to see if they should be able to post updates! -- # We see if there are any subscriptions to that remote user with -- # the given token. -+ function update_profile($req, $consumer, $token) { -+ $version = $req->get_parameter('omb_version'); -+ if ($version != OMB_VERSION_01) { -+ $this->client_error(_('Unsupported OMB version'), 400); -+ return false; -+ } -+ # First, check to see if listenee exists -+ $listenee = $req->get_parameter('omb_listenee'); -+ $remote = Remote_profile::staticGet('uri', $listenee); -+ if (!$remote) { -+ $this->client_error(_('Profile unknown'), 404); -+ return false; -+ } -+ # Second, check to see if they should be able to post updates! -+ # We see if there are any subscriptions to that remote user with -+ # the given token. -hunk ./actions/updateprofile.php 60 -- $sub = new Subscription(); -- $sub->subscribed = $remote->id; -- $sub->token = $token->key; -- if (!$sub->find(true)) { -- $this->client_error(_('You did not send us that profile'), 403); -- return false; -- } -+ $sub = new Subscription(); -+ $sub->subscribed = $remote->id; -+ $sub->token = $token->key; -+ if (!$sub->find(true)) { -+ $this->client_error(_('You did not send us that profile'), 403); -+ return false; -+ } -hunk ./actions/updateprofile.php 68 -- $profile = Profile::staticGet('id', $remote->id); -- if (!$profile) { -- # This one is our fault -- $this->server_error(_('Remote profile with no matching profile'), 500); -- return false; -- } -- $nickname = $req->get_parameter('omb_listenee_nickname'); -- if ($nickname && !Validate::string($nickname, array('min_length' => 1, -- 'max_length' => 64, -- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -- $this->client_error(_('Nickname must have only lowercase letters and numbers and no spaces.')); -- return false; -- } -- $license = $req->get_parameter('omb_listenee_license'); -- if ($license && !common_valid_http_url($license)) { -- $this->client_error(sprintf(_("Invalid license URL '%s'"), $license)); -- return false; -- } -- $profile_url = $req->get_parameter('omb_listenee_profile'); -- if ($profile_url && !common_valid_http_url($profile_url)) { -- $this->client_error(sprintf(_("Invalid profile URL '%s'."), $profile_url)); -- return false; -- } -- # optional stuff -- $fullname = $req->get_parameter('omb_listenee_fullname'); -- if ($fullname && strlen($fullname) > 255) { -- $this->client_error(_("Full name is too long (max 255 chars).")); -- return false; -- } -- $homepage = $req->get_parameter('omb_listenee_homepage'); -- if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) { -- $this->client_error(sprintf(_("Invalid homepage '%s'"), $homepage)); -- return false; -- } -- $bio = $req->get_parameter('omb_listenee_bio'); -- if ($bio && strlen($bio) > 140) { -- $this->client_error(_("Bio is too long (max 140 chars).")); -- return false; -- } -- $location = $req->get_parameter('omb_listenee_location'); -- if ($location && strlen($location) > 255) { -- $this->client_error(_("Location is too long (max 255 chars).")); -- return false; -- } -- $avatar = $req->get_parameter('omb_listenee_avatar'); -- if ($avatar) { -- if (!common_valid_http_url($avatar) || strlen($avatar) > 255) { -- $this->client_error(sprintf(_("Invalid avatar URL '%s'"), $avatar)); -- return false; -- } -- $size = @getimagesize($avatar); -- if (!$size) { -- $this->client_error(sprintf(_("Can't read avatar URL '%s'"), $avatar)); -- return false; -- } -- if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) { -- $this->client_error(sprintf(_("Wrong size image at '%s'"), $avatar)); -- return false; -- } -- if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, -- IMAGETYPE_PNG))) { -- $this->client_error(sprintf(_("Wrong image type for '%s'"), $avatar)); -- return false; -- } -- } -+ $profile = Profile::staticGet('id', $remote->id); -+ if (!$profile) { -+ # This one is our fault -+ $this->server_error(_('Remote profile with no matching profile'), 500); -+ return false; -+ } -+ $nickname = $req->get_parameter('omb_listenee_nickname'); -+ if ($nickname && !Validate::string($nickname, array('min_length' => 1, -+ 'max_length' => 64, -+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -+ $this->client_error(_('Nickname must have only lowercase letters and numbers and no spaces.')); -+ return false; -+ } -+ $license = $req->get_parameter('omb_listenee_license'); -+ if ($license && !common_valid_http_url($license)) { -+ $this->client_error(sprintf(_("Invalid license URL '%s'"), $license)); -+ return false; -+ } -+ $profile_url = $req->get_parameter('omb_listenee_profile'); -+ if ($profile_url && !common_valid_http_url($profile_url)) { -+ $this->client_error(sprintf(_("Invalid profile URL '%s'."), $profile_url)); -+ return false; -+ } -+ # optional stuff -+ $fullname = $req->get_parameter('omb_listenee_fullname'); -+ if ($fullname && strlen($fullname) > 255) { -+ $this->client_error(_("Full name is too long (max 255 chars).")); -+ return false; -+ } -+ $homepage = $req->get_parameter('omb_listenee_homepage'); -+ if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) { -+ $this->client_error(sprintf(_("Invalid homepage '%s'"), $homepage)); -+ return false; -+ } -+ $bio = $req->get_parameter('omb_listenee_bio'); -+ if ($bio && strlen($bio) > 140) { -+ $this->client_error(_("Bio is too long (max 140 chars).")); -+ return false; -+ } -+ $location = $req->get_parameter('omb_listenee_location'); -+ if ($location && strlen($location) > 255) { -+ $this->client_error(_("Location is too long (max 255 chars).")); -+ return false; -+ } -+ $avatar = $req->get_parameter('omb_listenee_avatar'); -+ if ($avatar) { -+ if (!common_valid_http_url($avatar) || strlen($avatar) > 255) { -+ $this->client_error(sprintf(_("Invalid avatar URL '%s'"), $avatar)); -+ return false; -+ } -+ $size = @getimagesize($avatar); -+ if (!$size) { -+ $this->client_error(sprintf(_("Can't read avatar URL '%s'"), $avatar)); -+ return false; -+ } -+ if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) { -+ $this->client_error(sprintf(_("Wrong size image at '%s'"), $avatar)); -+ return false; -+ } -+ if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, -+ IMAGETYPE_PNG))) { -+ $this->client_error(sprintf(_("Wrong image type for '%s'"), $avatar)); -+ return false; -+ } -+ } -hunk ./actions/updateprofile.php 134 -- $orig_profile = clone($profile); -+ $orig_profile = clone($profile); -hunk ./actions/updateprofile.php 136 -- if ($nickname) { -- $profile->nickname = $nickname; -- } -- if ($profile_url) { -- $profile->profileurl = $profile_url; -- } -- if ($fullname) { -- $profile->fullname = $fullname; -- } -- if ($homepage) { -- $profile->homepage = $homepage; -- } -- if ($bio) { -- $profile->bio = $bio; -- } -- if ($location) { -- $profile->location = $location; -- } -+ if ($nickname) { -+ $profile->nickname = $nickname; -+ } -+ if ($profile_url) { -+ $profile->profileurl = $profile_url; -+ } -+ if ($fullname) { -+ $profile->fullname = $fullname; -+ } -+ if ($homepage) { -+ $profile->homepage = $homepage; -+ } -+ if ($bio) { -+ $profile->bio = $bio; -+ } -+ if ($location) { -+ $profile->location = $location; -+ } -hunk ./actions/updateprofile.php 155 -- if (!$profile->update($orig_profile)) { -- $this->server_error(_('Could not save new profile info'), 500); -- return false; -- } else { -- if ($avatar) { -- $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar'); -- copy($avatar, $temp_filename); -- if (!$profile->setOriginal($temp_filename)) { -- $this->server_error(_('Could not save avatar info'), 500); -- return false; -- } -- } -- header('HTTP/1.1 200 OK'); -- header('Content-type: text/plain'); -- print 'Updated profile'; -- print "\n"; -- return true; -- } -- } -+ if (!$profile->update($orig_profile)) { -+ $this->server_error(_('Could not save new profile info'), 500); -+ return false; -+ } else { -+ if ($avatar) { -+ $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar'); -+ copy($avatar, $temp_filename); -+ if (!$profile->setOriginal($temp_filename)) { -+ $this->server_error(_('Could not save avatar info'), 500); -+ return false; -+ } -+ } -+ header('HTTP/1.1 200 OK'); -+ header('Content-type: text/plain'); -+ print 'Updated profile'; -+ print "\n"; -+ return true; -+ } -+ } -hunk ./actions/userauthorization.php 27 -- function handle($args) { -- parent::handle($args); -+ function handle($args) { -+ parent::handle($args); -hunk ./actions/userauthorization.php 30 -- if ($_SERVER['REQUEST_METHOD'] == 'POST') { -- # CSRF protection -- $token = $this->trimmed('token'); -- if (!$token || $token != common_session_token()) { -- $req = $this->get_stored_request(); -- $this->show_form(_('There was a problem with your session token. Try again, please.'), $req); -- return; -- } -- # We've shown the form, now post user's choice -- $this->send_authorization(); -- } else { -- if (!common_logged_in()) { -- # Go log in, and then come back -- common_debug('saving URL for returnto', __FILE__); -- common_set_returnto($_SERVER['REQUEST_URI']); -+ if ($_SERVER['REQUEST_METHOD'] == 'POST') { -+ # CSRF protection -+ $token = $this->trimmed('token'); -+ if (!$token || $token != common_session_token()) { -+ $req = $this->get_stored_request(); -+ $this->show_form(_('There was a problem with your session token. Try again, please.'), $req); -+ return; -+ } -+ # We've shown the form, now post user's choice -+ $this->send_authorization(); -+ } else { -+ if (!common_logged_in()) { -+ # Go log in, and then come back -+ common_debug('saving URL for returnto', __FILE__); -+ common_set_returnto($_SERVER['REQUEST_URI']); -hunk ./actions/userauthorization.php 46 -- common_debug('redirecting to login', __FILE__); -- common_redirect(common_local_url('login')); -- return; -- } -- try { -- # this must be a new request -- common_debug('getting new request', __FILE__); -- $req = $this->get_new_request(); -- if (!$req) { -- $this->client_error(_('No request found!')); -- } -- common_debug('validating request', __FILE__); -- # XXX: only validate new requests, since nonce is one-time use -- $this->validate_request($req); -- common_debug('showing form', __FILE__); -- $this->store_request($req); -- $this->show_form($req); -- } catch (OAuthException $e) { -- $this->clear_request(); -- $this->client_error($e->getMessage()); -- return; -- } -+ common_debug('redirecting to login', __FILE__); -+ common_redirect(common_local_url('login')); -+ return; -+ } -+ try { -+ # this must be a new request -+ common_debug('getting new request', __FILE__); -+ $req = $this->get_new_request(); -+ if (!$req) { -+ $this->client_error(_('No request found!')); -+ } -+ common_debug('validating request', __FILE__); -+ # XXX: only validate new requests, since nonce is one-time use -+ $this->validate_request($req); -+ common_debug('showing form', __FILE__); -+ $this->store_request($req); -+ $this->show_form($req); -+ } catch (OAuthException $e) { -+ $this->clear_request(); -+ $this->client_error($e->getMessage()); -+ return; -+ } -hunk ./actions/userauthorization.php 69 -- } -- } -+ } -+ } -hunk ./actions/userauthorization.php 72 -- function show_form($req) { -+ function show_form($req) { -hunk ./actions/userauthorization.php 74 -- $nickname = $req->get_parameter('omb_listenee_nickname'); -- $profile = $req->get_parameter('omb_listenee_profile'); -- $license = $req->get_parameter('omb_listenee_license'); -- $fullname = $req->get_parameter('omb_listenee_fullname'); -- $homepage = $req->get_parameter('omb_listenee_homepage'); -- $bio = $req->get_parameter('omb_listenee_bio'); -- $location = $req->get_parameter('omb_listenee_location'); -- $avatar = $req->get_parameter('omb_listenee_avatar'); -+ $nickname = $req->get_parameter('omb_listenee_nickname'); -+ $profile = $req->get_parameter('omb_listenee_profile'); -+ $license = $req->get_parameter('omb_listenee_license'); -+ $fullname = $req->get_parameter('omb_listenee_fullname'); -+ $homepage = $req->get_parameter('omb_listenee_homepage'); -+ $bio = $req->get_parameter('omb_listenee_bio'); -+ $location = $req->get_parameter('omb_listenee_location'); -+ $avatar = $req->get_parameter('omb_listenee_avatar'); -hunk ./actions/userauthorization.php 83 -- common_show_header(_('Authorize subscription')); -- common_element('p', NULL, _('Please check these details to make sure '. -- 'that you want to subscribe to this user\'s notices. '. -- 'If you didn\'t just ask to subscribe to someone\'s notices, '. -- 'click "Cancel".')); -- common_element_start('div', 'profile'); -- if ($avatar) { -- common_element('img', array('src' => $avatar, -- 'class' => 'avatar profile', -- 'width' => AVATAR_PROFILE_SIZE, -- 'height' => AVATAR_PROFILE_SIZE, -- 'alt' => $nickname)); -- } -- common_element('a', array('href' => $profile, -- 'class' => 'external profile nickname'), -- $nickname); -- if ($fullname) { -- common_element_start('div', 'fullname'); -- if ($homepage) { -- common_element('a', array('href' => $homepage), -- $fullname); -- } else { -- common_text($fullname); -- } -- common_element_end('div'); -- } -- if ($location) { -- common_element('div', 'location', $location); -- } -- if ($bio) { -- common_element('div', 'bio', $bio); -- } -- common_element_start('div', 'license'); -- common_element('a', array('href' => $license, -- 'class' => 'license'), -- $license); -- common_element_end('div'); -- common_element_end('div'); -- common_element_start('form', array('method' => 'post', -- 'id' => 'userauthorization', -- 'name' => 'userauthorization', -- 'action' => common_local_url('userauthorization'))); -- common_hidden('token', common_session_token()); -- common_submit('accept', _('Accept')); -- common_submit('reject', _('Reject')); -- common_element_end('form'); -- common_show_footer(); -- } -+ common_show_header(_('Authorize subscription')); -+ common_element('p', NULL, _('Please check these details to make sure '. -+ 'that you want to subscribe to this user\'s notices. '. -+ 'If you didn\'t just ask to subscribe to someone\'s notices, '. -+ 'click "Cancel".')); -+ common_element_start('div', 'profile'); -+ if ($avatar) { -+ common_element('img', array('src' => $avatar, -+ 'class' => 'avatar profile', -+ 'width' => AVATAR_PROFILE_SIZE, -+ 'height' => AVATAR_PROFILE_SIZE, -+ 'alt' => $nickname)); -+ } -+ common_element('a', array('href' => $profile, -+ 'class' => 'external profile nickname'), -+ $nickname); -+ if ($fullname) { -+ common_element_start('div', 'fullname'); -+ if ($homepage) { -+ common_element('a', array('href' => $homepage), -+ $fullname); -+ } else { -+ common_text($fullname); -+ } -+ common_element_end('div'); -+ } -+ if ($location) { -+ common_element('div', 'location', $location); -+ } -+ if ($bio) { -+ common_element('div', 'bio', $bio); -+ } -+ common_element_start('div', 'license'); -+ common_element('a', array('href' => $license, -+ 'class' => 'license'), -+ $license); -+ common_element_end('div'); -+ common_element_end('div'); -+ common_element_start('form', array('method' => 'post', -+ 'id' => 'userauthorization', -+ 'name' => 'userauthorization', -+ 'action' => common_local_url('userauthorization'))); -+ common_hidden('token', common_session_token()); -+ common_submit('accept', _('Accept')); -+ common_submit('reject', _('Reject')); -+ common_element_end('form'); -+ common_show_footer(); -+ } -hunk ./actions/userauthorization.php 132 -- function send_authorization() { -- $req = $this->get_stored_request(); -+ function send_authorization() { -+ $req = $this->get_stored_request(); -hunk ./actions/userauthorization.php 135 -- if (!$req) { -- common_user_error(_('No authorization request!')); -- return; -- } -+ if (!$req) { -+ common_user_error(_('No authorization request!')); -+ return; -+ } -hunk ./actions/userauthorization.php 140 -- $callback = $req->get_parameter('oauth_callback'); -+ $callback = $req->get_parameter('oauth_callback'); -hunk ./actions/userauthorization.php 142 -- if ($this->arg('accept')) { -- if (!$this->authorize_token($req)) { -- $this->client_error(_('Error authorizing token')); -- } -- if (!$this->save_remote_profile($req)) { -- $this->client_error(_('Error saving remote profile')); -- } -- if (!$callback) { -- $this->show_accept_message($req->get_parameter('oauth_token')); -- } else { -- $params = array(); -- $params['oauth_token'] = $req->get_parameter('oauth_token'); -- $params['omb_version'] = OMB_VERSION_01; -- $user = User::staticGet('uri', $req->get_parameter('omb_listener')); -- $profile = $user->getProfile(); -- if (!$profile) { -- common_log_db_error($user, 'SELECT', __FILE__); -- $this->server_error(_('User without matching profile')); -- return; -- } -- $params['omb_listener_nickname'] = $user->nickname; -- $params['omb_listener_profile'] = common_local_url('showstream', -- array('nickname' => $user->nickname)); -- if ($profile->fullname) { -- $params['omb_listener_fullname'] = $profile->fullname; -- } -- if ($profile->homepage) { -- $params['omb_listener_homepage'] = $profile->homepage; -- } -- if ($profile->bio) { -- $params['omb_listener_bio'] = $profile->bio; -- } -- if ($profile->location) { -- $params['omb_listener_location'] = $profile->location; -- } -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -- if ($avatar) { -- $params['omb_listener_avatar'] = $avatar->url; -- } -- $parts = array(); -- foreach ($params as $k => $v) { -- $parts[] = $k . '=' . OAuthUtil::urlencodeRFC3986($v); -- } -- $query_string = implode('&', $parts); -- $parsed = parse_url($callback); -- $url = $callback . (($parsed['query']) ? '&' : '?') . $query_string; -- common_redirect($url, 303); -- } -- } else { -- if (!$callback) { -- $this->show_reject_message(); -- } else { -- # XXX: not 100% sure how to signal failure... just redirect without token? -- common_redirect($callback, 303); -- } -- } -- } -+ if ($this->arg('accept')) { -+ if (!$this->authorize_token($req)) { -+ $this->client_error(_('Error authorizing token')); -+ } -+ if (!$this->save_remote_profile($req)) { -+ $this->client_error(_('Error saving remote profile')); -+ } -+ if (!$callback) { -+ $this->show_accept_message($req->get_parameter('oauth_token')); -+ } else { -+ $params = array(); -+ $params['oauth_token'] = $req->get_parameter('oauth_token'); -+ $params['omb_version'] = OMB_VERSION_01; -+ $user = User::staticGet('uri', $req->get_parameter('omb_listener')); -+ $profile = $user->getProfile(); -+ if (!$profile) { -+ common_log_db_error($user, 'SELECT', __FILE__); -+ $this->server_error(_('User without matching profile')); -+ return; -+ } -+ $params['omb_listener_nickname'] = $user->nickname; -+ $params['omb_listener_profile'] = common_local_url('showstream', -+ array('nickname' => $user->nickname)); -+ if ($profile->fullname) { -+ $params['omb_listener_fullname'] = $profile->fullname; -+ } -+ if ($profile->homepage) { -+ $params['omb_listener_homepage'] = $profile->homepage; -+ } -+ if ($profile->bio) { -+ $params['omb_listener_bio'] = $profile->bio; -+ } -+ if ($profile->location) { -+ $params['omb_listener_location'] = $profile->location; -+ } -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ if ($avatar) { -+ $params['omb_listener_avatar'] = $avatar->url; -+ } -+ $parts = array(); -+ foreach ($params as $k => $v) { -+ $parts[] = $k . '=' . OAuthUtil::urlencodeRFC3986($v); -+ } -+ $query_string = implode('&', $parts); -+ $parsed = parse_url($callback); -+ $url = $callback . (($parsed['query']) ? '&' : '?') . $query_string; -+ common_redirect($url, 303); -+ } -+ } else { -+ if (!$callback) { -+ $this->show_reject_message(); -+ } else { -+ # XXX: not 100% sure how to signal failure... just redirect without token? -+ common_redirect($callback, 303); -+ } -+ } -+ } -hunk ./actions/userauthorization.php 200 -- function authorize_token(&$req) { -- $consumer_key = $req->get_parameter('oauth_consumer_key'); -- $token_field = $req->get_parameter('oauth_token'); -- common_debug('consumer key = "'.$consumer_key.'"', __FILE__); -- common_debug('token field = "'.$token_field.'"', __FILE__); -- $rt = new Token(); -- $rt->consumer_key = $consumer_key; -- $rt->tok = $token_field; -- $rt->type = 0; -- $rt->state = 0; -- common_debug('request token to look up: "'.print_r($rt,TRUE).'"'); -- if ($rt->find(true)) { -- common_debug('found request token to authorize', __FILE__); -- $orig_rt = clone($rt); -- $rt->state = 1; # Authorized but not used -- if ($rt->update($orig_rt)) { -- common_debug('updated request token so it is authorized', __FILE__); -- return true; -- } -- } -- return FALSE; -- } -+ function authorize_token(&$req) { -+ $consumer_key = $req->get_parameter('oauth_consumer_key'); -+ $token_field = $req->get_parameter('oauth_token'); -+ common_debug('consumer key = "'.$consumer_key.'"', __FILE__); -+ common_debug('token field = "'.$token_field.'"', __FILE__); -+ $rt = new Token(); -+ $rt->consumer_key = $consumer_key; -+ $rt->tok = $token_field; -+ $rt->type = 0; -+ $rt->state = 0; -+ common_debug('request token to look up: "'.print_r($rt,TRUE).'"'); -+ if ($rt->find(true)) { -+ common_debug('found request token to authorize', __FILE__); -+ $orig_rt = clone($rt); -+ $rt->state = 1; # Authorized but not used -+ if ($rt->update($orig_rt)) { -+ common_debug('updated request token so it is authorized', __FILE__); -+ return true; -+ } -+ } -+ return FALSE; -+ } -hunk ./actions/userauthorization.php 223 -- # XXX: refactor with similar code in finishremotesubscribe.php -+ # XXX: refactor with similar code in finishremotesubscribe.php -hunk ./actions/userauthorization.php 225 -- function save_remote_profile(&$req) { -- # FIXME: we should really do this when the consumer comes -- # back for an access token. If they never do, we've got stuff in a -- # weird state. -+ function save_remote_profile(&$req) { -+ # FIXME: we should really do this when the consumer comes -+ # back for an access token. If they never do, we've got stuff in a -+ # weird state. -hunk ./actions/userauthorization.php 230 -- $nickname = $req->get_parameter('omb_listenee_nickname'); -- $fullname = $req->get_parameter('omb_listenee_fullname'); -- $profile_url = $req->get_parameter('omb_listenee_profile'); -- $homepage = $req->get_parameter('omb_listenee_homepage'); -- $bio = $req->get_parameter('omb_listenee_bio'); -- $location = $req->get_parameter('omb_listenee_location'); -- $avatar_url = $req->get_parameter('omb_listenee_avatar'); -+ $nickname = $req->get_parameter('omb_listenee_nickname'); -+ $fullname = $req->get_parameter('omb_listenee_fullname'); -+ $profile_url = $req->get_parameter('omb_listenee_profile'); -+ $homepage = $req->get_parameter('omb_listenee_homepage'); -+ $bio = $req->get_parameter('omb_listenee_bio'); -+ $location = $req->get_parameter('omb_listenee_location'); -+ $avatar_url = $req->get_parameter('omb_listenee_avatar'); -hunk ./actions/userauthorization.php 238 -- $listenee = $req->get_parameter('omb_listenee'); -- $remote = Remote_profile::staticGet('uri', $listenee); -+ $listenee = $req->get_parameter('omb_listenee'); -+ $remote = Remote_profile::staticGet('uri', $listenee); -hunk ./actions/userauthorization.php 241 -- if ($remote) { -- $exists = true; -- $profile = Profile::staticGet($remote->id); -- $orig_remote = clone($remote); -- $orig_profile = clone($profile); -- } else { -- $exists = false; -- $remote = new Remote_profile(); -- $remote->uri = $listenee; -- $profile = new Profile(); -- } -+ if ($remote) { -+ $exists = true; -+ $profile = Profile::staticGet($remote->id); -+ $orig_remote = clone($remote); -+ $orig_profile = clone($profile); -+ } else { -+ $exists = false; -+ $remote = new Remote_profile(); -+ $remote->uri = $listenee; -+ $profile = new Profile(); -+ } -hunk ./actions/userauthorization.php 253 -- $profile->nickname = $nickname; -- $profile->profileurl = $profile_url; -+ $profile->nickname = $nickname; -+ $profile->profileurl = $profile_url; -hunk ./actions/userauthorization.php 256 -- if ($fullname) { -- $profile->fullname = $fullname; -- } -- if ($homepage) { -- $profile->homepage = $homepage; -- } -- if ($bio) { -- $profile->bio = $bio; -- } -- if ($location) { -- $profile->location = $location; -- } -+ if ($fullname) { -+ $profile->fullname = $fullname; -+ } -+ if ($homepage) { -+ $profile->homepage = $homepage; -+ } -+ if ($bio) { -+ $profile->bio = $bio; -+ } -+ if ($location) { -+ $profile->location = $location; -+ } -hunk ./actions/userauthorization.php 269 -- if ($exists) { -- $profile->update($orig_profile); -- } else { -- $profile->created = DB_DataObject_Cast::dateTime(); # current time -- $id = $profile->insert(); -- if (!$id) { -- return FALSE; -- } -- $remote->id = $id; -- } -+ if ($exists) { -+ $profile->update($orig_profile); -+ } else { -+ $profile->created = DB_DataObject_Cast::dateTime(); # current time -+ $id = $profile->insert(); -+ if (!$id) { -+ return FALSE; -+ } -+ $remote->id = $id; -+ } -hunk ./actions/userauthorization.php 280 -- if ($exists) { -- if (!$remote->update($orig_remote)) { -- return FALSE; -- } -- } else { -- $remote->created = DB_DataObject_Cast::dateTime(); # current time -- if (!$remote->insert()) { -- return FALSE; -- } -- } -+ if ($exists) { -+ if (!$remote->update($orig_remote)) { -+ return FALSE; -+ } -+ } else { -+ $remote->created = DB_DataObject_Cast::dateTime(); # current time -+ if (!$remote->insert()) { -+ return FALSE; -+ } -+ } -hunk ./actions/userauthorization.php 291 -- if ($avatar_url) { -- if (!$this->add_avatar($profile, $avatar_url)) { -- return FALSE; -- } -- } -+ if ($avatar_url) { -+ if (!$this->add_avatar($profile, $avatar_url)) { -+ return FALSE; -+ } -+ } -hunk ./actions/userauthorization.php 297 -- $user = common_current_user(); -- $datastore = omb_oauth_datastore(); -- $consumer = $this->get_consumer($datastore, $req); -- $token = $this->get_token($datastore, $req, $consumer); -+ $user = common_current_user(); -+ $datastore = omb_oauth_datastore(); -+ $consumer = $this->get_consumer($datastore, $req); -+ $token = $this->get_token($datastore, $req, $consumer); -hunk ./actions/userauthorization.php 302 -- $sub = new Subscription(); -- $sub->subscriber = $user->id; -- $sub->subscribed = $remote->id; -- $sub->token = $token->key; # NOTE: request token, not valid for use! -- $sub->created = DB_DataObject_Cast::dateTime(); # current time -+ $sub = new Subscription(); -+ $sub->subscriber = $user->id; -+ $sub->subscribed = $remote->id; -+ $sub->token = $token->key; # NOTE: request token, not valid for use! -+ $sub->created = DB_DataObject_Cast::dateTime(); # current time -hunk ./actions/userauthorization.php 308 -- if (!$sub->insert()) { -- return FALSE; -- } -+ if (!$sub->insert()) { -+ return FALSE; -+ } -hunk ./actions/userauthorization.php 312 -- return TRUE; -- } -+ return TRUE; -+ } -hunk ./actions/userauthorization.php 315 -- function add_avatar($profile, $url) { -- $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar'); -- copy($url, $temp_filename); -- return $profile->setOriginal($temp_filename); -- } -+ function add_avatar($profile, $url) { -+ $temp_filename = tempnam(sys_get_temp_dir(), 'listenee_avatar'); -+ copy($url, $temp_filename); -+ return $profile->setOriginal($temp_filename); -+ } -hunk ./actions/userauthorization.php 321 -- function show_accept_message($tok) { -- common_show_header(_('Subscription authorized')); -- common_element('p', NULL, -- _('The subscription has been authorized, but no '. -- 'callback URL was passed. Check with the site\'s instructions for '. -- 'details on how to authorize the subscription. Your subscription token is:')); -- common_element('blockquote', 'token', $tok); -- common_show_footer(); -- } -+ function show_accept_message($tok) { -+ common_show_header(_('Subscription authorized')); -+ common_element('p', NULL, -+ _('The subscription has been authorized, but no '. -+ 'callback URL was passed. Check with the site\'s instructions for '. -+ 'details on how to authorize the subscription. Your subscription token is:')); -+ common_element('blockquote', 'token', $tok); -+ common_show_footer(); -+ } -hunk ./actions/userauthorization.php 331 -- function show_reject_message($tok) { -- common_show_header(_('Subscription rejected')); -- common_element('p', NULL, -- _('The subscription has been rejected, but no '. -- 'callback URL was passed. Check with the site\'s instructions for '. -- 'details on how to fully reject the subscription.')); -- common_show_footer(); -- } -+ function show_reject_message($tok) { -+ common_show_header(_('Subscription rejected')); -+ common_element('p', NULL, -+ _('The subscription has been rejected, but no '. -+ 'callback URL was passed. Check with the site\'s instructions for '. -+ 'details on how to fully reject the subscription.')); -+ common_show_footer(); -+ } -hunk ./actions/userauthorization.php 340 -- function store_request($req) { -- common_ensure_session(); -- $_SESSION['userauthorizationrequest'] = $req; -- } -+ function store_request($req) { -+ common_ensure_session(); -+ $_SESSION['userauthorizationrequest'] = $req; -+ } -hunk ./actions/userauthorization.php 345 -- function clear_request() { -- common_ensure_session(); -- unset($_SESSION['userauthorizationrequest']); -- } -+ function clear_request() { -+ common_ensure_session(); -+ unset($_SESSION['userauthorizationrequest']); -+ } -hunk ./actions/userauthorization.php 350 -- function get_stored_request() { -- common_ensure_session(); -- $req = $_SESSION['userauthorizationrequest']; -- return $req; -- } -+ function get_stored_request() { -+ common_ensure_session(); -+ $req = $_SESSION['userauthorizationrequest']; -+ return $req; -+ } -hunk ./actions/userauthorization.php 356 -- function get_new_request() { -- common_remove_magic_from_request(); -- $req = OAuthRequest::from_request(); -- return $req; -- } -+ function get_new_request() { -+ common_remove_magic_from_request(); -+ $req = OAuthRequest::from_request(); -+ return $req; -+ } -hunk ./actions/userauthorization.php 362 -- # Throws an OAuthException if anything goes wrong -+ # Throws an OAuthException if anything goes wrong -hunk ./actions/userauthorization.php 364 -- function validate_request(&$req) { -- # OAuth stuff -- have to copy from OAuth.php since they're -- # all private methods, and there's no user-authentication method -- common_debug('checking version', __FILE__); -- $this->check_version($req); -- common_debug('getting datastore', __FILE__); -- $datastore = omb_oauth_datastore(); -- common_debug('getting consumer', __FILE__); -- $consumer = $this->get_consumer($datastore, $req); -- common_debug('getting token', __FILE__); -- $token = $this->get_token($datastore, $req, $consumer); -- common_debug('checking timestamp', __FILE__); -- $this->check_timestamp($req); -- common_debug('checking nonce', __FILE__); -- $this->check_nonce($datastore, $req, $consumer, $token); -- common_debug('checking signature', __FILE__); -- $this->check_signature($req, $consumer, $token); -- common_debug('validating omb stuff', __FILE__); -- $this->validate_omb($req); -- common_debug('done validating', __FILE__); -- return true; -- } -+ function validate_request(&$req) { -+ # OAuth stuff -- have to copy from OAuth.php since they're -+ # all private methods, and there's no user-authentication method -+ common_debug('checking version', __FILE__); -+ $this->check_version($req); -+ common_debug('getting datastore', __FILE__); -+ $datastore = omb_oauth_datastore(); -+ common_debug('getting consumer', __FILE__); -+ $consumer = $this->get_consumer($datastore, $req); -+ common_debug('getting token', __FILE__); -+ $token = $this->get_token($datastore, $req, $consumer); -+ common_debug('checking timestamp', __FILE__); -+ $this->check_timestamp($req); -+ common_debug('checking nonce', __FILE__); -+ $this->check_nonce($datastore, $req, $consumer, $token); -+ common_debug('checking signature', __FILE__); -+ $this->check_signature($req, $consumer, $token); -+ common_debug('validating omb stuff', __FILE__); -+ $this->validate_omb($req); -+ common_debug('done validating', __FILE__); -+ return true; -+ } -hunk ./actions/userauthorization.php 387 -- function validate_omb(&$req) { -- foreach (array('omb_version', 'omb_listener', 'omb_listenee', -- 'omb_listenee_profile', 'omb_listenee_nickname', -- 'omb_listenee_license') as $param) -- { -- if (!$req->get_parameter($param)) { -- throw new OAuthException("Required parameter '$param' not found"); -- } -- } -- # Now, OMB stuff -- $version = $req->get_parameter('omb_version'); -- if ($version != OMB_VERSION_01) { -- throw new OAuthException("OpenMicroBlogging version '$version' not supported"); -- } -- $listener = $req->get_parameter('omb_listener'); -- $user = User::staticGet('uri', $listener); -- if (!$user) { -- throw new OAuthException("Listener URI '$listener' not found here"); -- } -- $cur = common_current_user(); -- if ($cur->id != $user->id) { -- throw new OAuthException("Can't add for another user!"); -- } -- $listenee = $req->get_parameter('omb_listenee'); -- if (!Validate::uri($listenee) && -- !common_valid_tag($listenee)) { -- throw new OAuthException("Listenee URI '$listenee' not a recognizable URI"); -- } -- if (strlen($listenee) > 255) { -- throw new OAuthException("Listenee URI '$listenee' too long"); -- } -+ function validate_omb(&$req) { -+ foreach (array('omb_version', 'omb_listener', 'omb_listenee', -+ 'omb_listenee_profile', 'omb_listenee_nickname', -+ 'omb_listenee_license') as $param) -+ { -+ if (!$req->get_parameter($param)) { -+ throw new OAuthException("Required parameter '$param' not found"); -+ } -+ } -+ # Now, OMB stuff -+ $version = $req->get_parameter('omb_version'); -+ if ($version != OMB_VERSION_01) { -+ throw new OAuthException("OpenMicroBlogging version '$version' not supported"); -+ } -+ $listener = $req->get_parameter('omb_listener'); -+ $user = User::staticGet('uri', $listener); -+ if (!$user) { -+ throw new OAuthException("Listener URI '$listener' not found here"); -+ } -+ $cur = common_current_user(); -+ if ($cur->id != $user->id) { -+ throw new OAuthException("Can't add for another user!"); -+ } -+ $listenee = $req->get_parameter('omb_listenee'); -+ if (!Validate::uri($listenee) && -+ !common_valid_tag($listenee)) { -+ throw new OAuthException("Listenee URI '$listenee' not a recognizable URI"); -+ } -+ if (strlen($listenee) > 255) { -+ throw new OAuthException("Listenee URI '$listenee' too long"); -+ } -hunk ./actions/userauthorization.php 419 -- $other = User::staticGet('uri', $listenee); -- if ($other) { -- throw new OAuthException("Listenee URI '$listenee' is local user"); -- } -+ $other = User::staticGet('uri', $listenee); -+ if ($other) { -+ throw new OAuthException("Listenee URI '$listenee' is local user"); -+ } -hunk ./actions/userauthorization.php 424 -- $remote = Remote_profile::staticGet('uri', $listenee); -- if ($remote) { -- $sub = new Subscription(); -- $sub->subscriber = $user->id; -- $sub->subscribed = $remote->id; -- if ($sub->find(TRUE)) { -- throw new OAuthException("Already subscribed to user!"); -- } -- } -- $nickname = $req->get_parameter('omb_listenee_nickname'); -- if (!Validate::string($nickname, array('min_length' => 1, -- 'max_length' => 64, -- 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -- throw new OAuthException('Nickname must have only letters and numbers and no spaces.'); -- } -- $profile = $req->get_parameter('omb_listenee_profile'); -- if (!common_valid_http_url($profile)) { -- throw new OAuthException("Invalid profile URL '$profile'."); -- } -+ $remote = Remote_profile::staticGet('uri', $listenee); -+ if ($remote) { -+ $sub = new Subscription(); -+ $sub->subscriber = $user->id; -+ $sub->subscribed = $remote->id; -+ if ($sub->find(TRUE)) { -+ throw new OAuthException("Already subscribed to user!"); -+ } -+ } -+ $nickname = $req->get_parameter('omb_listenee_nickname'); -+ if (!Validate::string($nickname, array('min_length' => 1, -+ 'max_length' => 64, -+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER))) { -+ throw new OAuthException('Nickname must have only letters and numbers and no spaces.'); -+ } -+ $profile = $req->get_parameter('omb_listenee_profile'); -+ if (!common_valid_http_url($profile)) { -+ throw new OAuthException("Invalid profile URL '$profile'."); -+ } -hunk ./actions/userauthorization.php 444 -- if ($profile == common_local_url('showstream', array('nickname' => $nickname))) { -- throw new OAuthException("Profile URL '$profile' is for a local user."); -- } -+ if ($profile == common_local_url('showstream', array('nickname' => $nickname))) { -+ throw new OAuthException("Profile URL '$profile' is for a local user."); -+ } -hunk ./actions/userauthorization.php 448 -- $license = $req->get_parameter('omb_listenee_license'); -- if (!common_valid_http_url($license)) { -- throw new OAuthException("Invalid license URL '$license'."); -- } -- $site_license = common_config('license', 'url'); -- if (!common_compatible_license($license, $site_license)) { -- throw new OAuthException("Listenee stream license '$license' not compatible with site license '$site_license'."); -- } -- # optional stuff -- $fullname = $req->get_parameter('omb_listenee_fullname'); -- if ($fullname && strlen($fullname) > 255) { -- throw new OAuthException("Full name '$fullname' too long."); -- } -- $homepage = $req->get_parameter('omb_listenee_homepage'); -- if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) { -- throw new OAuthException("Invalid homepage '$homepage'"); -- } -- $bio = $req->get_parameter('omb_listenee_bio'); -- if ($bio && strlen($bio) > 140) { -- throw new OAuthException("Bio too long '$bio'"); -- } -- $location = $req->get_parameter('omb_listenee_location'); -- if ($location && strlen($location) > 255) { -- throw new OAuthException("Location too long '$location'"); -- } -- $avatar = $req->get_parameter('omb_listenee_avatar'); -- if ($avatar) { -- if (!common_valid_http_url($avatar) || strlen($avatar) > 255) { -- throw new OAuthException("Invalid avatar URL '$avatar'"); -- } -- $size = @getimagesize($avatar); -- if (!$size) { -- throw new OAuthException("Can't read avatar URL '$avatar'"); -- } -- if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) { -- throw new OAuthException("Wrong size image at '$avatar'"); -- } -- if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, -- IMAGETYPE_PNG))) { -- throw new OAuthException("Wrong image type for '$avatar'"); -- } -- } -- $callback = $req->get_parameter('oauth_callback'); -- if ($callback && !common_valid_http_url($callback)) { -- throw new OAuthException("Invalid callback URL '$callback'"); -- } -- if ($callback && $callback == common_local_url('finishremotesubscribe')) { -- throw new OAuthException("Callback URL '$callback' is for local site."); -- } -- } -+ $license = $req->get_parameter('omb_listenee_license'); -+ if (!common_valid_http_url($license)) { -+ throw new OAuthException("Invalid license URL '$license'."); -+ } -+ $site_license = common_config('license', 'url'); -+ if (!common_compatible_license($license, $site_license)) { -+ throw new OAuthException("Listenee stream license '$license' not compatible with site license '$site_license'."); -+ } -+ # optional stuff -+ $fullname = $req->get_parameter('omb_listenee_fullname'); -+ if ($fullname && strlen($fullname) > 255) { -+ throw new OAuthException("Full name '$fullname' too long."); -+ } -+ $homepage = $req->get_parameter('omb_listenee_homepage'); -+ if ($homepage && (!common_valid_http_url($homepage) || strlen($homepage) > 255)) { -+ throw new OAuthException("Invalid homepage '$homepage'"); -+ } -+ $bio = $req->get_parameter('omb_listenee_bio'); -+ if ($bio && strlen($bio) > 140) { -+ throw new OAuthException("Bio too long '$bio'"); -+ } -+ $location = $req->get_parameter('omb_listenee_location'); -+ if ($location && strlen($location) > 255) { -+ throw new OAuthException("Location too long '$location'"); -+ } -+ $avatar = $req->get_parameter('omb_listenee_avatar'); -+ if ($avatar) { -+ if (!common_valid_http_url($avatar) || strlen($avatar) > 255) { -+ throw new OAuthException("Invalid avatar URL '$avatar'"); -+ } -+ $size = @getimagesize($avatar); -+ if (!$size) { -+ throw new OAuthException("Can't read avatar URL '$avatar'"); -+ } -+ if ($size[0] != AVATAR_PROFILE_SIZE || $size[1] != AVATAR_PROFILE_SIZE) { -+ throw new OAuthException("Wrong size image at '$avatar'"); -+ } -+ if (!in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, -+ IMAGETYPE_PNG))) { -+ throw new OAuthException("Wrong image type for '$avatar'"); -+ } -+ } -+ $callback = $req->get_parameter('oauth_callback'); -+ if ($callback && !common_valid_http_url($callback)) { -+ throw new OAuthException("Invalid callback URL '$callback'"); -+ } -+ if ($callback && $callback == common_local_url('finishremotesubscribe')) { -+ throw new OAuthException("Callback URL '$callback' is for local site."); -+ } -+ } -hunk ./actions/userauthorization.php 499 -- # Snagged from OAuthServer -+ # Snagged from OAuthServer -hunk ./actions/userauthorization.php 501 -- function check_version(&$req) { -- $version = $req->get_parameter("oauth_version"); -- if (!$version) { -- $version = 1.0; -- } -- if ($version != 1.0) { -- throw new OAuthException("OAuth version '$version' not supported"); -- } -- return $version; -- } -+ function check_version(&$req) { -+ $version = $req->get_parameter("oauth_version"); -+ if (!$version) { -+ $version = 1.0; -+ } -+ if ($version != 1.0) { -+ throw new OAuthException("OAuth version '$version' not supported"); -+ } -+ return $version; -+ } -hunk ./actions/userauthorization.php 512 -- # Snagged from OAuthServer -+ # Snagged from OAuthServer -hunk ./actions/userauthorization.php 514 -- function get_consumer($datastore, $req) { -- $consumer_key = @$req->get_parameter("oauth_consumer_key"); -- if (!$consumer_key) { -- throw new OAuthException("Invalid consumer key"); -- } -+ function get_consumer($datastore, $req) { -+ $consumer_key = @$req->get_parameter("oauth_consumer_key"); -+ if (!$consumer_key) { -+ throw new OAuthException("Invalid consumer key"); -+ } -hunk ./actions/userauthorization.php 520 -- $consumer = $datastore->lookup_consumer($consumer_key); -- if (!$consumer) { -- throw new OAuthException("Invalid consumer"); -- } -- return $consumer; -- } -+ $consumer = $datastore->lookup_consumer($consumer_key); -+ if (!$consumer) { -+ throw new OAuthException("Invalid consumer"); -+ } -+ return $consumer; -+ } -hunk ./actions/userauthorization.php 527 -- # Mostly cadged from OAuthServer -+ # Mostly cadged from OAuthServer -hunk ./actions/userauthorization.php 529 -- function get_token($datastore, &$req, $consumer) {/*{{{*/ -- $token_field = @$req->get_parameter('oauth_token'); -- $token = $datastore->lookup_token($consumer, 'request', $token_field); -- if (!$token) { -- throw new OAuthException("Invalid $token_type token: $token_field"); -- } -- return $token; -- } -+ function get_token($datastore, &$req, $consumer) {/*{{{*/ -+ $token_field = @$req->get_parameter('oauth_token'); -+ $token = $datastore->lookup_token($consumer, 'request', $token_field); -+ if (!$token) { -+ throw new OAuthException("Invalid $token_type token: $token_field"); -+ } -+ return $token; -+ } -hunk ./actions/userauthorization.php 538 -- function check_timestamp(&$req) { -- $timestamp = @$req->get_parameter('oauth_timestamp'); -- $now = time(); -- if ($now - $timestamp > TIMESTAMP_THRESHOLD) { -- throw new OAuthException("Expired timestamp, yours $timestamp, ours $now"); -- } -- } -+ function check_timestamp(&$req) { -+ $timestamp = @$req->get_parameter('oauth_timestamp'); -+ $now = time(); -+ if ($now - $timestamp > TIMESTAMP_THRESHOLD) { -+ throw new OAuthException("Expired timestamp, yours $timestamp, ours $now"); -+ } -+ } -hunk ./actions/userauthorization.php 546 -- # NOTE: don't call twice on the same request; will fail! -- function check_nonce(&$datastore, &$req, $consumer, $token) { -- $timestamp = @$req->get_parameter('oauth_timestamp'); -- $nonce = @$req->get_parameter('oauth_nonce'); -- $found = $datastore->lookup_nonce($consumer, $token, $nonce, $timestamp); -- if ($found) { -- throw new OAuthException("Nonce already used"); -- } -- return true; -- } -+ # NOTE: don't call twice on the same request; will fail! -+ function check_nonce(&$datastore, &$req, $consumer, $token) { -+ $timestamp = @$req->get_parameter('oauth_timestamp'); -+ $nonce = @$req->get_parameter('oauth_nonce'); -+ $found = $datastore->lookup_nonce($consumer, $token, $nonce, $timestamp); -+ if ($found) { -+ throw new OAuthException("Nonce already used"); -+ } -+ return true; -+ } -hunk ./actions/userauthorization.php 557 -- function check_signature(&$req, $consumer, $token) { -- $signature_method = $this->get_signature_method($req); -- $signature = $req->get_parameter('oauth_signature'); -- $valid_sig = $signature_method->check_signature($req, -- $consumer, -- $token, -- $signature); -- if (!$valid_sig) { -- throw new OAuthException("Invalid signature"); -- } -- } -+ function check_signature(&$req, $consumer, $token) { -+ $signature_method = $this->get_signature_method($req); -+ $signature = $req->get_parameter('oauth_signature'); -+ $valid_sig = $signature_method->check_signature($req, -+ $consumer, -+ $token, -+ $signature); -+ if (!$valid_sig) { -+ throw new OAuthException("Invalid signature"); -+ } -+ } -hunk ./actions/userauthorization.php 569 -- function get_signature_method(&$req) { -- $signature_method = @$req->get_parameter("oauth_signature_method"); -- if (!$signature_method) { -- $signature_method = "PLAINTEXT"; -- } -- if ($signature_method != 'HMAC-SHA1') { -- throw new OAuthException("Signature method '$signature_method' not supported."); -- } -- return omb_hmac_sha1(); -- } -+ function get_signature_method(&$req) { -+ $signature_method = @$req->get_parameter("oauth_signature_method"); -+ if (!$signature_method) { -+ $signature_method = "PLAINTEXT"; -+ } -+ if ($signature_method != 'HMAC-SHA1') { -+ throw new OAuthException("Signature method '$signature_method' not supported."); -+ } -+ return omb_hmac_sha1(); -+ } -hunk ./actions/userbyid.php 23 -- -- function is_readonly() { -- return true; -- } -- -+ -+ function is_readonly() { -+ return true; -+ } -+ -hunk ./actions/userbyid.php 32 -- $this->client_error(_('No id.')); -- } -- $user =& User::staticGet($id); -- if (!$user) { -- $this->client_error(_('No such user.')); -+ $this->client_error(_('No id.')); -+ } -+ $user =& User::staticGet($id); -+ if (!$user) { -+ $this->client_error(_('No such user.')); -hunk ./actions/userbyid.php 42 -- $type = common_negotiate_type(common_accept_to_prefs($httpaccept), -+ $type = common_negotiate_type(common_accept_to_prefs($httpaccept), -hunk ./actions/userbyid.php 44 -- $page = $type == 'application/rdf+xml' ? 'foaf' : 'showstream'; -+ $page = $type == 'application/rdf+xml' ? 'foaf' : 'showstream'; -hunk ./actions/userbyid.php 46 -- $url = common_local_url($page, array('nickname' => $user->nickname)); -- common_redirect($url, 303); -- } -+ $url = common_local_url($page, array('nickname' => $user->nickname)); -+ common_redirect($url, 303); -+ } +- common_element('h3', NULL, _('Twitter Friends')); ++ common_element('h3', null, _('Twitter Friends')); +hunk ./actions/unblock.php 24 +- var $profile = NULL; ++ var $profile = null; +hunk ./actions/userauthorization.php 84 +- common_element('p', NULL, _('Please check these details to make sure '. ++ common_element('p', null, _('Please check these details to make sure '. +hunk ./actions/userauthorization.php 323 +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/userauthorization.php 333 +- common_element('p', NULL, ++ common_element('p', null, +hunk ./actions/userbyid.php 41 +- $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : NULL; ++ $httpaccept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null; hunk ./actions/userrss.php 28 -- var $user = NULL; -+ var $user = NULL; -hunk ./actions/userrss.php 30 -- function init() { -- $nickname = $this->trimmed('nickname'); -- $this->user = User::staticGet('nickname', $nickname); -+ function init() { -+ $nickname = $this->trimmed('nickname'); -+ $this->user = User::staticGet('nickname', $nickname); -hunk ./actions/userrss.php 34 -- if (!$this->user) { -- common_user_error(_('No such user.')); -- return false; -- } else { -- return true; -- } -- } -+ if (!$this->user) { -+ common_user_error(_('No such user.')); -+ return false; -+ } else { -+ return true; -+ } -+ } -hunk ./actions/userrss.php 42 -- function get_notices($limit=0) { -+ function get_notices($limit=0) { -hunk ./actions/userrss.php 44 -- $user = $this->user; -- -- if (is_null($user)) { -- return NULL; -- } -- -- $notice = $user->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit); -- -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ $user = $this->user; -+ -+ if (is_null($user)) { -+ return NULL; -+ } -+ -+ $notice = $user->getNotices(0, ($limit == 0) ? NOTICES_PER_PAGE : $limit); -+ -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./actions/userrss.php 56 -- return $notices; -- } -+ return $notices; -+ } -hunk ./actions/userrss.php 59 -- function get_channel() { -- $user = $this->user; -- $profile = $user->getProfile(); -- $c = array('url' => common_local_url('userrss', -- array('nickname' => -- $user->nickname)), -- 'title' => $user->nickname, -- 'link' => $profile->profileurl, -- 'description' => sprintf(_('Microblog by %s'), $user->nickname)); -- return $c; -- } -+ function get_channel() { -+ $user = $this->user; -+ $profile = $user->getProfile(); -+ $c = array('url' => common_local_url('userrss', -+ array('nickname' => -+ $user->nickname)), -+ 'title' => $user->nickname, -+ 'link' => $profile->profileurl, -+ 'description' => sprintf(_('Microblog by %s'), $user->nickname)); -+ return $c; -+ } -hunk ./actions/userrss.php 71 -- function get_image() { -- $user = $this->user; -- $profile = $user->getProfile(); -- if (!$profile) { -- common_log_db_error($user, 'SELECT', __FILE__); -- $this->server_error(_('User without matching profile')); -- return NULL; -- } -- $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -- return ($avatar) ? $avatar->url : NULL; -- } -+ function get_image() { -+ $user = $this->user; -+ $profile = $user->getProfile(); -+ if (!$profile) { -+ common_log_db_error($user, 'SELECT', __FILE__); -+ $this->server_error(_('User without matching profile')); -+ return NULL; -+ } -+ $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); -+ return ($avatar) ? $avatar->url : NULL; -+ } -hunk ./actions/userrss.php 83 -- # override parent to add X-SUP-ID URL -- -- function init_rss($limit=0) { -- $url = common_local_url('sup', NULL, $this->user->id); -- header('X-SUP-ID: '.$url); -- parent::init_rss($limit); -- } -+ # override parent to add X-SUP-ID URL -+ -+ function init_rss($limit=0) { -+ $url = common_local_url('sup', NULL, $this->user->id); -+ header('X-SUP-ID: '.$url); -+ parent::init_rss($limit); -+ } -hunk ./actions/xrds.php 26 -- function is_readonly() { -- return true; -- } -+ function is_readonly() { -+ return true; -+ } -hunk ./actions/xrds.php 30 -- function handle($args) { -- parent::handle($args); -- $nickname = $this->trimmed('nickname'); -- $user = User::staticGet('nickname', $nickname); -- if (!$user) { -- common_user_error(_('No such user.')); -- return; -- } -- $this->show_xrds($user); -- } -+ function handle($args) { -+ parent::handle($args); -+ $nickname = $this->trimmed('nickname'); -+ $user = User::staticGet('nickname', $nickname); -+ if (!$user) { -+ common_user_error(_('No such user.')); -+ return; -+ } -+ $this->show_xrds($user); -+ } -hunk ./actions/xrds.php 41 -- function show_xrds($user) { -+ function show_xrds($user) { -hunk ./actions/xrds.php 43 -- header('Content-Type: application/xrds+xml'); -+ header('Content-Type: application/xrds+xml'); -hunk ./actions/xrds.php 45 -- common_start_xml(); -- common_element_start('XRDS', array('xmlns' => 'xri://$xrds')); -+ common_start_xml(); -+ common_element_start('XRDS', array('xmlns' => 'xri://$xrds')); -hunk ./actions/xrds.php 48 -- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -- 'xml:id' => 'oauth', -- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', -- 'version' => '2.0')); -+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -+ 'xml:id' => 'oauth', -+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', -+ 'version' => '2.0')); +- var $user = NULL; ++ var $user = null; +hunk ./actions/userrss.php 47 +- return NULL; ++ return null; +hunk ./actions/userrss.php 77 +- return NULL; ++ return null; +hunk ./actions/userrss.php 80 +- return ($avatar) ? $avatar->url : NULL; ++ return ($avatar) ? $avatar->url : null; +hunk ./actions/userrss.php 86 +- $url = common_local_url('sup', NULL, $this->user->id); ++ $url = common_local_url('sup', null, $this->user->id); hunk ./actions/xrds.php 53 -- common_element('Type', NULL, 'xri://$xrds*simple'); -+ common_element('Type', NULL, 'xri://$xrds*simple'); -hunk ./actions/xrds.php 55 -- $this->show_service(OAUTH_ENDPOINT_REQUEST, -- common_local_url('requesttoken'), -- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -- array(OAUTH_HMAC_SHA1), -- $user->uri); -+ $this->show_service(OAUTH_ENDPOINT_REQUEST, -+ common_local_url('requesttoken'), -+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -+ array(OAUTH_HMAC_SHA1), -+ $user->uri); -hunk ./actions/xrds.php 61 -- $this->show_service(OAUTH_ENDPOINT_AUTHORIZE, -- common_local_url('userauthorization'), -- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -- array(OAUTH_HMAC_SHA1)); -+ $this->show_service(OAUTH_ENDPOINT_AUTHORIZE, -+ common_local_url('userauthorization'), -+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -+ array(OAUTH_HMAC_SHA1)); -hunk ./actions/xrds.php 66 -- $this->show_service(OAUTH_ENDPOINT_ACCESS, -- common_local_url('accesstoken'), -- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -- array(OAUTH_HMAC_SHA1)); -+ $this->show_service(OAUTH_ENDPOINT_ACCESS, -+ common_local_url('accesstoken'), -+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -+ array(OAUTH_HMAC_SHA1)); -hunk ./actions/xrds.php 71 -- $this->show_service(OAUTH_ENDPOINT_RESOURCE, -- NULL, -- array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -- array(OAUTH_HMAC_SHA1)); -+ $this->show_service(OAUTH_ENDPOINT_RESOURCE, -+ NULL, -+ array(OAUTH_AUTH_HEADER, OAUTH_POST_BODY), -+ array(OAUTH_HMAC_SHA1)); -hunk ./actions/xrds.php 76 -- common_element_end('XRD'); -+ common_element_end('XRD'); -hunk ./actions/xrds.php 78 -- # XXX: decide whether to include user's ID/nickname in postNotice URL -+ # XXX: decide whether to include user's ID/nickname in postNotice URL -hunk ./actions/xrds.php 80 -- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -- 'xml:id' => 'omb', -- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', -- 'version' => '2.0')); -+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -+ 'xml:id' => 'omb', -+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0', -+ 'version' => '2.0')); +- common_element('Type', NULL, 'xri://$xrds*simple'); ++ common_element('Type', null, 'xri://$xrds*simple'); +hunk ./actions/xrds.php 72 +- NULL, ++ null, hunk ./actions/xrds.php 85 -- common_element('Type', NULL, 'xri://$xrds*simple'); -+ common_element('Type', NULL, 'xri://$xrds*simple'); -hunk ./actions/xrds.php 87 -- $this->show_service(OMB_ENDPOINT_POSTNOTICE, -- common_local_url('postnotice')); -+ $this->show_service(OMB_ENDPOINT_POSTNOTICE, -+ common_local_url('postnotice')); -hunk ./actions/xrds.php 90 -- $this->show_service(OMB_ENDPOINT_UPDATEPROFILE, -- common_local_url('updateprofile')); -+ $this->show_service(OMB_ENDPOINT_UPDATEPROFILE, -+ common_local_url('updateprofile')); -hunk ./actions/xrds.php 93 -- common_element_end('XRD'); -+ common_element_end('XRD'); -hunk ./actions/xrds.php 95 -- common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -- 'version' => '2.0')); -+ common_element_start('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)', -+ 'version' => '2.0')); +- common_element('Type', NULL, 'xri://$xrds*simple'); ++ common_element('Type', null, 'xri://$xrds*simple'); hunk ./actions/xrds.php 98 -- common_element('Type', NULL, 'xri://$xrds*simple'); -+ common_element('Type', NULL, 'xri://$xrds*simple'); -hunk ./actions/xrds.php 100 -- $this->show_service(OAUTH_DISCOVERY, -- '#oauth'); -- $this->show_service(OMB_NAMESPACE, -- '#omb'); -+ $this->show_service(OAUTH_DISCOVERY, -+ '#oauth'); -+ $this->show_service(OMB_NAMESPACE, -+ '#omb'); -hunk ./actions/xrds.php 105 -- common_element_end('XRD'); -+ common_element_end('XRD'); -hunk ./actions/xrds.php 107 -- common_element_end('XRDS'); -- common_end_xml(); -- } -+ common_element_end('XRDS'); -+ common_end_xml(); -+ } +- common_element('Type', NULL, 'xri://$xrds*simple'); ++ common_element('Type', null, 'xri://$xrds*simple'); hunk ./actions/xrds.php 111 -- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { -- common_element_start('Service'); -- if ($uri) { -- common_element('URI', NULL, $uri); -- } -- common_element('Type', NULL, $type); -- if ($params) { -- foreach ($params as $param) { -- common_element('Type', NULL, $param); -- } -- } -- if ($sigs) { -- foreach ($sigs as $sig) { -- common_element('Type', NULL, $sig); -- } -- } -- if ($localId) { -- common_element('LocalID', NULL, $localId); -- } -- common_element_end('Service'); -- } -+ function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { -+ common_element_start('Service'); -+ if ($uri) { -+ common_element('URI', NULL, $uri); -+ } -+ common_element('Type', NULL, $type); -+ if ($params) { -+ foreach ($params as $param) { -+ common_element('Type', NULL, $param); -+ } -+ } -+ if ($sigs) { -+ foreach ($sigs as $sig) { -+ common_element('Type', NULL, $sig); -+ } -+ } -+ if ($localId) { -+ common_element('LocalID', NULL, $localId); -+ } -+ common_element_end('Service'); -+ } -hunk ./classes/Avatar.php 29 -- # We clean up the file, too -+ # We clean up the file, too -hunk ./classes/Avatar.php 31 -- function delete() { -- $filename = $this->filename; -- if (parent::delete()) { -- @unlink(common_avatar_path($filename)); -- } -- } -+ function delete() { -+ $filename = $this->filename; -+ if (parent::delete()) { -+ @unlink(common_avatar_path($filename)); -+ } -+ } -hunk ./classes/Avatar.php 38 -- # Create and save scaled version of this avatar -- # XXX: maybe break into different methods -+ # Create and save scaled version of this avatar -+ # XXX: maybe break into different methods -hunk ./classes/Avatar.php 41 -- function scale($size) { -+ function scale($size) { -hunk ./classes/Avatar.php 43 -- $image_s = imagecreatetruecolor($size, $size); -- $image_a = $this->to_image(); -- $square = min($this->width, $this->height); -+ $image_s = imagecreatetruecolor($size, $size); -+ $image_a = $this->to_image(); -+ $square = min($this->width, $this->height); -hunk ./classes/Avatar.php 49 -- imagecopyresampled($image_s, $image_a, 0, 0, 0, 0, -- $size, $size, $square, $square); -+ imagecopyresampled($image_s, $image_a, 0, 0, 0, 0, -+ $size, $size, $square, $square); -hunk ./classes/Avatar.php 52 -- $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png"; -+ $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png"; -hunk ./classes/Avatar.php 54 -- $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp()); -+ $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp()); -hunk ./classes/Avatar.php 56 -- if ($this->mediatype == 'image/jpeg') { -- imagejpeg($image_s, common_avatar_path($filename)); -- } else { -- imagepng($image_s, common_avatar_path($filename)); -- } -+ if ($this->mediatype == 'image/jpeg') { -+ imagejpeg($image_s, common_avatar_path($filename)); -+ } else { -+ imagepng($image_s, common_avatar_path($filename)); -+ } -hunk ./classes/Avatar.php 62 -- $scaled = DB_DataObject::factory('avatar'); -- $scaled->profile_id = $this->profile_id; -- $scaled->width = $size; -- $scaled->height = $size; -- $scaled->original = false; -- $scaled->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png'; -- $scaled->filename = $filename; -- $scaled->url = common_avatar_url($filename); -- $scaled->created = DB_DataObject_Cast::dateTime(); # current time -+ $scaled = DB_DataObject::factory('avatar'); -+ $scaled->profile_id = $this->profile_id; -+ $scaled->width = $size; -+ $scaled->height = $size; -+ $scaled->original = false; -+ $scaled->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png'; -+ $scaled->filename = $filename; -+ $scaled->url = common_avatar_url($filename); -+ $scaled->created = DB_DataObject_Cast::dateTime(); # current time -hunk ./classes/Avatar.php 72 -- if ($scaled->insert()) { -- return $scaled; -- } else { -- return NULL; -- } -- } -+ if ($scaled->insert()) { -+ return $scaled; -+ } else { -+ return NULL; -+ } -+ } -hunk ./classes/Avatar.php 79 -- function to_image() { -- $filepath = common_avatar_path($this->filename); -- if ($this->mediatype == 'image/gif') { -- return imagecreatefromgif($filepath); -- } else if ($this->mediatype == 'image/jpeg') { -- return imagecreatefromjpeg($filepath); -- } else if ($this->mediatype == 'image/png') { -- return imagecreatefrompng($filepath); -- } else { -- return NULL; -- } -- } -- -- function &pkeyGet($kv) { -- return Memcached_DataObject::pkeyGet('Avatar', $kv); -- } -+ function to_image() { -+ $filepath = common_avatar_path($this->filename); -+ if ($this->mediatype == 'image/gif') { -+ return imagecreatefromgif($filepath); -+ } else if ($this->mediatype == 'image/jpeg') { -+ return imagecreatefromjpeg($filepath); -+ } else if ($this->mediatype == 'image/png') { -+ return imagecreatefrompng($filepath); -+ } else { -+ return NULL; -+ } -+ } -+ -+ function &pkeyGet($kv) { -+ return Memcached_DataObject::pkeyGet('Avatar', $kv); -+ } -hunk ./classes/Channel.php 23 -- -- function on($user) { -- return false; -- } -+ -+ function on($user) { -+ return false; -+ } -hunk ./classes/Channel.php 28 -- function off($user) { -- return false; -- } -+ function off($user) { -+ return false; -+ } -hunk ./classes/Channel.php 32 -- function output($user, $text) { -- return false; -- } -- -- function error($user, $text) { -- return false; -- } -- -- function source() { -- return NULL; -- } -+ function output($user, $text) { -+ return false; -+ } -+ -+ function error($user, $text) { -+ return false; -+ } -+ -+ function source() { -+ return NULL; -+ } +- function show_service($type, $uri, $params=NULL, $sigs=NULL, $localId=NULL) { ++ function show_service($type, $uri, $params=null, $sigs=null, $localId=null) { +hunk ./actions/xrds.php 114 +- common_element('URI', NULL, $uri); ++ common_element('URI', null, $uri); +hunk ./actions/xrds.php 116 +- common_element('Type', NULL, $type); ++ common_element('Type', null, $type); +hunk ./actions/xrds.php 119 +- common_element('Type', NULL, $param); ++ common_element('Type', null, $param); +hunk ./actions/xrds.php 124 +- common_element('Type', NULL, $sig); ++ common_element('Type', null, $sig); +hunk ./actions/xrds.php 128 +- common_element('LocalID', NULL, $localId); ++ common_element('LocalID', null, $localId); +hunk ./classes/Avatar.php 24 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Avatar',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Avatar',$k,$v); } +hunk ./classes/Avatar.php 75 +- return NULL; ++ return null; +hunk ./classes/Avatar.php 88 +- return NULL; ++ return null; +hunk ./classes/Channel.php 41 +- return NULL; ++ return null; hunk ./classes/Channel.php 47 -- var $conn = NULL; -- -- function source() { -- return 'xmpp'; -- } -- -- function __construct($conn) { -- $this->conn = $conn; -- } -- -- function on($user) { -- return $this->set_notify($user, 1); -- } -- -- function off($user) { -- return $this->set_notify($user, 0); -- } -+ var $conn = NULL; -+ -+ function source() { -+ return 'xmpp'; -+ } -+ -+ function __construct($conn) { -+ $this->conn = $conn; -+ } -+ -+ function on($user) { -+ return $this->set_notify($user, 1); -+ } -+ -+ function off($user) { -+ return $this->set_notify($user, 0); -+ } -hunk ./classes/Channel.php 65 -- function output($user, $text) { -- $text = '['.common_config('site', 'name') . '] ' . $text; -- jabber_send_message($user->jabber, $text); -- } -- -- function error($user, $text) { -- $text = '['.common_config('site', 'name') . '] ' . $text; -- jabber_send_message($user->jabber, $text); -- } -- -- function set_notify(&$user, $notify) { -- $orig = clone($user); -- $user->jabbernotify = $notify; -- $result = $user->update($orig); -- if (!$result) { -- $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError'); -- common_log(LOG_ERR, -- 'Could not set notify flag to ' . $notify . -- ' for user ' . common_log_objstring($user) . -- ': ' . $last_error->message); -- return false; -- } else { -- common_log(LOG_INFO, -- 'User ' . $user->nickname . ' set notify flag to ' . $notify); -- return true; -- } -- } -+ function output($user, $text) { -+ $text = '['.common_config('site', 'name') . '] ' . $text; -+ jabber_send_message($user->jabber, $text); -+ } -+ -+ function error($user, $text) { -+ $text = '['.common_config('site', 'name') . '] ' . $text; -+ jabber_send_message($user->jabber, $text); -+ } -+ -+ function set_notify(&$user, $notify) { -+ $orig = clone($user); -+ $user->jabbernotify = $notify; -+ $result = $user->update($orig); -+ if (!$result) { -+ $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError'); -+ common_log(LOG_ERR, -+ 'Could not set notify flag to ' . $notify . -+ ' for user ' . common_log_objstring($user) . -+ ': ' . $last_error->message); -+ return false; -+ } else { -+ common_log(LOG_INFO, -+ 'User ' . $user->nickname . ' set notify flag to ' . $notify); -+ return true; -+ } -+ } -hunk ./classes/Channel.php 97 -- function source() { -- return 'web'; -- } -- -- function on($user) { -- return false; -- } -- -- function off($user) { -- return false; -- } -+ function source() { -+ return 'web'; -+ } -+ -+ function on($user) { -+ return false; -+ } -+ -+ function off($user) { -+ return false; -+ } -hunk ./classes/Channel.php 109 -- function output($user, $text) { -- # XXX: buffer all output and send it at the end -- # XXX: even better, redirect to appropriate page -- # depending on what command was run -- common_show_header(_('Command results')); -- common_element('p', NULL, $text); -- common_show_footer(); -- } -- -- function error($user, $text) { -- common_user_error($text); -- } -+ function output($user, $text) { -+ # XXX: buffer all output and send it at the end -+ # XXX: even better, redirect to appropriate page -+ # depending on what command was run -+ common_show_header(_('Command results')); -+ common_element('p', NULL, $text); -+ common_show_footer(); -+ } -+ -+ function error($user, $text) { -+ common_user_error($text); -+ } -hunk ./classes/Channel.php 126 -- function output($user, $text) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Command results')); -- common_element_end('head'); -- common_element_start('body'); -- common_element('p', array('id' => 'command_result'), $text); -- common_element_end('body'); -- common_element_end('html'); -- } -+ function output($user, $text) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Command results')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_element('p', array('id' => 'command_result'), $text); -+ common_element_end('body'); -+ common_element_end('html'); -+ } -hunk ./classes/Channel.php 137 -- function error($user, $text) { -- common_start_html('text/xml;charset=utf-8', true); -- common_element_start('head'); -- common_element('title', null, _('Ajax Error')); -- common_element_end('head'); -- common_element_start('body'); -- common_element('p', array('id' => 'error'), $text); -- common_element_end('body'); -- common_element_end('html'); -- } -+ function error($user, $text) { -+ common_start_html('text/xml;charset=utf-8', true); -+ common_element_start('head'); -+ common_element('title', null, _('Ajax Error')); -+ common_element_end('head'); -+ common_element_start('body'); -+ common_element('p', array('id' => 'error'), $text); -+ common_element_end('body'); -+ common_element_end('html'); -+ } +- var $conn = NULL; ++ var $conn = null; +hunk ./classes/Channel.php 114 +- common_element('p', NULL, $text); ++ common_element('p', null, $text); hunk ./classes/Channel.php 152 -- var $addr = NULL; -+ var $addr = NULL; -hunk ./classes/Channel.php 154 -- function source() { -- return 'mail'; -- } -- -- function __construct($addr=NULL) { -- $this->addr = $addr; -- } -- -- function on($user) { -- return $this->set_notify($user, 1); -- } -- -- function off($user) { -- return $this->set_notify($user, 0); -- } -+ function source() { -+ return 'mail'; -+ } -+ -+ function __construct($addr=NULL) { -+ $this->addr = $addr; -+ } -+ -+ function on($user) { -+ return $this->set_notify($user, 1); -+ } -+ -+ function off($user) { -+ return $this->set_notify($user, 0); -+ } -hunk ./classes/Channel.php 170 -- function output($user, $text) { -+ function output($user, $text) { -hunk ./classes/Channel.php 172 -- $headers['From'] = $user->incomingemail; -- $headers['To'] = $this->addr; -- -- $headers['Subject'] = _('Command complete'); -+ $headers['From'] = $user->incomingemail; -+ $headers['To'] = $this->addr; -+ -+ $headers['Subject'] = _('Command complete'); -hunk ./classes/Channel.php 177 -- return mail_send(array($this->addr), $headers, $text); -- } -- -- function error($user, $text) { -- -- $headers['From'] = $user->incomingemail; -- $headers['To'] = $this->addr; -- -- $headers['Subject'] = _('Command failed'); -+ return mail_send(array($this->addr), $headers, $text); -+ } -+ -+ function error($user, $text) { -+ -+ $headers['From'] = $user->incomingemail; -+ $headers['To'] = $this->addr; -+ -+ $headers['Subject'] = _('Command failed'); -hunk ./classes/Channel.php 187 -- return mail_send(array($this->addr), $headers, $text); -- } -- -- function set_notify($user, $value) { -- $orig = clone($user); -- $user->smsnotify = $value; -- $result = $user->update($orig); -- if (!$result) { -- common_log_db_error($user, 'UPDATE', __FILE__); -- return false; -- } -- return true; -- } -+ return mail_send(array($this->addr), $headers, $text); -+ } -+ -+ function set_notify($user, $value) { -+ $orig = clone($user); -+ $user->smsnotify = $value; -+ $result = $user->update($orig); -+ if (!$result) { -+ common_log_db_error($user, 'UPDATE', __FILE__); -+ return false; -+ } -+ return true; -+ } -hunk ./classes/Command.php 25 -- -- var $user = NULL; -- -- function __construct($user=NULL) { -- $this->user = $user; -- } -- -- function execute($channel) { -- return false; -- } -+ -+ var $user = NULL; -+ -+ function __construct($user=NULL) { -+ $this->user = $user; -+ } -+ -+ function execute($channel) { -+ return false; -+ } -hunk ./classes/Command.php 38 -- function execute($channel) { -- $channel->error($this->user, _("Sorry, this command is not yet implemented.")); -- } -+ function execute($channel) { -+ $channel->error($this->user, _("Sorry, this command is not yet implemented.")); -+ } +- var $addr = NULL; ++ var $addr = null; +hunk ./classes/Channel.php 158 +- function __construct($addr=NULL) { ++ function __construct($addr=null) { +hunk ./classes/Command.php 26 +- var $user = NULL; ++ var $user = null; +hunk ./classes/Command.php 28 +- function __construct($user=NULL) { ++ function __construct($user=null) { hunk ./classes/Command.php 50 -- var $word = NULL; -- function __construct($user, $word) { -- parent::__construct($user); -- $this->word = $word; -- } -+ var $word = NULL; -+ function __construct($user, $word) { -+ parent::__construct($user); -+ $this->word = $word; -+ } +- var $word = NULL; ++ var $word = null; hunk ./classes/Command.php 58 -- var $word = NULL; -- function __construct($user, $word) { -- parent::__construct($user); -- $this->word = $word; -- } -+ var $word = NULL; -+ function __construct($user, $word) { -+ parent::__construct($user); -+ $this->word = $word; -+ } +- var $word = NULL; ++ var $word = null; hunk ./classes/Command.php 66 -- var $other = NULL; -- function __construct($user, $other) { -- parent::__construct($user); -- $this->other = $other; -- } -+ var $other = NULL; -+ function __construct($user, $other) { -+ parent::__construct($user); -+ $this->other = $other; -+ } +- var $other = NULL; ++ var $other = null; hunk ./classes/Command.php 74 -- var $other = NULL; -- function __construct($user, $other) { -- parent::__construct($user); -- $this->other = $other; -- } -+ var $other = NULL; -+ function __construct($user, $other) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -hunk ./classes/Command.php 82 -- function execute($channel) { -+ function execute($channel) { -hunk ./classes/Command.php 84 -- $subs = new Subscription(); -- $subs->subscriber = $this->user->id; -- $subs_count = (int) $subs->count() - 1; -+ $subs = new Subscription(); -+ $subs->subscriber = $this->user->id; -+ $subs_count = (int) $subs->count() - 1; -hunk ./classes/Command.php 88 -- $subbed = new Subscription(); -- $subbed->subscribed = $this->user->id; -- $subbed_count = (int) $subbed->count() - 1; -+ $subbed = new Subscription(); -+ $subbed->subscribed = $this->user->id; -+ $subbed_count = (int) $subbed->count() - 1; -hunk ./classes/Command.php 92 -- $notices = new Notice(); -- $notices->profile_id = $this->user->id; -- $notice_count = (int) $notices->count(); -- -- $channel->output($this->user, sprintf(_("Subscriptions: %1\$s\n". -- "Subscribers: %2\$s\n". -- "Notices: %3\$s"), -- $subs_count, -- $subbed_count, -- $notice_count)); -- } -+ $notices = new Notice(); -+ $notices->profile_id = $this->user->id; -+ $notice_count = (int) $notices->count(); -+ -+ $channel->output($this->user, sprintf(_("Subscriptions: %1\$s\n". -+ "Subscribers: %2\$s\n". -+ "Notices: %3\$s"), -+ $subs_count, -+ $subbed_count, -+ $notice_count)); -+ } -hunk ./classes/Command.php 106 -- -- var $other = NULL; -- -- function __construct($user, $other) { -- parent::__construct($user); -- $this->other = $other; -- } -- -- function execute($channel) { -- -- $recipient = -- common_relative_profile($this->user, common_canonical_nickname($this->other)); -- -- if (!$recipient) { -- $channel->error($this->user, _('No such user.')); -- return; -- } -- $notice = $recipient->getCurrentNotice(); -- if (!$notice) { -- $channel->error($this->user, _('User has no last notice')); -- return; -- } -- -- $fave = Fave::addNew($this->user, $notice); -+ -+ var $other = NULL; -+ -+ function __construct($user, $other) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -+ -+ function execute($channel) { -+ -+ $recipient = -+ common_relative_profile($this->user, common_canonical_nickname($this->other)); -+ -+ if (!$recipient) { -+ $channel->error($this->user, _('No such user.')); -+ return; -+ } -+ $notice = $recipient->getCurrentNotice(); -+ if (!$notice) { -+ $channel->error($this->user, _('User has no last notice')); -+ return; -+ } -+ -+ $fave = Fave::addNew($this->user, $notice); -hunk ./classes/Command.php 131 -- if (!$fave) { -- $channel->error($this->user, _('Could not create favorite.')); -- return; -- } -+ if (!$fave) { -+ $channel->error($this->user, _('Could not create favorite.')); -+ return; -+ } -hunk ./classes/Command.php 136 -- $other = User::staticGet('id', $recipient->id); -- -- if ($other && $other->id != $user->id) { -- if ($other->email && $other->emailnotifyfav) { -- mail_notify_fave($other, $this->user, $notice); -- } -- } -- -- $this->user->blowFavesCache(); -- -- $channel->output($this->user, _('Notice marked as fave.')); -- } -+ $other = User::staticGet('id', $recipient->id); -+ -+ if ($other && $other->id != $user->id) { -+ if ($other->email && $other->emailnotifyfav) { -+ mail_notify_fave($other, $this->user, $notice); -+ } -+ } -+ -+ $this->user->blowFavesCache(); -+ -+ $channel->output($this->user, _('Notice marked as fave.')); -+ } +- var $other = NULL; ++ var $other = null; +hunk ./classes/Command.php 107 +- var $other = NULL; ++ var $other = null; hunk ./classes/Command.php 151 -- var $other = NULL; -- function __construct($user, $other) { -- parent::__construct($user); -- $this->other = $other; -- } -- -- function execute($channel) { -- $recipient = -- common_relative_profile($this->user, common_canonical_nickname($this->other)); -- -- if (!$recipient) { -- $channel->error($this->user, _('No such user.')); -- return; -- } -- -- $whois = sprintf(_("%1\$s (%2\$s)"), $recipient->nickname, -- $recipient->profileurl); -- if ($recipient->fullname) { -- $whois .= "\n" . sprintf(_('Fullname: %s'), $recipient->fullname); -- } -- if ($recipient->location) { -- $whois .= "\n" . sprintf(_('Location: %s'), $recipient->location); -- } -- if ($recipient->homepage) { -- $whois .= "\n" . sprintf(_('Homepage: %s'), $recipient->homepage); -- } -- if ($recipient->bio) { -- $whois .= "\n" . sprintf(_('About: %s'), $recipient->bio); -- } -- $channel->output($this->user, $whois); -- } -+ var $other = NULL; -+ function __construct($user, $other) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -+ -+ function execute($channel) { -+ $recipient = -+ common_relative_profile($this->user, common_canonical_nickname($this->other)); -+ -+ if (!$recipient) { -+ $channel->error($this->user, _('No such user.')); -+ return; -+ } -+ -+ $whois = sprintf(_("%1\$s (%2\$s)"), $recipient->nickname, -+ $recipient->profileurl); -+ if ($recipient->fullname) { -+ $whois .= "\n" . sprintf(_('Fullname: %s'), $recipient->fullname); -+ } -+ if ($recipient->location) { -+ $whois .= "\n" . sprintf(_('Location: %s'), $recipient->location); -+ } -+ if ($recipient->homepage) { -+ $whois .= "\n" . sprintf(_('Homepage: %s'), $recipient->homepage); -+ } -+ if ($recipient->bio) { -+ $whois .= "\n" . sprintf(_('About: %s'), $recipient->bio); -+ } -+ $channel->output($this->user, $whois); -+ } +- var $other = NULL; ++ var $other = null; hunk ./classes/Command.php 185 -- var $other = NULL; -- var $text = NULL; -- function __construct($user, $other, $text) { -- parent::__construct($user); -- $this->other = $other; -- $this->text = $text; -- } -- -- function execute($channel) { -- $other = User::staticGet('nickname', common_canonical_nickname($this->other)); -- $len = mb_strlen($this->text); -- if ($len == 0) { -- $channel->error($this->user, _('No content!')); -- return; -- } else if ($len > 140) { -- $content = common_shorten_links($content); -- if (mb_strlen($content) > 140) { -- $channel->error($this->user, sprintf(_('Message too long - maximum is 140 characters, you sent %d'), $len)); -- return; -- } -- } -- -- if (!$other) { -- $channel->error($this->user, _('No such user.')); -- return; -- } else if (!$this->user->mutuallySubscribed($other)) { -- $channel->error($this->user, _('You can\'t send a message to this user.')); -- return; -- } else if ($this->user->id == $other->id) { -- $channel->error($this->user, _('Don\'t send a message to yourself; just say it to yourself quietly instead.')); -- return; -- } -- $message = Message::saveNew($this->user->id, $other->id, $this->text, $channel->source()); -- if ($message) { -- $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other)); -- } else { -- $channel->error($this->user, _('Error sending direct message.')); -- } -- } -+ var $other = NULL; -+ var $text = NULL; -+ function __construct($user, $other, $text) { -+ parent::__construct($user); -+ $this->other = $other; -+ $this->text = $text; -+ } -+ -+ function execute($channel) { -+ $other = User::staticGet('nickname', common_canonical_nickname($this->other)); -+ $len = mb_strlen($this->text); -+ if ($len == 0) { -+ $channel->error($this->user, _('No content!')); -+ return; -+ } else if ($len > 140) { -+ $content = common_shorten_links($content); -+ if (mb_strlen($content) > 140) { -+ $channel->error($this->user, sprintf(_('Message too long - maximum is 140 characters, you sent %d'), $len)); -+ return; -+ } -+ } -+ -+ if (!$other) { -+ $channel->error($this->user, _('No such user.')); -+ return; -+ } else if (!$this->user->mutuallySubscribed($other)) { -+ $channel->error($this->user, _('You can\'t send a message to this user.')); -+ return; -+ } else if ($this->user->id == $other->id) { -+ $channel->error($this->user, _('Don\'t send a message to yourself; just say it to yourself quietly instead.')); -+ return; -+ } -+ $message = Message::saveNew($this->user->id, $other->id, $this->text, $channel->source()); -+ if ($message) { -+ $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other)); -+ } else { -+ $channel->error($this->user, _('Error sending direct message.')); -+ } -+ } -hunk ./classes/Command.php 227 -- -- var $other = NULL; -- -- function __construct($user, $other) { -- parent::__construct($user); -- $this->other = $other; -- } -- -- function execute($channel) { -- $target_nickname = common_canonical_nickname($this->other); -- -- $target = -- common_relative_profile($this->user, $target_nickname); -+ -+ var $other = NULL; -+ -+ function __construct($user, $other) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -+ -+ function execute($channel) { -+ $target_nickname = common_canonical_nickname($this->other); -+ -+ $target = -+ common_relative_profile($this->user, $target_nickname); -hunk ./classes/Command.php 241 -- if (!$target) { -- $channel->error($this->user, _('No such user.')); -- return; -- } -- $notice = $target->getCurrentNotice(); -- if (!$notice) { -- $channel->error($this->user, _('User has no last notice')); -- return; -- } -- $notice_content = $notice->content; -- -- $channel->output($this->user, $target_nickname . ": " . $notice_content); -- } -+ if (!$target) { -+ $channel->error($this->user, _('No such user.')); -+ return; -+ } -+ $notice = $target->getCurrentNotice(); -+ if (!$notice) { -+ $channel->error($this->user, _('User has no last notice')); -+ return; -+ } -+ $notice_content = $notice->content; -+ -+ $channel->output($this->user, $target_nickname . ": " . $notice_content); -+ } -hunk ./classes/Command.php 257 -- -- var $other = NULL; -- -- function __construct($user, $other) { -- parent::__construct($user); -- $this->other = $other; -- } -- -- function execute($channel) { -- -- if (!$this->other) { -- $channel->error($this->user, _('Specify the name of the user to subscribe to')); -- return; -- } -- -- $result = subs_subscribe_user($this->user, $this->other); -- -- if ($result == 'true') { -- $channel->output($this->user, sprintf(_('Subscribed to %s'), $this->other)); -- } else { -- $channel->error($this->user, $result); -- } -- } -+ -+ var $other = NULL; -+ -+ function __construct($user, $other) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -+ -+ function execute($channel) { -+ -+ if (!$this->other) { -+ $channel->error($this->user, _('Specify the name of the user to subscribe to')); -+ return; -+ } -+ -+ $result = subs_subscribe_user($this->user, $this->other); -+ -+ if ($result == 'true') { -+ $channel->output($this->user, sprintf(_('Subscribed to %s'), $this->other)); -+ } else { -+ $channel->error($this->user, $result); -+ } -+ } +- var $other = NULL; +- var $text = NULL; ++ var $other = null; ++ var $text = null; +hunk ./classes/Command.php 228 +- var $other = NULL; ++ var $other = null; +hunk ./classes/Command.php 258 +- var $other = NULL; ++ var $other = null; hunk ./classes/Command.php 284 -- var $other = NULL; -- -- function __construct($user, $other) { -- parent::__construct($user); -- $this->other = $other; -- } -+ var $other = NULL; -+ -+ function __construct($user, $other) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -hunk ./classes/Command.php 291 -- function execute($channel) { -- if(!$this->other) { -- $channel->error($this->user, _('Specify the name of the user to unsubscribe from')); -- return; -- } -- -- $result=subs_unsubscribe_user($this->user, $this->other); -- -- if ($result) { -- $channel->output($this->user, sprintf(_('Unsubscribed from %s'), $this->other)); -- } else { -- $channel->error($this->user, $result); -- } -- } -+ function execute($channel) { -+ if(!$this->other) { -+ $channel->error($this->user, _('Specify the name of the user to unsubscribe from')); -+ return; -+ } -+ -+ $result=subs_unsubscribe_user($this->user, $this->other); -+ -+ if ($result) { -+ $channel->output($this->user, sprintf(_('Unsubscribed from %s'), $this->other)); -+ } else { -+ $channel->error($this->user, $result); -+ } -+ } +- var $other = NULL; ++ var $other = null; hunk ./classes/Command.php 308 -- var $other = NULL; -- function __construct($user, $other=NULL) { -- parent::__construct($user); -- $this->other = $other; -- } -- function execute($channel) { -- if ($other) { -- $channel->error($this->user, _("Command not yet implemented.")); -- } else { -- if ($channel->off($this->user)) { -- $channel->output($this->user, _('Notification off.')); -- } else { -- $channel->error($this->user, _('Can\'t turn off notification.')); -- } -- } -- } -+ var $other = NULL; -+ function __construct($user, $other=NULL) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -+ function execute($channel) { -+ if ($other) { -+ $channel->error($this->user, _("Command not yet implemented.")); -+ } else { -+ if ($channel->off($this->user)) { -+ $channel->output($this->user, _('Notification off.')); -+ } else { -+ $channel->error($this->user, _('Can\'t turn off notification.')); -+ } -+ } -+ } +- var $other = NULL; +- function __construct($user, $other=NULL) { ++ var $other = null; ++ function __construct($user, $other=null) { hunk ./classes/Command.php 327 -- var $other = NULL; -- function __construct($user, $other=NULL) { -- parent::__construct($user); -- $this->other = $other; -- } -- -- function execute($channel) { -- if ($other) { -- $channel->error($this->user, _("Command not yet implemented.")); -- } else { -- if ($channel->on($this->user)) { -- $channel->output($this->user, _('Notification on.')); -- } else { -- $channel->error($this->user, _('Can\'t turn on notification.')); -- } -- } -- } -+ var $other = NULL; -+ function __construct($user, $other=NULL) { -+ parent::__construct($user); -+ $this->other = $other; -+ } -+ -+ function execute($channel) { -+ if ($other) { -+ $channel->error($this->user, _("Command not yet implemented.")); -+ } else { -+ if ($channel->on($this->user)) { -+ $channel->output($this->user, _('Notification on.')); -+ } else { -+ $channel->error($this->user, _('Can\'t turn on notification.')); -+ } -+ } -+ } -hunk ./classes/Command.php 347 -- function execute($channel) { -- $channel->output($this->user, -- _("Commands:\n". -- "on - turn on notifications\n". -- "off - turn off notifications\n". -- "help - show this help\n". -- "follow - subscribe to user\n". -- "leave - unsubscribe from user\n". -- "d - direct message to user\n". -- "get - get last notice from user\n". -- "whois - get profile info on user\n". -- "fav - add user's last notice as a 'fave'\n". -- "stats - get your stats\n". -- "stop - same as 'off'\n". -- "quit - same as 'off'\n". -- "sub - same as 'follow'\n". -- "unsub - same as 'leave'\n". -- "last - same as 'get'\n". -- "on - not yet implemented.\n". -- "off - not yet implemented.\n". -- "nudge - not yet implemented.\n". -- "invite - not yet implemented.\n". -- "track - not yet implemented.\n". -- "untrack - not yet implemented.\n". -- "track off - not yet implemented.\n". -- "untrack all - not yet implemented.\n". -- "tracks - not yet implemented.\n". -- "tracking - not yet implemented.\n")); -- } -+ function execute($channel) { -+ $channel->output($this->user, -+ _("Commands:\n". -+ "on - turn on notifications\n". -+ "off - turn off notifications\n". -+ "help - show this help\n". -+ "follow - subscribe to user\n". -+ "leave - unsubscribe from user\n". -+ "d - direct message to user\n". -+ "get - get last notice from user\n". -+ "whois - get profile info on user\n". -+ "fav - add user's last notice as a 'fave'\n". -+ "stats - get your stats\n". -+ "stop - same as 'off'\n". -+ "quit - same as 'off'\n". -+ "sub - same as 'follow'\n". -+ "unsub - same as 'leave'\n". -+ "last - same as 'get'\n". -+ "on - not yet implemented.\n". -+ "off - not yet implemented.\n". -+ "nudge - not yet implemented.\n". -+ "invite - not yet implemented.\n". -+ "track - not yet implemented.\n". -+ "untrack - not yet implemented.\n". -+ "track off - not yet implemented.\n". -+ "untrack all - not yet implemented.\n". -+ "tracks - not yet implemented.\n". -+ "tracking - not yet implemented.\n")); -+ } -hunk ./classes/CommandInterpreter.php 25 -- -- function handle_command($user, $text) { -- # XXX: localise -+ -+ function handle_command($user, $text) { -+ # XXX: localise -hunk ./classes/CommandInterpreter.php 29 -- $text = preg_replace('/\s+/', ' ', trim($text)); -- list($cmd, $arg) = explode(' ', $text, 2); -+ $text = preg_replace('/\s+/', ' ', trim($text)); -+ list($cmd, $arg) = explode(' ', $text, 2); -hunk ./classes/CommandInterpreter.php 32 -- # We try to support all the same commands as Twitter, see -- # http://getsatisfaction.com/twitter/topics/what_are_the_twitter_commands -- # There are a few compatibility commands from earlier versions of -- # Laconica -- -- switch(strtolower($cmd)) { -- case 'help': -- if ($arg) { -- return NULL; -- } -- return new HelpCommand($user); -- case 'on': -- if ($arg) { -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new OnCommand($user, $other); -- } -- } else { -- return new OnCommand($user); -- } -- case 'off': -- if ($arg) { -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new OffCommand($user, $other); -- } -- } else { -- return new OffCommand($user); -- } -- case 'stop': -- case 'quit': -- if ($arg) { -- return NULL; -- } else { -- return new OffCommand($user); -- } -- case 'follow': -- case 'sub': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new SubCommand($user, $other); -- } -- case 'leave': -- case 'unsub': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new UnsubCommand($user, $other); -- } -- case 'get': -- case 'last': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new GetCommand($user, $other); -- } -- case 'd': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if (!$extra) { -- return NULL; -- } else { -- return new MessageCommand($user, $other, $extra); -- } -- case 'whois': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new WhoisCommand($user, $other); -- } -- case 'fav': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new FavCommand($user, $other); -- } -- case 'nudge': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new NudgeCommand($user, $other); -- } -- case 'stats': -- if ($arg) { -- return NULL; -- } -- return new StatsCommand($user); -- case 'invite': -- if (!$arg) { -- return NULL; -- } -- list($other, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else { -- return new InviteCommand($user, $other); -- } -- case 'track': -- if (!$arg) { -- return NULL; -- } -- list($word, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else if ($word == 'off') { -- return new TrackOffCommand($user); -- } else { -- return new TrackCommand($user, $word); -- } -- case 'untrack': -- if (!$arg) { -- return NULL; -- } -- list($word, $extra) = explode(' ', $arg, 2); -- if ($extra) { -- return NULL; -- } else if ($word == 'all') { -- return new TrackOffCommand($user); -- } else { -- return new UntrackCommand($user, $word); -- } -- case 'tracks': -- case 'tracking': -- if ($arg) { -- return NULL; -- } -- return new TrackingCommand($user); -- default: -- return false; -- } -- } -+ # We try to support all the same commands as Twitter, see -+ # http://getsatisfaction.com/twitter/topics/what_are_the_twitter_commands -+ # There are a few compatibility commands from earlier versions of -+ # Laconica -+ -+ switch(strtolower($cmd)) { -+ case 'help': -+ if ($arg) { -+ return NULL; -+ } -+ return new HelpCommand($user); -+ case 'on': -+ if ($arg) { -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new OnCommand($user, $other); -+ } -+ } else { -+ return new OnCommand($user); -+ } -+ case 'off': -+ if ($arg) { -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new OffCommand($user, $other); -+ } -+ } else { -+ return new OffCommand($user); -+ } -+ case 'stop': -+ case 'quit': -+ if ($arg) { -+ return NULL; -+ } else { -+ return new OffCommand($user); -+ } -+ case 'follow': -+ case 'sub': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new SubCommand($user, $other); -+ } -+ case 'leave': -+ case 'unsub': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new UnsubCommand($user, $other); -+ } -+ case 'get': -+ case 'last': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new GetCommand($user, $other); -+ } -+ case 'd': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if (!$extra) { -+ return NULL; -+ } else { -+ return new MessageCommand($user, $other, $extra); -+ } -+ case 'whois': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new WhoisCommand($user, $other); -+ } -+ case 'fav': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new FavCommand($user, $other); -+ } -+ case 'nudge': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new NudgeCommand($user, $other); -+ } -+ case 'stats': -+ if ($arg) { -+ return NULL; -+ } -+ return new StatsCommand($user); -+ case 'invite': -+ if (!$arg) { -+ return NULL; -+ } -+ list($other, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else { -+ return new InviteCommand($user, $other); -+ } -+ case 'track': -+ if (!$arg) { -+ return NULL; -+ } -+ list($word, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else if ($word == 'off') { -+ return new TrackOffCommand($user); -+ } else { -+ return new TrackCommand($user, $word); -+ } -+ case 'untrack': -+ if (!$arg) { -+ return NULL; -+ } -+ list($word, $extra) = explode(' ', $arg, 2); -+ if ($extra) { -+ return NULL; -+ } else if ($word == 'all') { -+ return new TrackOffCommand($user); -+ } else { -+ return new UntrackCommand($user, $word); -+ } -+ case 'tracks': -+ case 'tracking': -+ if ($arg) { -+ return NULL; -+ } -+ return new TrackingCommand($user); -+ default: -+ return false; -+ } -+ } -hunk ./classes/Fave.php 23 -- static function addNew($user, $notice) { -- $fave = new Fave(); -- $fave->user_id = $user->id; -- $fave->notice_id = $notice->id; -- if (!$fave->insert()) { -- common_log_db_error($fave, 'INSERT', __FILE__); -- return false; -- } -- return $fave; -- } -- -- function &pkeyGet($kv) { -- return Memcached_DataObject::pkeyGet('Fave', $kv); -- } -+ static function addNew($user, $notice) { -+ $fave = new Fave(); -+ $fave->user_id = $user->id; -+ $fave->notice_id = $notice->id; -+ if (!$fave->insert()) { -+ common_log_db_error($fave, 'INSERT', __FILE__); -+ return false; -+ } -+ return $fave; -+ } -+ -+ function &pkeyGet($kv) { -+ return Memcached_DataObject::pkeyGet('Fave', $kv); -+ } -hunk ./classes/Foreign_link.php 29 -- // XXX: This only returns a 1->1 single obj mapping. Change? Or make -- // a getForeignUsers() that returns more than one? --Zach -- static function getByUserID($user_id, $service) { -- $flink = new Foreign_link(); -- $flink->service = $service; -- $flink->user_id = $user_id; -- $flink->limit(1); -+ // XXX: This only returns a 1->1 single obj mapping. Change? Or make -+ // a getForeignUsers() that returns more than one? --Zach -+ static function getByUserID($user_id, $service) { -+ $flink = new Foreign_link(); -+ $flink->service = $service; -+ $flink->user_id = $user_id; -+ $flink->limit(1); -hunk ./classes/Foreign_link.php 37 -- if ($flink->find(TRUE)) { -- return $flink; -- } -+ if ($flink->find(TRUE)) { -+ return $flink; -+ } +- var $other = NULL; +- function __construct($user, $other=NULL) { ++ var $other = null; ++ function __construct($user, $other=null) { +hunk ./classes/CommandInterpreter.php 40 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 47 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 58 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 68 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 75 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 79 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 86 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 90 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 97 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 101 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 107 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 111 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 117 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 121 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 127 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 131 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 137 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 141 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 147 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 152 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 156 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 162 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 166 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 174 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 178 +- return NULL; ++ return null; +hunk ./classes/CommandInterpreter.php 187 +- return NULL; ++ return null; +hunk ./classes/Confirm_address.php 23 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Confirm_address',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Confirm_address',$k,$v); } +hunk ./classes/Consumer.php 19 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Consumer',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Consumer',$k,$v); } +hunk ./classes/Fave.php 18 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Fave',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Fave',$k,$v); } +hunk ./classes/Foreign_link.php 24 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_link',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_link',$k,$v); } hunk ./classes/Foreign_link.php 41 -- return NULL; -- } -- -- static function getByForeignID($foreign_id, $service) { -- $flink = new Foreign_link(); -- $flink->service = $service; -- $flink->foreign_id = $foreign_id; -- $flink->limit(1); -+ return NULL; -+ } -+ -+ static function getByForeignID($foreign_id, $service) { -+ $flink = new Foreign_link(); -+ $flink->service = $service; -+ $flink->foreign_id = $foreign_id; -+ $flink->limit(1); -hunk ./classes/Foreign_link.php 50 -- if ($flink->find(TRUE)) { -- return $flink; -- } -+ if ($flink->find(TRUE)) { -+ return $flink; -+ } +- return NULL; ++ return null; hunk ./classes/Foreign_link.php 54 -- return NULL; -- } -- -- # Convenience methods -- function getForeignUser() { -- $fuser = new Foreign_user(); -- $fuser->service = $this->service; -- $fuser->id = $this->foreign_id; -- -- $fuser->limit(1); -- -- if ($fuser->find(TRUE)) { -- return $fuser; -- } -- -- return NULL; -- } -- -- function getUser() { -- return User::staticGet($this->user_id); -- } -- -+ return NULL; -+ } -+ -+ # Convenience methods -+ function getForeignUser() { -+ $fuser = new Foreign_user(); -+ $fuser->service = $this->service; -+ $fuser->id = $this->foreign_id; -+ -+ $fuser->limit(1); -+ -+ if ($fuser->find(TRUE)) { -+ return $fuser; -+ } -+ -+ return NULL; -+ } -+ -+ function getUser() { -+ return User::staticGet($this->user_id); -+ } -+ -hunk ./classes/Foreign_user.php 25 -- -- // XXX: This only returns a 1->1 single obj mapping. Change? Or make -- // a getForeignUsers() that returns more than one? --Zach -- static function getForeignUser($id, $service) { -- $fuser = new Foreign_user(); -- $fuser->whereAdd("service = $service"); -- $fuser->whereAdd("id = $id"); -- $fuser->limit(1); -- -- if ($fuser->find()) { -- $fuser->fetch(); -- return $fuser; -- } -- -- return NULL; -- } -- -- function updateKeys(&$orig) { -- $parts = array(); -- foreach (array('id', 'service', 'uri', 'nickname') as $k) { -- if (strcmp($this->$k, $orig->$k) != 0) { -- $parts[] = $k . ' = ' . $this->_quote($this->$k); -- } -- } -- if (count($parts) == 0) { -- # No changes -- return true; -- } -- $toupdate = implode(', ', $parts); -+ -+ // XXX: This only returns a 1->1 single obj mapping. Change? Or make -+ // a getForeignUsers() that returns more than one? --Zach -+ static function getForeignUser($id, $service) { -+ $fuser = new Foreign_user(); -+ $fuser->whereAdd("service = $service"); -+ $fuser->whereAdd("id = $id"); -+ $fuser->limit(1); -+ -+ if ($fuser->find()) { -+ $fuser->fetch(); -+ return $fuser; -+ } -+ -+ return NULL; -+ } -+ -+ function updateKeys(&$orig) { -+ $parts = array(); -+ foreach (array('id', 'service', 'uri', 'nickname') as $k) { -+ if (strcmp($this->$k, $orig->$k) != 0) { -+ $parts[] = $k . ' = ' . $this->_quote($this->$k); -+ } -+ } -+ if (count($parts) == 0) { -+ # No changes -+ return true; -+ } -+ $toupdate = implode(', ', $parts); -hunk ./classes/Foreign_user.php 55 -- $table = $this->tableName(); -- if(common_config('db','quote_identifiers')) { -- $table = '"' . $table . '"'; -- } -- $qry = 'UPDATE ' . $table . ' SET ' . $toupdate . -- ' WHERE id = ' . $this->id; -- $orig->decache(); -- $result = $this->query($qry); -- if ($result) { -- $this->encache(); -- } -- return $result; -- } -+ $table = $this->tableName(); -+ if(common_config('db','quote_identifiers')) { -+ $table = '"' . $table . '"'; -+ } -+ $qry = 'UPDATE ' . $table . ' SET ' . $toupdate . -+ ' WHERE id = ' . $this->id; -+ $orig->decache(); -+ $result = $this->query($qry); -+ if ($result) { -+ $this->encache(); -+ } -+ return $result; -+ } -hunk ./classes/Foreign_user.php 69 -- -+ -hunk ./classes/Memcached_DataObject.php 27 -- if (is_null($v)) { -- $v = $k; -- # XXX: HACK! -- $i = new $cls; -- $keys = $i->keys(); -- $k = $keys[0]; -- unset($i); -- } -- $i = Memcached_DataObject::getcached($cls, $k, $v); -- if ($i) { -- return $i; -- } else { -- $i = DB_DataObject::staticGet($cls, $k, $v); -- if ($i) { -- $i->encache(); -- } -- return $i; -- } -- } -+ if (is_null($v)) { -+ $v = $k; -+ # XXX: HACK! -+ $i = new $cls; -+ $keys = $i->keys(); -+ $k = $keys[0]; -+ unset($i); -+ } -+ $i = Memcached_DataObject::getcached($cls, $k, $v); -+ if ($i) { -+ return $i; -+ } else { -+ $i = DB_DataObject::staticGet($cls, $k, $v); -+ if ($i) { -+ $i->encache(); -+ } -+ return $i; -+ } -+ } -hunk ./classes/Memcached_DataObject.php 47 -- function &pkeyGet($cls, $kv) { -- $i = Memcached_DataObject::multicache($cls, $kv); -- if ($i) { -- return $i; -- } else { -- $i = new $cls(); -- foreach ($kv as $k => $v) { -- $i->$k = $v; -- } -- if ($i->find(true)) { -- $i->encache(); -- } else { -- $i = NULL; -- } -+ function &pkeyGet($cls, $kv) { -+ $i = Memcached_DataObject::multicache($cls, $kv); -+ if ($i) { -+ return $i; -+ } else { -+ $i = new $cls(); -+ foreach ($kv as $k => $v) { -+ $i->$k = $v; -+ } -+ if ($i->find(true)) { -+ $i->encache(); -+ } else { -+ $i = NULL; -+ } -hunk ./classes/Memcached_DataObject.php 62 -- } -- } -+ } -+ } -hunk ./classes/Memcached_DataObject.php 65 -- function insert() { -- $result = parent::insert(); -- return $result; -- } -- -- function update($orig=NULL) { -- if (is_object($orig) && $orig instanceof Memcached_DataObject) { -- $orig->decache(); # might be different keys -- } -- $result = parent::update($orig); -- if ($result) { -- $this->encache(); -- } -- return $result; -- } -- -- function delete() { -- $this->decache(); # while we still have the values! -- return parent::delete(); -- } -- -- static function memcache() { -- return common_memcache(); -- } -- -- static function cacheKey($cls, $k, $v) { -- return common_cache_key(strtolower($cls).':'.$k.':'.$v); -- } -- -- static function getcached($cls, $k, $v) { -- $c = Memcached_DataObject::memcache(); -- if (!$c) { -- return false; -- } else { -- return $c->get(Memcached_DataObject::cacheKey($cls, $k, $v)); -- } -- } -+ function insert() { -+ $result = parent::insert(); -+ return $result; -+ } -+ -+ function update($orig=NULL) { -+ if (is_object($orig) && $orig instanceof Memcached_DataObject) { -+ $orig->decache(); # might be different keys -+ } -+ $result = parent::update($orig); -+ if ($result) { -+ $this->encache(); -+ } -+ return $result; -+ } -+ -+ function delete() { -+ $this->decache(); # while we still have the values! -+ return parent::delete(); -+ } -+ -+ static function memcache() { -+ return common_memcache(); -+ } -+ -+ static function cacheKey($cls, $k, $v) { -+ return common_cache_key(strtolower($cls).':'.$k.':'.$v); -+ } -+ -+ static function getcached($cls, $k, $v) { -+ $c = Memcached_DataObject::memcache(); -+ if (!$c) { -+ return false; -+ } else { -+ return $c->get(Memcached_DataObject::cacheKey($cls, $k, $v)); -+ } -+ } -hunk ./classes/Memcached_DataObject.php 103 -- function keyTypes() { -- global $_DB_DATAOBJECT; -+ function keyTypes() { -+ global $_DB_DATAOBJECT; -hunk ./classes/Memcached_DataObject.php 106 -- $this->databaseStructure(); -+ $this->databaseStructure(); -hunk ./classes/Memcached_DataObject.php 109 -- return $_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"]; -- } -- -- function encache() { -- $c = $this->memcache(); -- if (!$c) { -- return false; -- } else { -- $pkey = array(); -- $pval = array(); -- $types = $this->keyTypes(); -- ksort($types); -- foreach ($types as $key => $type) { -- if ($type == 'K') { -- $pkey[] = $key; -- $pval[] = $this->$key; -- } else { -- $c->set($this->cacheKey($this->tableName(), $key, $this->$key), $this); -- } -- } -- # XXX: should work for both compound and scalar pkeys -- $pvals = implode(',', $pval); -- $pkeys = implode(',', $pkey); -- $c->set($this->cacheKey($this->tableName(), $pkeys, $pvals), $this); -- } -- } -- -- function decache() { -- $c = $this->memcache(); -- if (!$c) { -- return false; -- } else { -- $pkey = array(); -- $pval = array(); -- $types = $this->keyTypes(); -- ksort($types); -- foreach ($types as $key => $type) { -- if ($type == 'K') { -- $pkey[] = $key; -- $pval[] = $this->$key; -- } else { -- $c->delete($this->cacheKey($this->tableName(), $key, $this->$key)); -- } -- } -- # should work for both compound and scalar pkeys -- # XXX: comma works for now but may not be safe separator for future keys -- $pvals = implode(',', $pval); -- $pkeys = implode(',', $pkey); -- $c->delete($this->cacheKey($this->tableName(), $pkeys, $pvals)); -- } -- } -+ return $_DB_DATAOBJECT['INI'][$this->_database][$this->__table."__keys"]; -+ } -+ -+ function encache() { -+ $c = $this->memcache(); -+ if (!$c) { -+ return false; -+ } else { -+ $pkey = array(); -+ $pval = array(); -+ $types = $this->keyTypes(); -+ ksort($types); -+ foreach ($types as $key => $type) { -+ if ($type == 'K') { -+ $pkey[] = $key; -+ $pval[] = $this->$key; -+ } else { -+ $c->set($this->cacheKey($this->tableName(), $key, $this->$key), $this); -+ } -+ } -+ # XXX: should work for both compound and scalar pkeys -+ $pvals = implode(',', $pval); -+ $pkeys = implode(',', $pkey); -+ $c->set($this->cacheKey($this->tableName(), $pkeys, $pvals), $this); -+ } -+ } -+ -+ function decache() { -+ $c = $this->memcache(); -+ if (!$c) { -+ return false; -+ } else { -+ $pkey = array(); -+ $pval = array(); -+ $types = $this->keyTypes(); -+ ksort($types); -+ foreach ($types as $key => $type) { -+ if ($type == 'K') { -+ $pkey[] = $key; -+ $pval[] = $this->$key; -+ } else { -+ $c->delete($this->cacheKey($this->tableName(), $key, $this->$key)); -+ } -+ } -+ # should work for both compound and scalar pkeys -+ # XXX: comma works for now but may not be safe separator for future keys -+ $pvals = implode(',', $pval); -+ $pkeys = implode(',', $pkey); -+ $c->delete($this->cacheKey($this->tableName(), $pkeys, $pvals)); -+ } -+ } -hunk ./classes/Memcached_DataObject.php 161 -- function multicache($cls, $kv) { -- ksort($kv); -- $c = Memcached_DataObject::memcache(); -- if (!$c) { -- return false; -- } else { -- $pkeys = implode(',', array_keys($kv)); -- $pvals = implode(',', array_values($kv)); -- return $c->get(Memcached_DataObject::cacheKey($cls, $pkeys, $pvals)); -- } -- } -+ function multicache($cls, $kv) { -+ ksort($kv); -+ $c = Memcached_DataObject::memcache(); -+ if (!$c) { -+ return false; -+ } else { -+ $pkeys = implode(',', array_keys($kv)); -+ $pvals = implode(',', array_values($kv)); -+ return $c->get(Memcached_DataObject::cacheKey($cls, $pkeys, $pvals)); -+ } -+ } -hunk ./classes/Message.php 29 -- -- function getFrom() { -- return Profile::staticGet('id', $this->from_profile); -- } -- -- function getTo() { -- return Profile::staticGet('id', $this->to_profile); -- } -- -- static function saveNew($from, $to, $content, $source) { -- -- $msg = new Message(); -- -- $msg->from_profile = $from; -- $msg->to_profile = $to; -- $msg->content = common_shorten_links($content); -- $msg->rendered = common_render_text($content); -- $msg->created = common_sql_now(); -- $msg->source = $source; -- -- $result = $msg->insert(); -- -- if (!$result) { -- common_log_db_error($msg, 'INSERT', __FILE__); -- return _('Could not insert message.'); -- } -- -- $orig = clone($msg); -- $msg->uri = common_local_url('showmessage', array('message' => $msg->id)); -- -- $result = $msg->update($orig); -- -- if (!$result) { -- common_log_db_error($msg, 'UPDATE', __FILE__); -- return _('Could not update message with new URI.'); -- } -- -- return $msg; -- } -+ -+ function getFrom() { -+ return Profile::staticGet('id', $this->from_profile); -+ } -+ -+ function getTo() { -+ return Profile::staticGet('id', $this->to_profile); -+ } -+ -+ static function saveNew($from, $to, $content, $source) { -+ -+ $msg = new Message(); -+ -+ $msg->from_profile = $from; -+ $msg->to_profile = $to; -+ $msg->content = common_shorten_links($content); -+ $msg->rendered = common_render_text($content); -+ $msg->created = common_sql_now(); -+ $msg->source = $source; -+ -+ $result = $msg->insert(); -+ -+ if (!$result) { -+ common_log_db_error($msg, 'INSERT', __FILE__); -+ return _('Could not insert message.'); -+ } -+ -+ $orig = clone($msg); -+ $msg->uri = common_local_url('showmessage', array('message' => $msg->id)); -+ -+ $result = $msg->update($orig); -+ -+ if (!$result) { -+ common_log_db_error($msg, 'UPDATE', __FILE__); -+ return _('Could not update message with new URI.'); -+ } -+ -+ return $msg; -+ } -hunk ./classes/Notice.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./classes/Notice.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./classes/Notice.php 34 -- ###START_AUTOCODE -- /* the code below is auto generated do not remove the above tag */ -+ ###START_AUTOCODE -+ /* the code below is auto generated do not remove the above tag */ -hunk ./classes/Notice.php 37 -- public $__table = 'notice'; // table name -- public $id; // int(4) primary_key not_null -- public $profile_id; // int(4) not_null -- public $uri; // varchar(255) unique_key -- public $content; // varchar(140) -- public $rendered; // text() -- public $url; // varchar(255) -- public $created; // datetime() not_null -- public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP -- public $reply_to; // int(4) -- public $is_local; // tinyint(1) -- public $source; // varchar(32) -+ public $__table = 'notice'; // table name -+ public $id; // int(4) primary_key not_null -+ public $profile_id; // int(4) not_null -+ public $uri; // varchar(255) unique_key -+ public $content; // varchar(140) -+ public $rendered; // text() -+ public $url; // varchar(255) -+ public $created; // datetime() not_null -+ public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP -+ public $reply_to; // int(4) -+ public $is_local; // tinyint(1) -+ public $source; // varchar(32) -hunk ./classes/Notice.php 50 -- /* Static get */ -- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); } -+ /* Static get */ -+ function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); } -hunk ./classes/Notice.php 53 -- /* the code above is auto generated do not remove the tag below */ -- ###END_AUTOCODE -+ /* the code above is auto generated do not remove the tag below */ -+ ###END_AUTOCODE -hunk ./classes/Notice.php 56 -- function getProfile() { -- return Profile::staticGet('id', $this->profile_id); -- } -+ function getProfile() { -+ return Profile::staticGet('id', $this->profile_id); -+ } -hunk ./classes/Notice.php 60 -- function delete() { -- $this->blowCaches(true); -- $this->blowFavesCache(true); -- $this->blowInboxes(); -- return parent::delete(); -- } -+ function delete() { -+ $this->blowCaches(true); -+ $this->blowFavesCache(true); -+ $this->blowInboxes(); -+ return parent::delete(); -+ } -hunk ./classes/Notice.php 67 -- function saveTags() { -- /* extract all #hastags */ -- $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($this->content), $match); -- if (!$count) { -- return true; -- } -+ function saveTags() { -+ /* extract all #hastags */ -+ $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($this->content), $match); -+ if (!$count) { -+ return true; -+ } -hunk ./classes/Notice.php 74 -- /* elide characters we don't want in the tag */ -- $match[1] = str_replace(array('-', '_', '.'), '', $match[1]); -+ /* elide characters we don't want in the tag */ -+ $match[1] = str_replace(array('-', '_', '.'), '', $match[1]); -hunk ./classes/Notice.php 77 -- /* Add them to the database */ -- foreach(array_unique($match[1]) as $hashtag) { -- $tag = DB_DataObject::factory('Notice_tag'); -- $tag->notice_id = $this->id; -- $tag->tag = $hashtag; -- $tag->created = $this->created; -- $id = $tag->insert(); -- if (!$id) { -- $last_error = PEAR::getStaticProperty('DB_DataObject','lastError'); -- common_log(LOG_ERR, 'DB error inserting hashtag: ' . $last_error->message); -- common_server_error(sprintf(_('DB error inserting hashtag: %s'), $last_error->message)); -- return; -- } -- } -- return true; -- } -+ /* Add them to the database */ -+ foreach(array_unique($match[1]) as $hashtag) { -+ $tag = DB_DataObject::factory('Notice_tag'); -+ $tag->notice_id = $this->id; -+ $tag->tag = $hashtag; -+ $tag->created = $this->created; -+ $id = $tag->insert(); -+ if (!$id) { -+ $last_error = PEAR::getStaticProperty('DB_DataObject','lastError'); -+ common_log(LOG_ERR, 'DB error inserting hashtag: ' . $last_error->message); -+ common_server_error(sprintf(_('DB error inserting hashtag: %s'), $last_error->message)); -+ return; -+ } -+ } -+ return true; -+ } +- return NULL; ++ return null; +hunk ./classes/Foreign_link.php 69 +- return NULL; ++ return null; +hunk ./classes/Foreign_service.php 20 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_service',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_service',$k,$v); } +hunk ./classes/Foreign_subscription.php 19 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_subscription',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_subscription',$k,$v); } +hunk ./classes/Foreign_user.php 21 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Foreign_user',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Foreign_user',$k,$v); } +hunk ./classes/Foreign_user.php 39 +- return NULL; ++ return null; +hunk ./classes/Invitation.php 20 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Invitation',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Invitation',$k,$v); } +hunk ./classes/Memcached_DataObject.php 26 +- function &staticGet($cls, $k, $v=NULL) { ++ function &staticGet($cls, $k, $v=null) { +hunk ./classes/Memcached_DataObject.php 59 +- $i = NULL; ++ $i = null; +hunk ./classes/Memcached_DataObject.php 70 +- function update($orig=NULL) { ++ function update($orig=null) { +hunk ./classes/Message.php 25 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Message',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Message',$k,$v); } +hunk ./classes/Nonce.php 21 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Nonce',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Nonce',$k,$v); } +hunk ./classes/Notice.php 51 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice',$k,$v); } hunk ./classes/Notice.php 94 -- static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) { -+ static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) { -hunk ./classes/Notice.php 96 -- $profile = Profile::staticGet($profile_id); -+ $profile = Profile::staticGet($profile_id); -hunk ./classes/Notice.php 105 -- return _('Too many notices too fast; take a breather and post again in a few minutes.'); -+ return _('Too many notices too fast; take a breather and post again in a few minutes.'); -hunk ./classes/Notice.php 108 -- $banned = common_config('profile', 'banned'); -+ $banned = common_config('profile', 'banned'); -hunk ./classes/Notice.php 110 -- if ( in_array($profile_id, $banned) || in_array($profile->nickname, $banned)) { -- common_log(LOG_WARNING, "Attempted post from banned user: $profile->nickname (user id = $profile_id)."); -+ if ( in_array($profile_id, $banned) || in_array($profile->nickname, $banned)) { -+ common_log(LOG_WARNING, "Attempted post from banned user: $profile->nickname (user id = $profile_id)."); -hunk ./classes/Notice.php 113 -- } -+ } -hunk ./classes/Notice.php 115 -- $notice = new Notice(); -- $notice->profile_id = $profile_id; -+ $notice = new Notice(); -+ $notice->profile_id = $profile_id; -hunk ./classes/Notice.php 118 -- $blacklist = common_config('public', 'blacklist'); -+ $blacklist = common_config('public', 'blacklist'); -hunk ./classes/Notice.php 120 -- # Blacklisted are non-false, but not 1, either -+ # Blacklisted are non-false, but not 1, either -hunk ./classes/Notice.php 122 -- if ($blacklist && in_array($profile_id, $blacklist)) { -- $notice->is_local = -1; -- } else { -- $notice->is_local = $is_local; -- } -+ if ($blacklist && in_array($profile_id, $blacklist)) { -+ $notice->is_local = -1; -+ } else { -+ $notice->is_local = $is_local; -+ } -hunk ./classes/Notice.php 128 -- $notice->reply_to = $reply_to; -- $notice->created = common_sql_now(); -- $notice->content = common_shorten_links($content); -- $notice->rendered = common_render_content($notice->content, $notice); -- $notice->source = $source; -- $notice->uri = $uri; -+ $notice->reply_to = $reply_to; -+ $notice->created = common_sql_now(); -+ $notice->content = common_shorten_links($content); -+ $notice->rendered = common_render_content($notice->content, $notice); -+ $notice->source = $source; -+ $notice->uri = $uri; -hunk ./classes/Notice.php 135 -- $id = $notice->insert(); -+ $id = $notice->insert(); -hunk ./classes/Notice.php 137 -- if (!$id) { -- common_log_db_error($notice, 'INSERT', __FILE__); -- return _('Problem saving notice.'); -- } -+ if (!$id) { -+ common_log_db_error($notice, 'INSERT', __FILE__); -+ return _('Problem saving notice.'); -+ } -hunk ./classes/Notice.php 142 -- # Update the URI after the notice is in the database -- if (!$uri) { -- $orig = clone($notice); -- $notice->uri = common_notice_uri($notice); -+ # Update the URI after the notice is in the database -+ if (!$uri) { -+ $orig = clone($notice); -+ $notice->uri = common_notice_uri($notice); -hunk ./classes/Notice.php 147 -- if (!$notice->update($orig)) { -- common_log_db_error($notice, 'UPDATE', __FILE__); -- return _('Problem saving notice.'); -- } -- } -+ if (!$notice->update($orig)) { -+ common_log_db_error($notice, 'UPDATE', __FILE__); -+ return _('Problem saving notice.'); -+ } -+ } -hunk ./classes/Notice.php 153 -- # XXX: do we need to change this for remote users? -+ # XXX: do we need to change this for remote users? -hunk ./classes/Notice.php 155 -- common_save_replies($notice); -- $notice->saveTags(); -+ common_save_replies($notice); -+ $notice->saveTags(); -hunk ./classes/Notice.php 158 -- # Clear the cache for subscribed users, so they'll update at next request -- # XXX: someone clever could prepend instead of clearing the cache -+ # Clear the cache for subscribed users, so they'll update at next request -+ # XXX: someone clever could prepend instead of clearing the cache -hunk ./classes/Notice.php 161 -- if (common_config('memcached', 'enabled')) { -- $notice->blowCaches(); -- } -+ if (common_config('memcached', 'enabled')) { -+ $notice->blowCaches(); -+ } -hunk ./classes/Notice.php 165 -- $notice->addToInboxes(); -- return $notice; -- } -+ $notice->addToInboxes(); -+ return $notice; -+ } -hunk ./classes/Notice.php 187 -- function blowCaches($blowLast=false) { -- $this->blowSubsCache($blowLast); -- $this->blowNoticeCache($blowLast); -- $this->blowRepliesCache($blowLast); -- $this->blowPublicCache($blowLast); -- $this->blowTagCache($blowLast); -- } -+ function blowCaches($blowLast=false) { -+ $this->blowSubsCache($blowLast); -+ $this->blowNoticeCache($blowLast); -+ $this->blowRepliesCache($blowLast); -+ $this->blowPublicCache($blowLast); -+ $this->blowTagCache($blowLast); -+ } -hunk ./classes/Notice.php 195 -- function blowTagCache($blowLast=false) { -- $cache = common_memcache(); -- if ($cache) { -- $tag = new Notice_tag(); -- $tag->notice_id = $this->id; -- if ($tag->find()) { -- while ($tag->fetch()) { -- $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag)); -- if ($blowLast) { -- $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag . ';last')); -- } -- } -- } -- $tag->free(); -- unset($tag); -- } -- } -+ function blowTagCache($blowLast=false) { -+ $cache = common_memcache(); -+ if ($cache) { -+ $tag = new Notice_tag(); -+ $tag->notice_id = $this->id; -+ if ($tag->find()) { -+ while ($tag->fetch()) { -+ $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag)); -+ if ($blowLast) { -+ $cache->delete(common_cache_key('notice_tag:notice_stream:' . $tag->tag . ';last')); -+ } -+ } -+ } -+ $tag->free(); -+ unset($tag); -+ } -+ } -hunk ./classes/Notice.php 213 -- function blowSubsCache($blowLast=false) { -- $cache = common_memcache(); -- if ($cache) { -- $user = new User(); -+ function blowSubsCache($blowLast=false) { -+ $cache = common_memcache(); -+ if ($cache) { -+ $user = new User(); -hunk ./classes/Notice.php 218 -- $user->query('SELECT id ' . -- 'FROM user JOIN subscription ON user.id = subscription.subscriber ' . -- 'WHERE subscription.subscribed = ' . $this->profile_id); -+ $user->query('SELECT id ' . -+ 'FROM user JOIN subscription ON user.id = subscription.subscriber ' . -+ 'WHERE subscription.subscribed = ' . $this->profile_id); -hunk ./classes/Notice.php 222 -- while ($user->fetch()) { -- $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id)); -- if ($blowLast) { -- $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id . ';last')); -- } -- } -- $user->free(); -- unset($user); -- } -- } -+ while ($user->fetch()) { -+ $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id)); -+ if ($blowLast) { -+ $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id . ';last')); -+ } -+ } -+ $user->free(); -+ unset($user); -+ } -+ } -hunk ./classes/Notice.php 233 -- function blowNoticeCache($blowLast=false) { -- if ($this->is_local) { -- $cache = common_memcache(); -- if ($cache) { -- $cache->delete(common_cache_key('profile:notices:'.$this->profile_id)); -- if ($blowLast) { -- $cache->delete(common_cache_key('profile:notices:'.$this->profile_id.';last')); -- } -- } -- } -- } -+ function blowNoticeCache($blowLast=false) { -+ if ($this->is_local) { -+ $cache = common_memcache(); -+ if ($cache) { -+ $cache->delete(common_cache_key('profile:notices:'.$this->profile_id)); -+ if ($blowLast) { -+ $cache->delete(common_cache_key('profile:notices:'.$this->profile_id.';last')); -+ } -+ } -+ } -+ } -hunk ./classes/Notice.php 245 -- function blowRepliesCache($blowLast=false) { -- $cache = common_memcache(); -- if ($cache) { -- $reply = new Reply(); -- $reply->notice_id = $this->id; -- if ($reply->find()) { -- while ($reply->fetch()) { -- $cache->delete(common_cache_key('user:replies:'.$reply->profile_id)); -- if ($blowLast) { -- $cache->delete(common_cache_key('user:replies:'.$reply->profile_id.';last')); -- } -- } -- } -- $reply->free(); -- unset($reply); -- } -- } -+ function blowRepliesCache($blowLast=false) { -+ $cache = common_memcache(); -+ if ($cache) { -+ $reply = new Reply(); -+ $reply->notice_id = $this->id; -+ if ($reply->find()) { -+ while ($reply->fetch()) { -+ $cache->delete(common_cache_key('user:replies:'.$reply->profile_id)); -+ if ($blowLast) { -+ $cache->delete(common_cache_key('user:replies:'.$reply->profile_id.';last')); -+ } -+ } -+ } -+ $reply->free(); -+ unset($reply); -+ } -+ } -hunk ./classes/Notice.php 263 -- function blowPublicCache($blowLast=false) { -- if ($this->is_local == 1) { -- $cache = common_memcache(); -- if ($cache) { -- $cache->delete(common_cache_key('public')); -- if ($blowLast) { -- $cache->delete(common_cache_key('public').';last'); -- } -- } -- } -- } -+ function blowPublicCache($blowLast=false) { -+ if ($this->is_local == 1) { -+ $cache = common_memcache(); -+ if ($cache) { -+ $cache->delete(common_cache_key('public')); -+ if ($blowLast) { -+ $cache->delete(common_cache_key('public').';last'); -+ } -+ } -+ } -+ } -hunk ./classes/Notice.php 275 -- function blowFavesCache($blowLast=false) { -- $cache = common_memcache(); -- if ($cache) { -- $fave = new Fave(); -- $fave->notice_id = $this->id; -- if ($fave->find()) { -- while ($fave->fetch()) { -- $cache->delete(common_cache_key('user:faves:'.$fave->user_id)); -- if ($blowLast) { -- $cache->delete(common_cache_key('user:faves:'.$fave->user_id.';last')); -- } -- } -- } -- $fave->free(); -- unset($fave); -- } -- } -+ function blowFavesCache($blowLast=false) { -+ $cache = common_memcache(); -+ if ($cache) { -+ $fave = new Fave(); -+ $fave->notice_id = $this->id; -+ if ($fave->find()) { -+ while ($fave->fetch()) { -+ $cache->delete(common_cache_key('user:faves:'.$fave->user_id)); -+ if ($blowLast) { -+ $cache->delete(common_cache_key('user:faves:'.$fave->user_id.';last')); -+ } -+ } -+ } -+ $fave->free(); -+ unset($fave); -+ } -+ } -hunk ./classes/Notice.php 293 -- # XXX: too many args; we need to move to named params or even a separate -- # class for notice streams -+ # XXX: too many args; we need to move to named params or even a separate -+ # class for notice streams +- static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) { ++ static function saveNew($profile_id, $content, $source=null, $is_local=1, $reply_to=null, $uri=null) { hunk ./classes/Notice.php 296 -- static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) { -+ static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) { -hunk ./classes/Notice.php 298 -- if (common_config('memcached', 'enabled')) { -+ if (common_config('memcached', 'enabled')) { -hunk ./classes/Notice.php 300 -- # Skip the cache if this is a since, since_id or before_id qry -- if ($since_id > 0 || $before_id > 0 || $since) { -- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since); -- } else { -- return Notice::getCachedStream($qry, $cachekey, $offset, $limit, $order); -- } -- } -+ # Skip the cache if this is a since, since_id or before_id qry -+ if ($since_id > 0 || $before_id > 0 || $since) { -+ return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since); -+ } else { -+ return Notice::getCachedStream($qry, $cachekey, $offset, $limit, $order); -+ } -+ } -hunk ./classes/Notice.php 308 -- return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since); -- } -+ return Notice::getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since); -+ } -hunk ./classes/Notice.php 311 -- static function getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since) { -+ static function getStreamDirect($qry, $offset, $limit, $since_id, $before_id, $order, $since) { -hunk ./classes/Notice.php 313 -- $needAnd = FALSE; -- $needWhere = TRUE; -+ $needAnd = FALSE; -+ $needWhere = TRUE; -hunk ./classes/Notice.php 316 -- if (preg_match('/\bWHERE\b/i', $qry)) { -- $needWhere = FALSE; -- $needAnd = TRUE; -- } -+ if (preg_match('/\bWHERE\b/i', $qry)) { -+ $needWhere = FALSE; -+ $needAnd = TRUE; -+ } -hunk ./classes/Notice.php 321 -- if ($since_id > 0) { -+ if ($since_id > 0) { -hunk ./classes/Notice.php 323 -- if ($needWhere) { -- $qry .= ' WHERE '; -- $needWhere = FALSE; -- } else { -- $qry .= ' AND '; -- } -+ if ($needWhere) { -+ $qry .= ' WHERE '; -+ $needWhere = FALSE; -+ } else { -+ $qry .= ' AND '; -+ } -hunk ./classes/Notice.php 330 -- $qry .= ' notice.id > ' . $since_id; -- } -+ $qry .= ' notice.id > ' . $since_id; -+ } -hunk ./classes/Notice.php 333 -- if ($before_id > 0) { -+ if ($before_id > 0) { -hunk ./classes/Notice.php 335 -- if ($needWhere) { -- $qry .= ' WHERE '; -- $needWhere = FALSE; -- } else { -- $qry .= ' AND '; -- } -+ if ($needWhere) { -+ $qry .= ' WHERE '; -+ $needWhere = FALSE; -+ } else { -+ $qry .= ' AND '; -+ } -hunk ./classes/Notice.php 342 -- $qry .= ' notice.id < ' . $before_id; -- } -+ $qry .= ' notice.id < ' . $before_id; -+ } -hunk ./classes/Notice.php 345 -- if ($since) { -+ if ($since) { -hunk ./classes/Notice.php 347 -- if ($needWhere) { -- $qry .= ' WHERE '; -- $needWhere = FALSE; -- } else { -- $qry .= ' AND '; -- } -+ if ($needWhere) { -+ $qry .= ' WHERE '; -+ $needWhere = FALSE; -+ } else { -+ $qry .= ' AND '; -+ } -hunk ./classes/Notice.php 354 -- $qry .= ' notice.created > \'' . date('Y-m-d H:i:s', $since) . '\''; -- } -+ $qry .= ' notice.created > \'' . date('Y-m-d H:i:s', $since) . '\''; -+ } -hunk ./classes/Notice.php 357 -- # Allow ORDER override -+ # Allow ORDER override -hunk ./classes/Notice.php 359 -- if ($order) { -- $qry .= $order; -- } else { -- $qry .= ' ORDER BY notice.created DESC, notice.id DESC '; -- } -+ if ($order) { -+ $qry .= $order; -+ } else { -+ $qry .= ' ORDER BY notice.created DESC, notice.id DESC '; -+ } -hunk ./classes/Notice.php 365 -- if (common_config('db','type') == 'pgsql') { -- $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; -- } else { -- $qry .= ' LIMIT ' . $offset . ', ' . $limit; -- } -+ if (common_config('db','type') == 'pgsql') { -+ $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset; -+ } else { -+ $qry .= ' LIMIT ' . $offset . ', ' . $limit; -+ } -hunk ./classes/Notice.php 371 -- $notice = new Notice(); -+ $notice = new Notice(); -hunk ./classes/Notice.php 373 -- $notice->query($qry); -+ $notice->query($qry); -hunk ./classes/Notice.php 375 -- return $notice; -- } -+ return $notice; -+ } -hunk ./classes/Notice.php 378 -- # XXX: this is pretty long and should probably be broken up into -- # some helper functions -+ # XXX: this is pretty long and should probably be broken up into -+ # some helper functions -hunk ./classes/Notice.php 381 -- static function getCachedStream($qry, $cachekey, $offset, $limit, $order) { -+ static function getCachedStream($qry, $cachekey, $offset, $limit, $order) { -hunk ./classes/Notice.php 383 -- # If outside our cache window, just go to the DB -+ # If outside our cache window, just go to the DB -hunk ./classes/Notice.php 385 -- if ($offset + $limit > NOTICE_CACHE_WINDOW) { -- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); -- } -+ if ($offset + $limit > NOTICE_CACHE_WINDOW) { -+ return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); -+ } -hunk ./classes/Notice.php 389 -- # Get the cache; if we can't, just go to the DB -+ # Get the cache; if we can't, just go to the DB -hunk ./classes/Notice.php 391 -- $cache = common_memcache(); -+ $cache = common_memcache(); -hunk ./classes/Notice.php 393 -- if (!$cache) { -- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); -- } -+ if (!$cache) { -+ return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); -+ } -hunk ./classes/Notice.php 397 -- # Get the notices out of the cache -+ # Get the notices out of the cache -hunk ./classes/Notice.php 399 -- $notices = $cache->get(common_cache_key($cachekey)); -+ $notices = $cache->get(common_cache_key($cachekey)); -hunk ./classes/Notice.php 401 -- # On a cache hit, return a DB-object-like wrapper -+ # On a cache hit, return a DB-object-like wrapper -hunk ./classes/Notice.php 403 -- if ($notices !== FALSE) { -- $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit)); -- return $wrapper; -- } -+ if ($notices !== FALSE) { -+ $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit)); -+ return $wrapper; -+ } -hunk ./classes/Notice.php 408 -- # If the cache was invalidated because of new data being -- # added, we can try and just get the new stuff. We keep an additional -- # copy of the data at the key + ';last' -+ # If the cache was invalidated because of new data being -+ # added, we can try and just get the new stuff. We keep an additional -+ # copy of the data at the key + ';last' -hunk ./classes/Notice.php 412 -- # No cache hit. Try to get the *last* cached version -+ # No cache hit. Try to get the *last* cached version -hunk ./classes/Notice.php 414 -- $last_notices = $cache->get(common_cache_key($cachekey) . ';last'); -+ $last_notices = $cache->get(common_cache_key($cachekey) . ';last'); -hunk ./classes/Notice.php 416 -- if ($last_notices) { -+ if ($last_notices) { -hunk ./classes/Notice.php 418 -- # Reverse-chron order, so last ID is last. -+ # Reverse-chron order, so last ID is last. -hunk ./classes/Notice.php 420 -- $last_id = $last_notices[0]->id; -+ $last_id = $last_notices[0]->id; -hunk ./classes/Notice.php 422 -- # XXX: this assumes monotonically increasing IDs; a fair -- # bet with our DB. -+ # XXX: this assumes monotonically increasing IDs; a fair -+ # bet with our DB. -hunk ./classes/Notice.php 425 -- $new_notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, -- $last_id, NULL, $order, NULL); -+ $new_notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, -+ $last_id, NULL, $order, NULL); -hunk ./classes/Notice.php 428 -- if ($new_notice) { -- $new_notices = array(); -- while ($new_notice->fetch()) { -- $new_notices[] = clone($new_notice); -- } -- $new_notice->free(); -- $notices = array_slice(array_merge($new_notices, $last_notices), -- 0, NOTICE_CACHE_WINDOW); -+ if ($new_notice) { -+ $new_notices = array(); -+ while ($new_notice->fetch()) { -+ $new_notices[] = clone($new_notice); -+ } -+ $new_notice->free(); -+ $notices = array_slice(array_merge($new_notices, $last_notices), -+ 0, NOTICE_CACHE_WINDOW); -hunk ./classes/Notice.php 437 -- # Store the array in the cache for next time -+ # Store the array in the cache for next time -hunk ./classes/Notice.php 439 -- $result = $cache->set(common_cache_key($cachekey), $notices); -- $result = $cache->set(common_cache_key($cachekey) . ';last', $notices); -+ $result = $cache->set(common_cache_key($cachekey), $notices); -+ $result = $cache->set(common_cache_key($cachekey) . ';last', $notices); -hunk ./classes/Notice.php 442 -- # return a wrapper of the array for use now -+ # return a wrapper of the array for use now -hunk ./classes/Notice.php 444 -- return new NoticeWrapper(array_slice($notices, $offset, $limit)); -- } -- } -+ return new NoticeWrapper(array_slice($notices, $offset, $limit)); -+ } -+ } -hunk ./classes/Notice.php 448 -- # Otherwise, get the full cache window out of the DB -+ # Otherwise, get the full cache window out of the DB +- static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=NULL, $since=NULL) { ++ static function getStream($qry, $cachekey, $offset=0, $limit=20, $since_id=0, $before_id=0, $order=null, $since=null) { +hunk ./classes/Notice.php 386 +- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); ++ return Notice::getStreamDirect($qry, $offset, $limit, null, null, $order, null); +hunk ./classes/Notice.php 394 +- return Notice::getStreamDirect($qry, $offset, $limit, NULL, NULL, $order, NULL); ++ return Notice::getStreamDirect($qry, $offset, $limit, null, null, $order, null); +hunk ./classes/Notice.php 426 +- $last_id, NULL, $order, NULL); ++ $last_id, null, $order, null); hunk ./classes/Notice.php 450 -- $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, NULL, NULL, $order, NULL); -+ $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, NULL, NULL, $order, NULL); -hunk ./classes/Notice.php 452 -- # If there are no hits, just return the value -+ # If there are no hits, just return the value -hunk ./classes/Notice.php 454 -- if (!$notice) { -- return $notice; -- } -+ if (!$notice) { -+ return $notice; -+ } -hunk ./classes/Notice.php 458 -- # Pack results into an array -+ # Pack results into an array -hunk ./classes/Notice.php 460 -- $notices = array(); -+ $notices = array(); -hunk ./classes/Notice.php 462 -- while ($notice->fetch()) { -- $notices[] = clone($notice); -- } -+ while ($notice->fetch()) { -+ $notices[] = clone($notice); -+ } -hunk ./classes/Notice.php 466 -- $notice->free(); -+ $notice->free(); -hunk ./classes/Notice.php 468 -- # Store the array in the cache for next time -+ # Store the array in the cache for next time -hunk ./classes/Notice.php 470 -- $result = $cache->set(common_cache_key($cachekey), $notices); -- $result = $cache->set(common_cache_key($cachekey) . ';last', $notices); -+ $result = $cache->set(common_cache_key($cachekey), $notices); -+ $result = $cache->set(common_cache_key($cachekey) . ';last', $notices); -hunk ./classes/Notice.php 473 -- # return a wrapper of the array for use now -+ # return a wrapper of the array for use now -hunk ./classes/Notice.php 475 -- $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit)); -+ $wrapper = new NoticeWrapper(array_slice($notices, $offset, $limit)); -hunk ./classes/Notice.php 477 -- return $wrapper; -- } -+ return $wrapper; -+ } +- $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, NULL, NULL, $order, NULL); ++ $notice = Notice::getStreamDirect($qry, 0, NOTICE_CACHE_WINDOW, null, null, $order, null); hunk ./classes/Notice.php 480 -- function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) { -+ function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) { -hunk ./classes/Notice.php 482 -- $parts = array(); -+ $parts = array(); -hunk ./classes/Notice.php 484 -- $qry = 'SELECT * FROM notice '; -+ $qry = 'SELECT * FROM notice '; -hunk ./classes/Notice.php 486 -- if (common_config('public', 'localonly')) { -- $parts[] = 'is_local = 1'; -- } else { -- # -1 == blacklisted -- $parts[] = 'is_local != -1'; -- } -+ if (common_config('public', 'localonly')) { -+ $parts[] = 'is_local = 1'; -+ } else { -+ # -1 == blacklisted -+ $parts[] = 'is_local != -1'; -+ } -hunk ./classes/Notice.php 493 -- if ($parts) { -- $qry .= ' WHERE ' . implode(' AND ', $parts); -- } -+ if ($parts) { -+ $qry .= ' WHERE ' . implode(' AND ', $parts); -+ } -hunk ./classes/Notice.php 497 -- return Notice::getStream($qry, -- 'public', -- $offset, $limit, $since_id, $before_id, NULL, $since); -- } -+ return Notice::getStream($qry, -+ 'public', -+ $offset, $limit, $since_id, $before_id, NULL, $since); -+ } -hunk ./classes/Notice.php 502 -- function addToInboxes() { -- $enabled = common_config('inboxes', 'enabled'); -+ function addToInboxes() { -+ $enabled = common_config('inboxes', 'enabled'); -hunk ./classes/Notice.php 505 -- if ($enabled === true || $enabled === 'transitional') { -- $inbox = new Notice_inbox(); -- $qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' . -- 'SELECT user.id, ' . $this->id . ', "' . $this->created . '" ' . -- 'FROM user JOIN subscription ON user.id = subscription.subscriber ' . -- 'WHERE subscription.subscribed = ' . $this->profile_id . ' ' . -- 'AND NOT EXISTS (SELECT user_id, notice_id ' . -- 'FROM notice_inbox ' . -- 'WHERE user_id = user.id ' . -- 'AND notice_id = ' . $this->id . ' )'; -- if ($enabled === 'transitional') { -- $qry .= ' AND user.inboxed = 1'; -- } -- $inbox->query($qry); -- } -- return; -- } -+ if ($enabled === true || $enabled === 'transitional') { -+ $inbox = new Notice_inbox(); -+ $qry = 'INSERT INTO notice_inbox (user_id, notice_id, created) ' . -+ 'SELECT user.id, ' . $this->id . ', "' . $this->created . '" ' . -+ 'FROM user JOIN subscription ON user.id = subscription.subscriber ' . -+ 'WHERE subscription.subscribed = ' . $this->profile_id . ' ' . -+ 'AND NOT EXISTS (SELECT user_id, notice_id ' . -+ 'FROM notice_inbox ' . -+ 'WHERE user_id = user.id ' . -+ 'AND notice_id = ' . $this->id . ' )'; -+ if ($enabled === 'transitional') { -+ $qry .= ' AND user.inboxed = 1'; -+ } -+ $inbox->query($qry); -+ } -+ return; -+ } -hunk ./classes/Notice.php 523 -- # Delete from inboxes if we're deleted. -+ # Delete from inboxes if we're deleted. -hunk ./classes/Notice.php 525 -- function blowInboxes() { -+ function blowInboxes() { -hunk ./classes/Notice.php 527 -- $enabled = common_config('inboxes', 'enabled'); -+ $enabled = common_config('inboxes', 'enabled'); -hunk ./classes/Notice.php 529 -- if ($enabled === true || $enabled === 'transitional') { -- $inbox = new Notice_inbox(); -- $inbox->notice_id = $this->id; -- $inbox->delete(); -- } -+ if ($enabled === true || $enabled === 'transitional') { -+ $inbox = new Notice_inbox(); -+ $inbox->notice_id = $this->id; -+ $inbox->delete(); -+ } -hunk ./classes/Notice.php 535 -- return; -- } -+ return; -+ } +- function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=NULL) { ++ function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0, $since=null) { +hunk ./classes/Notice.php 499 +- $offset, $limit, $since_id, $before_id, NULL, $since); ++ $offset, $limit, $since_id, $before_id, null, $since); hunk ./classes/NoticeWrapper.php 38 -- var $notices = NULL; -- var $i = -1; -- -- function __construct($arr) { -- $this->notices = $arr; -- } -- -- function fetch() { -- static $fields = array('id', 'profile_id', 'uri', 'content', 'rendered', -- 'url', 'created', 'modified', 'reply_to', 'is_local', 'source'); -- $this->i++; -- if ($this->i >= count($this->notices)) { -- return false; -- } else { -- $n = $this->notices[$this->i]; -- foreach ($fields as $f) { -- $this->$f = $n->$f; -- } -- return true; -- } -- } -+ var $notices = NULL; -+ var $i = -1; -+ -+ function __construct($arr) { -+ $this->notices = $arr; -+ } -+ -+ function fetch() { -+ static $fields = array('id', 'profile_id', 'uri', 'content', 'rendered', -+ 'url', 'created', 'modified', 'reply_to', 'is_local', 'source'); -+ $this->i++; -+ if ($this->i >= count($this->notices)) { -+ return false; -+ } else { -+ $n = $this->notices[$this->i]; -+ foreach ($fields as $f) { -+ $this->$f = $n->$f; -+ } -+ return true; -+ } -+ } -hunk ./classes/Notice_tag.php 37 -- -- static function getStream($tag, $offset=0, $limit=20) { -- $qry = -- 'SELECT notice.* ' . -- 'FROM notice JOIN notice_tag ON notice.id = notice_tag.notice_id ' . -- 'WHERE notice_tag.tag = "%s" '; -+ -+ static function getStream($tag, $offset=0, $limit=20) { -+ $qry = -+ 'SELECT notice.* ' . -+ 'FROM notice JOIN notice_tag ON notice.id = notice_tag.notice_id ' . -+ 'WHERE notice_tag.tag = "%s" '; -hunk ./classes/Notice_tag.php 44 -- return Notice::getStream(sprintf($qry, $tag), -- 'notice_tag:notice_stream:' . common_keyize($tag), -- $offset, $limit); -- } -- -- function blowCache() { -- $cache = common_memcache(); -- if ($cache) { -- $cache->delete(common_cache_key('notice_tag:notice_stream:' . $this->tag)); -- } -- } -+ return Notice::getStream(sprintf($qry, $tag), -+ 'notice_tag:notice_stream:' . common_keyize($tag), -+ $offset, $limit); -+ } -+ -+ function blowCache() { -+ $cache = common_memcache(); -+ if ($cache) { -+ $cache->delete(common_cache_key('notice_tag:notice_stream:' . $this->tag)); -+ } -+ } +- var $notices = NULL; ++ var $notices = null; +hunk ./classes/Notice_inbox.php 36 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_inbox',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_inbox',$k,$v); } +hunk ./classes/Notice_source.php 20 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_source',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_source',$k,$v); } +hunk ./classes/Notice_tag.php 33 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice_tag',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Notice_tag',$k,$v); } +hunk ./classes/Profile.php 44 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile',$k,$v); } hunk ./classes/Profile.php 49 -- function getAvatar($width, $height=NULL) { -- if (is_null($height)) { -- $height = $width; -- } -- return Avatar::pkeyGet(array('profile_id' => $this->id, -- 'width' => $width, -- 'height' => $height)); -- } -+ function getAvatar($width, $height=NULL) { -+ if (is_null($height)) { -+ $height = $width; -+ } -+ return Avatar::pkeyGet(array('profile_id' => $this->id, -+ 'width' => $width, -+ 'height' => $height)); -+ } -hunk ./classes/Profile.php 58 -- function getOriginalAvatar() { -- $avatar = DB_DataObject::factory('avatar'); -- $avatar->profile_id = $this->id; -- $avatar->original = true; -- if ($avatar->find(true)) { -- return $avatar; -- } else { -- return NULL; -- } -- } -+ function getOriginalAvatar() { -+ $avatar = DB_DataObject::factory('avatar'); -+ $avatar->profile_id = $this->id; -+ $avatar->original = true; -+ if ($avatar->find(true)) { -+ return $avatar; -+ } else { -+ return NULL; -+ } -+ } -hunk ./classes/Profile.php 69 -- function setOriginal($source) { -+ function setOriginal($source) { -hunk ./classes/Profile.php 71 -- $info = @getimagesize($source); -+ $info = @getimagesize($source); -hunk ./classes/Profile.php 73 -- if (!$info) { -- return NULL; -- } -+ if (!$info) { -+ return NULL; -+ } -hunk ./classes/Profile.php 77 -- $filename = common_avatar_filename($this->id, -- image_type_to_extension($info[2]), -- NULL, common_timestamp()); -- $filepath = common_avatar_path($filename); -+ $filename = common_avatar_filename($this->id, -+ image_type_to_extension($info[2]), -+ NULL, common_timestamp()); -+ $filepath = common_avatar_path($filename); -hunk ./classes/Profile.php 82 -- copy($source, $filepath); -+ copy($source, $filepath); -hunk ./classes/Profile.php 84 -- $avatar = new Avatar(); -+ $avatar = new Avatar(); -hunk ./classes/Profile.php 86 -- $avatar->profile_id = $this->id; -- $avatar->width = $info[0]; -- $avatar->height = $info[1]; -- $avatar->mediatype = image_type_to_mime_type($info[2]); -- $avatar->filename = $filename; -- $avatar->original = true; -- $avatar->url = common_avatar_url($filename); -- $avatar->created = DB_DataObject_Cast::dateTime(); # current time -+ $avatar->profile_id = $this->id; -+ $avatar->width = $info[0]; -+ $avatar->height = $info[1]; -+ $avatar->mediatype = image_type_to_mime_type($info[2]); -+ $avatar->filename = $filename; -+ $avatar->original = true; -+ $avatar->url = common_avatar_url($filename); -+ $avatar->created = DB_DataObject_Cast::dateTime(); # current time -hunk ./classes/Profile.php 95 -- # XXX: start a transaction here -+ # XXX: start a transaction here -hunk ./classes/Profile.php 97 -- if (!$this->delete_avatars()) { -- @unlink($filepath); -- return NULL; -- } -+ if (!$this->delete_avatars()) { -+ @unlink($filepath); -+ return NULL; -+ } -hunk ./classes/Profile.php 102 -- if (!$avatar->insert()) { -- @unlink($filepath); -- return NULL; -- } -+ if (!$avatar->insert()) { -+ @unlink($filepath); -+ return NULL; -+ } -hunk ./classes/Profile.php 107 -- foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) { -- # We don't do a scaled one if original is our scaled size -- if (!($avatar->width == $size && $avatar->height == $size)) { -- $s = $avatar->scale($size); -- if (!$s) { -- return NULL; -- } -- } -- } -+ foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) { -+ # We don't do a scaled one if original is our scaled size -+ if (!($avatar->width == $size && $avatar->height == $size)) { -+ $s = $avatar->scale($size); -+ if (!$s) { -+ return NULL; -+ } -+ } -+ } -hunk ./classes/Profile.php 117 -- return $avatar; -- } -+ return $avatar; -+ } -hunk ./classes/Profile.php 120 -- function delete_avatars() { -- $avatar = new Avatar(); -- $avatar->profile_id = $this->id; -- $avatar->find(); -- while ($avatar->fetch()) { -- $avatar->delete(); -- } -- return true; -- } -+ function delete_avatars() { -+ $avatar = new Avatar(); -+ $avatar->profile_id = $this->id; -+ $avatar->find(); -+ while ($avatar->fetch()) { -+ $avatar->delete(); -+ } -+ return true; -+ } -hunk ./classes/Profile.php 130 -- function getBestName() { -- return ($this->fullname) ? $this->fullname : $this->nickname; -- } -+ function getBestName() { -+ return ($this->fullname) ? $this->fullname : $this->nickname; -+ } +- function getAvatar($width, $height=NULL) { ++ function getAvatar($width, $height=null) { +hunk ./classes/Profile.php 65 +- return NULL; ++ return null; +hunk ./classes/Profile.php 74 +- return NULL; ++ return null; +hunk ./classes/Profile.php 79 +- NULL, common_timestamp()); ++ null, common_timestamp()); +hunk ./classes/Profile.php 99 +- return NULL; ++ return null; +hunk ./classes/Profile.php 104 +- return NULL; ++ return null; +hunk ./classes/Profile.php 112 +- return NULL; ++ return null; hunk ./classes/Profile.php 135 -- function getCurrentNotice($dt=NULL) { -- $notice = new Notice(); -- $notice->profile_id = $this->id; -- if ($dt) { -- $notice->whereAdd('created < "' . $dt . '"'); -- } -- $notice->orderBy('created DESC, notice.id DESC'); -- $notice->limit(1); -- if ($notice->find(true)) { -- return $notice; -- } -- return NULL; -- } -+ function getCurrentNotice($dt=NULL) { -+ $notice = new Notice(); -+ $notice->profile_id = $this->id; -+ if ($dt) { -+ $notice->whereAdd('created < "' . $dt . '"'); -+ } -+ $notice->orderBy('created DESC, notice.id DESC'); -+ $notice->limit(1); -+ if ($notice->find(true)) { -+ return $notice; -+ } -+ return NULL; -+ } -hunk ./classes/Profile.php 149 -- function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) { -- $qry = -- 'SELECT * ' . -- 'FROM notice ' . -- 'WHERE profile_id = %d '; -+ function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) { -+ $qry = -+ 'SELECT * ' . -+ 'FROM notice ' . -+ 'WHERE profile_id = %d '; -hunk ./classes/Profile.php 155 -- return Notice::getStream(sprintf($qry, $this->id), -- 'profile:notices:'.$this->id, -- $offset, $limit, $since_id, $before_id); -- } -+ return Notice::getStream(sprintf($qry, $this->id), -+ 'profile:notices:'.$this->id, -+ $offset, $limit, $since_id, $before_id); -+ } -hunk ./classes/Profile_tag.php 24 -- static function getTags($tagger, $tagged) { -- -- $tags = array(); -+ static function getTags($tagger, $tagged) { -+ -+ $tags = array(); -hunk ./classes/Profile_tag.php 28 -- # XXX: store this in memcached -- -- $profile_tag = new Profile_tag(); -- $profile_tag->tagger = $tagger; -- $profile_tag->tagged = $tagged; -- -- $profile_tag->find(); -- -- while ($profile_tag->fetch()) { -- $tags[] = $profile_tag->tag; -- } -- -- $profile_tag->free(); -- -- return $tags; -- } -- -- static function setTags($tagger, $tagged, $newtags) { -- -- $oldtags = Profile_tag::getTags($tagger, $tagged); -- -- # Delete stuff that's old that not in new -- -- $to_delete = array_diff($oldtags, $newtags); -- -- # Insert stuff that's in new and not in old -- -- $to_insert = array_diff($newtags, $oldtags); -- -- $profile_tag = new Profile_tag(); -- -- $profile_tag->tagger = $tagger; -- $profile_tag->tagged = $tagged; -- -- $profile_tag->query('BEGIN'); -- -- foreach ($to_delete as $deltag) { -- $profile_tag->tag = $deltag; -- $result = $profile_tag->delete(); -- if (!$result) { -- common_log_db_error($profile_tag, 'DELETE', __FILE__); -- return false; -- } -- } -- -- foreach ($to_insert as $instag) { -- $profile_tag->tag = $instag; -- $result = $profile_tag->insert(); -- if (!$result) { -- common_log_db_error($profile_tag, 'INSERT', __FILE__); -- return false; -- } -- } -- -- $profile_tag->query('COMMIT'); -- -- return true; -- } -- -- # Return profiles with a given tag -- static function getTagged($tagger, $tag) { -- $profile = new Profile(); -- $profile->query('SELECT profile.* ' . -- 'FROM profile JOIN profile_tag ' . -- 'ON profile.id = profile_tag.tagged ' . -- 'WHERE profile_tag.tagger = ' . $tagger . ' ' . -- 'AND profile_tag.tag = "' . $tag . '" '); -- $tagged = array(); -- while ($profile->fetch()) { -- $tagged[] = clone($profile); -- } -- return $tagged; -- } -+ # XXX: store this in memcached -+ -+ $profile_tag = new Profile_tag(); -+ $profile_tag->tagger = $tagger; -+ $profile_tag->tagged = $tagged; -+ -+ $profile_tag->find(); -+ -+ while ($profile_tag->fetch()) { -+ $tags[] = $profile_tag->tag; -+ } -+ -+ $profile_tag->free(); -+ -+ return $tags; -+ } -+ -+ static function setTags($tagger, $tagged, $newtags) { -+ -+ $oldtags = Profile_tag::getTags($tagger, $tagged); -+ -+ # Delete stuff that's old that not in new -+ -+ $to_delete = array_diff($oldtags, $newtags); -+ -+ # Insert stuff that's in new and not in old -+ -+ $to_insert = array_diff($newtags, $oldtags); -+ -+ $profile_tag = new Profile_tag(); -+ -+ $profile_tag->tagger = $tagger; -+ $profile_tag->tagged = $tagged; -+ -+ $profile_tag->query('BEGIN'); -+ -+ foreach ($to_delete as $deltag) { -+ $profile_tag->tag = $deltag; -+ $result = $profile_tag->delete(); -+ if (!$result) { -+ common_log_db_error($profile_tag, 'DELETE', __FILE__); -+ return false; -+ } -+ } -+ -+ foreach ($to_insert as $instag) { -+ $profile_tag->tag = $instag; -+ $result = $profile_tag->insert(); -+ if (!$result) { -+ common_log_db_error($profile_tag, 'INSERT', __FILE__); -+ return false; -+ } -+ } -+ -+ $profile_tag->query('COMMIT'); -+ -+ return true; -+ } -+ -+ # Return profiles with a given tag -+ static function getTagged($tagger, $tag) { -+ $profile = new Profile(); -+ $profile->query('SELECT profile.* ' . -+ 'FROM profile JOIN profile_tag ' . -+ 'ON profile.id = profile_tag.tagged ' . -+ 'WHERE profile_tag.tagger = ' . $tagger . ' ' . -+ 'AND profile_tag.tag = "' . $tag . '" '); -+ $tagged = array(); -+ while ($profile->fetch()) { -+ $tagged[] = clone($profile); -+ } -+ return $tagged; -+ } -hunk ./classes/Queue_item.php 25 -- -- static function top($transport) { -+ -+ static function top($transport) { -hunk ./classes/Queue_item.php 28 -- $qi = new Queue_item(); -- $qi->transport = $transport; -- $qi->orderBy('created'); -- $qi->whereAdd('claimed is NULL'); -+ $qi = new Queue_item(); -+ $qi->transport = $transport; -+ $qi->orderBy('created'); -+ $qi->whereAdd('claimed is NULL'); -hunk ./classes/Queue_item.php 33 -- $qi->limit(1); -+ $qi->limit(1); -hunk ./classes/Queue_item.php 35 -- $cnt = $qi->find(TRUE); -+ $cnt = $qi->find(TRUE); -hunk ./classes/Queue_item.php 37 -- if ($cnt) { -- # XXX: potential race condition -- # can we force it to only update if claimed is still NULL -- # (or old)? -- common_log(LOG_INFO, 'claiming queue item = ' . $qi->notice_id . ' for transport ' . $transport); -- $orig = clone($qi); -- $qi->claimed = common_sql_now(); -- $result = $qi->update($orig); -- if ($result) { -- common_log(LOG_INFO, 'claim succeeded.'); -- return $qi; -- } else { -- common_log(LOG_INFO, 'claim failed.'); -- } -- } -- $qi = NULL; -- return NULL; -- } -+ if ($cnt) { -+ # XXX: potential race condition -+ # can we force it to only update if claimed is still NULL -+ # (or old)? -+ common_log(LOG_INFO, 'claiming queue item = ' . $qi->notice_id . ' for transport ' . $transport); -+ $orig = clone($qi); -+ $qi->claimed = common_sql_now(); -+ $result = $qi->update($orig); -+ if ($result) { -+ common_log(LOG_INFO, 'claim succeeded.'); -+ return $qi; -+ } else { -+ common_log(LOG_INFO, 'claim failed.'); -+ } -+ } -+ $qi = NULL; -+ return NULL; -+ } -hunk ./classes/Sms_carrier.php 24 -- -- function toEmailAddress($sms) { -- return sprintf($this->email_pattern, $sms); -- } -+ -+ function toEmailAddress($sms) { -+ return sprintf($this->email_pattern, $sms); -+ } -hunk ./classes/Subscription.php 47 -- -- function &pkeyGet($kv) { -- return Memcached_DataObject::pkeyGet('Subscription', $kv); -- } -+ -+ function &pkeyGet($kv) { -+ return Memcached_DataObject::pkeyGet('Subscription', $kv); -+ } -hunk ./classes/User.php 70 -- function getProfile() { -- return Profile::staticGet('id', $this->id); -- } -+ function getProfile() { -+ return Profile::staticGet('id', $this->id); -+ } -hunk ./classes/User.php 74 -- function isSubscribed($other) { -- assert(!is_null($other)); -- # XXX: cache results of this query -- $sub = Subscription::pkeyGet(array('subscriber' => $this->id, -- 'subscribed' => $other->id)); -- return (is_null($sub)) ? false : true; -- } -+ function isSubscribed($other) { -+ assert(!is_null($other)); -+ # XXX: cache results of this query -+ $sub = Subscription::pkeyGet(array('subscriber' => $this->id, -+ 'subscribed' => $other->id)); -+ return (is_null($sub)) ? false : true; -+ } -hunk ./classes/User.php 82 -- # 'update' won't write key columns, so we have to do it ourselves. -+ # 'update' won't write key columns, so we have to do it ourselves. -hunk ./classes/User.php 84 -- function updateKeys(&$orig) { -- $parts = array(); -- foreach (array('nickname', 'email', 'jabber', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) { -- if (strcmp($this->$k, $orig->$k) != 0) { -- $parts[] = $k . ' = ' . $this->_quote($this->$k); -- } -- } -- if (count($parts) == 0) { -- # No changes -- return true; -- } -- $toupdate = implode(', ', $parts); -+ function updateKeys(&$orig) { -+ $parts = array(); -+ foreach (array('nickname', 'email', 'jabber', 'incomingemail', 'sms', 'carrier', 'smsemail', 'language', 'timezone') as $k) { -+ if (strcmp($this->$k, $orig->$k) != 0) { -+ $parts[] = $k . ' = ' . $this->_quote($this->$k); -+ } -+ } -+ if (count($parts) == 0) { -+ # No changes -+ return true; -+ } -+ $toupdate = implode(', ', $parts); -hunk ./classes/User.php 97 -- $table = $this->tableName(); -- if(common_config('db','quote_identifiers')) { -- $table = '"' . $table . '"'; -- } -- $qry = 'UPDATE ' . $table . ' SET ' . $toupdate . -- ' WHERE id = ' . $this->id; -- $orig->decache(); -- $result = $this->query($qry); -- if ($result) { -- $this->encache(); -- } -- return $result; -- } -+ $table = $this->tableName(); -+ if(common_config('db','quote_identifiers')) { -+ $table = '"' . $table . '"'; -+ } -+ $qry = 'UPDATE ' . $table . ' SET ' . $toupdate . -+ ' WHERE id = ' . $this->id; -+ $orig->decache(); -+ $result = $this->query($qry); -+ if ($result) { -+ $this->encache(); -+ } -+ return $result; -+ } -hunk ./classes/User.php 111 -- function allowed_nickname($nickname) { -- # XXX: should already be validated for size, content, etc. -- static $blacklist = array('rss', 'xrds', 'doc', 'main', -- 'settings', 'notice', 'user', -- 'search', 'avatar', 'tag', 'tags', -- 'api', 'message'); -- $merged = array_merge($blacklist, common_config('nickname', 'blacklist')); -- return !in_array($nickname, $merged); -- } -+ function allowed_nickname($nickname) { -+ # XXX: should already be validated for size, content, etc. -+ static $blacklist = array('rss', 'xrds', 'doc', 'main', -+ 'settings', 'notice', 'user', -+ 'search', 'avatar', 'tag', 'tags', -+ 'api', 'message'); -+ $merged = array_merge($blacklist, common_config('nickname', 'blacklist')); -+ return !in_array($nickname, $merged); -+ } +- function getCurrentNotice($dt=NULL) { ++ function getCurrentNotice($dt=null) { +hunk ./classes/Profile.php 146 +- return NULL; ++ return null; +hunk ./classes/Profile_block.php 39 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_block',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile_block',$k,$v); } +hunk ./classes/Profile_tag.php 19 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Profile_tag',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Profile_tag',$k,$v); } +hunk ./classes/Queue_item.php 19 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Queue_item',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Queue_item',$k,$v); } +hunk ./classes/Queue_item.php 31 +- $qi->whereAdd('claimed is NULL'); ++ $qi->whereAdd('claimed is null'); +hunk ./classes/Queue_item.php 39 +- # can we force it to only update if claimed is still NULL ++ # can we force it to only update if claimed is still null +hunk ./classes/Queue_item.php 52 +- $qi = NULL; +- return NULL; ++ $qi = null; ++ return null; +hunk ./classes/Remember_me.php 18 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Remember_me',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Remember_me',$k,$v); } +hunk ./classes/Remote_profile.php 41 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Remote_profile',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Remote_profile',$k,$v); } +hunk ./classes/Reply.php 19 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Reply',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Reply',$k,$v); } +hunk ./classes/Sms_carrier.php 20 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Sms_carrier',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Sms_carrier',$k,$v); } +hunk ./classes/Subscription.php 43 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Subscription',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Subscription',$k,$v); } +hunk ./classes/Token.php 22 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Token',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('Token',$k,$v); } +hunk ./classes/User.php 65 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('User',$k,$v); } hunk ./classes/User.php 121 -- function getCurrentNotice($dt=NULL) { -- $profile = $this->getProfile(); -- if (!$profile) { -- return NULL; -- } -- return $profile->getCurrentNotice($dt); -- } -+ function getCurrentNotice($dt=NULL) { -+ $profile = $this->getProfile(); -+ if (!$profile) { -+ return NULL; -+ } -+ return $profile->getCurrentNotice($dt); -+ } -hunk ./classes/User.php 129 -- function getCarrier() { -- return Sms_carrier::staticGet('id', $this->carrier); -- } -+ function getCarrier() { -+ return Sms_carrier::staticGet('id', $this->carrier); -+ } -hunk ./classes/User.php 133 -- function subscribeTo($other) { -- $sub = new Subscription(); -- $sub->subscriber = $this->id; -- $sub->subscribed = $other->id; -+ function subscribeTo($other) { -+ $sub = new Subscription(); -+ $sub->subscriber = $this->id; -+ $sub->subscribed = $other->id; -hunk ./classes/User.php 138 -- $sub->created = common_sql_now(); # current time -+ $sub->created = common_sql_now(); # current time -hunk ./classes/User.php 140 -- if (!$sub->insert()) { -- return false; -- } -+ if (!$sub->insert()) { -+ return false; -+ } -hunk ./classes/User.php 144 -- return true; -- } -+ return true; -+ } -hunk ./classes/User.php 161 -- static function register($fields) { -+ static function register($fields) { -hunk ./classes/User.php 163 -- # MAGICALLY put fields into current scope -+ # MAGICALLY put fields into current scope -hunk ./classes/User.php 165 -- extract($fields); -+ extract($fields); -hunk ./classes/User.php 167 -- $profile = new Profile(); -+ $profile = new Profile(); -hunk ./classes/User.php 169 -- $profile->query('BEGIN'); -+ $profile->query('BEGIN'); -hunk ./classes/User.php 171 -- $profile->nickname = $nickname; -- $profile->profileurl = common_profile_url($nickname); -+ $profile->nickname = $nickname; -+ $profile->profileurl = common_profile_url($nickname); -hunk ./classes/User.php 174 -- if ($fullname) { -- $profile->fullname = $fullname; -- } -- if ($homepage) { -- $profile->homepage = $homepage; -- } -- if ($bio) { -- $profile->bio = $bio; -- } -- if ($location) { -- $profile->location = $location; -- } -+ if ($fullname) { -+ $profile->fullname = $fullname; -+ } -+ if ($homepage) { -+ $profile->homepage = $homepage; -+ } -+ if ($bio) { -+ $profile->bio = $bio; -+ } -+ if ($location) { -+ $profile->location = $location; -+ } -hunk ./classes/User.php 187 -- $profile->created = common_sql_now(); -+ $profile->created = common_sql_now(); -hunk ./classes/User.php 189 -- $id = $profile->insert(); -+ $id = $profile->insert(); -hunk ./classes/User.php 191 -- if (!$id) { -- common_log_db_error($profile, 'INSERT', __FILE__); -- return FALSE; -- } -+ if (!$id) { -+ common_log_db_error($profile, 'INSERT', __FILE__); -+ return FALSE; -+ } -hunk ./classes/User.php 196 -- $user = new User(); -+ $user = new User(); -hunk ./classes/User.php 198 -- $user->id = $id; -- $user->nickname = $nickname; -+ $user->id = $id; -+ $user->nickname = $nickname; -hunk ./classes/User.php 201 -- if ($password) { # may not have a password for OpenID users -- $user->password = common_munge_password($password, $id); -- } -+ if ($password) { # may not have a password for OpenID users -+ $user->password = common_munge_password($password, $id); -+ } -hunk ./classes/User.php 205 -- # Users who respond to invite email have proven their ownership of that address -+ # Users who respond to invite email have proven their ownership of that address -hunk ./classes/User.php 207 -- if ($code) { -- $invite = Invitation::staticGet($code); -- if ($invite && $invite->address && $invite->address_type == 'email' && $invite->address == $email) { -- $user->email = $invite->address; -- } -- } -+ if ($code) { -+ $invite = Invitation::staticGet($code); -+ if ($invite && $invite->address && $invite->address_type == 'email' && $invite->address == $email) { -+ $user->email = $invite->address; -+ } -+ } -hunk ./classes/User.php 214 -- $inboxes = common_config('inboxes', 'enabled'); -+ $inboxes = common_config('inboxes', 'enabled'); -hunk ./classes/User.php 216 -- if ($inboxes === true || $inboxes == 'transitional') { -- $user->inboxed = 1; -- } -+ if ($inboxes === true || $inboxes == 'transitional') { -+ $user->inboxed = 1; -+ } -hunk ./classes/User.php 220 -- $user->created = common_sql_now(); -- $user->uri = common_user_uri($user); -+ $user->created = common_sql_now(); -+ $user->uri = common_user_uri($user); -hunk ./classes/User.php 223 -- $result = $user->insert(); -+ $result = $user->insert(); -hunk ./classes/User.php 225 -- if (!$result) { -- common_log_db_error($user, 'INSERT', __FILE__); -- return FALSE; -- } -+ if (!$result) { -+ common_log_db_error($user, 'INSERT', __FILE__); -+ return FALSE; -+ } -hunk ./classes/User.php 230 -- # Everyone is subscribed to themself -+ # Everyone is subscribed to themself -hunk ./classes/User.php 232 -- $subscription = new Subscription(); -- $subscription->subscriber = $user->id; -- $subscription->subscribed = $user->id; -- $subscription->created = $user->created; -+ $subscription = new Subscription(); -+ $subscription->subscriber = $user->id; -+ $subscription->subscribed = $user->id; -+ $subscription->created = $user->created; -hunk ./classes/User.php 237 -- $result = $subscription->insert(); -+ $result = $subscription->insert(); -hunk ./classes/User.php 239 -- if (!$result) { -- common_log_db_error($subscription, 'INSERT', __FILE__); -- return FALSE; -- } -+ if (!$result) { -+ common_log_db_error($subscription, 'INSERT', __FILE__); -+ return FALSE; -+ } -hunk ./classes/User.php 244 -- if ($email && !$user->email) { -+ if ($email && !$user->email) { -hunk ./classes/User.php 246 -- $confirm = new Confirm_address(); -- $confirm->code = common_confirmation_code(128); -- $confirm->user_id = $user->id; -- $confirm->address = $email; -- $confirm->address_type = 'email'; -+ $confirm = new Confirm_address(); -+ $confirm->code = common_confirmation_code(128); -+ $confirm->user_id = $user->id; -+ $confirm->address = $email; -+ $confirm->address_type = 'email'; -hunk ./classes/User.php 252 -- $result = $confirm->insert(); -- if (!$result) { -- common_log_db_error($confirm, 'INSERT', __FILE__); -- return FALSE; -- } -- } -+ $result = $confirm->insert(); -+ if (!$result) { -+ common_log_db_error($confirm, 'INSERT', __FILE__); -+ return FALSE; -+ } -+ } -hunk ./classes/User.php 259 -- if ($code && $user->email) { -- $user->emailChanged(); -- } -+ if ($code && $user->email) { -+ $user->emailChanged(); -+ } -hunk ./classes/User.php 263 -- $profile->query('COMMIT'); -+ $profile->query('COMMIT'); -hunk ./classes/User.php 265 -- if ($email && !$user->email) { -- mail_confirm_address($user, $confirm->code, $profile->nickname, $email); -- } -+ if ($email && !$user->email) { -+ mail_confirm_address($user, $confirm->code, $profile->nickname, $email); -+ } -hunk ./classes/User.php 269 -- return $user; -- } -+ return $user; -+ } -hunk ./classes/User.php 272 -- # Things we do when the email changes -+ # Things we do when the email changes -hunk ./classes/User.php 274 -- function emailChanged() { -+ function emailChanged() { -hunk ./classes/User.php 276 -- $invites = new Invitation(); -- $invites->address = $this->email; -- $invites->address_type = 'email'; -+ $invites = new Invitation(); -+ $invites->address = $this->email; -+ $invites->address_type = 'email'; -hunk ./classes/User.php 280 -- if ($invites->find()) { -- while ($invites->fetch()) { -- $other = User::staticGet($invites->user_id); -- subs_subscribe_to($other, $this); -- } -- } -- } -+ if ($invites->find()) { -+ while ($invites->fetch()) { -+ $other = User::staticGet($invites->user_id); -+ subs_subscribe_to($other, $this); -+ } -+ } -+ } -hunk ./classes/User.php 288 -- function hasFave($notice) { -- $cache = common_memcache(); -+ function hasFave($notice) { -+ $cache = common_memcache(); -hunk ./classes/User.php 291 -- # XXX: Kind of a hack. -- if ($cache) { -- # This is the stream of favorite notices, in rev chron -- # order. This forces it into cache. -- $faves = $this->favoriteNotices(0, NOTICE_CACHE_WINDOW); -- $cnt = 0; -- while ($faves->fetch()) { -- if ($faves->id < $notice->id) { -- # If we passed it, it's not a fave -- return false; -- } else if ($faves->id == $notice->id) { -- # If it matches a cached notice, then it's a fave -- return true; -- } -- $cnt++; -- } -- # If we're not past the end of the cache window, -- # then the cache has all available faves, so this one -- # is not a fave. -- if ($cnt < NOTICE_CACHE_WINDOW) { -- return false; -- } -- # Otherwise, cache doesn't have all faves; -- # fall through to the default -- } -- $fave = Fave::pkeyGet(array('user_id' => $this->id, -- 'notice_id' => $notice->id)); -- return ((is_null($fave)) ? false : true); -- } -- function mutuallySubscribed($other) { -- return $this->isSubscribed($other) && -- $other->isSubscribed($this); -- } -+ # XXX: Kind of a hack. -+ if ($cache) { -+ # This is the stream of favorite notices, in rev chron -+ # order. This forces it into cache. -+ $faves = $this->favoriteNotices(0, NOTICE_CACHE_WINDOW); -+ $cnt = 0; -+ while ($faves->fetch()) { -+ if ($faves->id < $notice->id) { -+ # If we passed it, it's not a fave -+ return false; -+ } else if ($faves->id == $notice->id) { -+ # If it matches a cached notice, then it's a fave -+ return true; -+ } -+ $cnt++; -+ } -+ # If we're not past the end of the cache window, -+ # then the cache has all available faves, so this one -+ # is not a fave. -+ if ($cnt < NOTICE_CACHE_WINDOW) { -+ return false; -+ } -+ # Otherwise, cache doesn't have all faves; -+ # fall through to the default -+ } -+ $fave = Fave::pkeyGet(array('user_id' => $this->id, -+ 'notice_id' => $notice->id)); -+ return ((is_null($fave)) ? false : true); -+ } -+ function mutuallySubscribed($other) { -+ return $this->isSubscribed($other) && -+ $other->isSubscribed($this); -+ } -hunk ./classes/User.php 327 -- # 3-way join; probably should get cached -- $qry = 'SELECT user.* ' . -- 'FROM subscription sub1 JOIN user ON sub1.subscribed = user.id ' . -- 'JOIN subscription sub2 ON user.id = sub2.subscriber ' . -- 'WHERE sub1.subscriber = %d and sub2.subscribed = %d ' . -- 'ORDER BY user.nickname'; -- $user = new User(); -- $user->query(sprintf($qry, $this->id, $this->id)); -+ # 3-way join; probably should get cached -+ $qry = 'SELECT user.* ' . -+ 'FROM subscription sub1 JOIN user ON sub1.subscribed = user.id ' . -+ 'JOIN subscription sub2 ON user.id = sub2.subscriber ' . -+ 'WHERE sub1.subscriber = %d and sub2.subscribed = %d ' . -+ 'ORDER BY user.nickname'; -+ $user = new User(); -+ $user->query(sprintf($qry, $this->id, $this->id)); -hunk ./classes/User.php 336 -- return $user; -- } -+ return $user; -+ } +- function getCurrentNotice($dt=NULL) { ++ function getCurrentNotice($dt=null) { +hunk ./classes/User.php 124 +- return NULL; ++ return null; hunk ./classes/User.php 339 -- function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { -- $qry = -- 'SELECT notice.* ' . -- 'FROM notice JOIN reply ON notice.id = reply.notice_id ' . -- 'WHERE reply.profile_id = %d '; -- return Notice::getStream(sprintf($qry, $this->id), -- 'user:replies:'.$this->id, -- $offset, $limit, $since_id, $before_id, NULL, $since); -- } -+ function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { -+ $qry = -+ 'SELECT notice.* ' . -+ 'FROM notice JOIN reply ON notice.id = reply.notice_id ' . -+ 'WHERE reply.profile_id = %d '; -+ return Notice::getStream(sprintf($qry, $this->id), -+ 'user:replies:'.$this->id, -+ $offset, $limit, $since_id, $before_id, NULL, $since); -+ } -hunk ./classes/User.php 356 -- } -+ } -hunk ./classes/User.php 359 -- $qry = -- 'SELECT notice.* ' . -- 'FROM notice JOIN fave ON notice.id = fave.notice_id ' . -- 'WHERE fave.user_id = %d '; -- return Notice::getStream(sprintf($qry, $this->id), -- 'user:faves:'.$this->id, -- $offset, $limit); -- } -+ $qry = -+ 'SELECT notice.* ' . -+ 'FROM notice JOIN fave ON notice.id = fave.notice_id ' . -+ 'WHERE fave.user_id = %d '; -+ return Notice::getStream(sprintf($qry, $this->id), -+ 'user:faves:'.$this->id, -+ $offset, $limit); -+ } -hunk ./classes/User.php 369 -- $enabled = common_config('inboxes', 'enabled'); -+ $enabled = common_config('inboxes', 'enabled'); -hunk ./classes/User.php 371 -- # Complicated code, depending on whether we support inboxes yet -- # XXX: make this go away when inboxes become mandatory -+ # Complicated code, depending on whether we support inboxes yet -+ # XXX: make this go away when inboxes become mandatory -hunk ./classes/User.php 374 -- if ($enabled === false || -- ($enabled == 'transitional' && $this->inboxed == 0)) { -- $qry = -- 'SELECT notice.* ' . -- 'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' . -- 'WHERE subscription.subscriber = %d '; -- $order = NULL; -- } else if ($enabled === true || -- ($enabled == 'transitional' && $this->inboxed == 1)) { -+ if ($enabled === false || -+ ($enabled == 'transitional' && $this->inboxed == 0)) { -+ $qry = -+ 'SELECT notice.* ' . -+ 'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' . -+ 'WHERE subscription.subscriber = %d '; -+ $order = NULL; -+ } else if ($enabled === true || -+ ($enabled == 'transitional' && $this->inboxed == 1)) { -hunk ./classes/User.php 384 -- $qry = -- 'SELECT notice.* ' . -- 'FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id ' . -- 'WHERE notice_inbox.user_id = %d '; -- # NOTE: we override ORDER -- $order = 'ORDER BY notice_inbox.created DESC, notice_inbox.notice_id DESC '; -- } -- return Notice::getStream(sprintf($qry, $this->id), -- 'user:notices_with_friends:' . $this->id, -- $offset, $limit, $since_id, $before_id, -- $order, $since); -- } -+ $qry = -+ 'SELECT notice.* ' . -+ 'FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id ' . -+ 'WHERE notice_inbox.user_id = %d '; -+ # NOTE: we override ORDER -+ $order = 'ORDER BY notice_inbox.created DESC, notice_inbox.notice_id DESC '; -+ } -+ return Notice::getStream(sprintf($qry, $this->id), -+ 'user:notices_with_friends:' . $this->id, -+ $offset, $limit, $since_id, $before_id, -+ $order, $since); -+ } -hunk ./classes/User.php 398 -- $cache = common_memcache(); -- if ($cache) { -- # Faves don't happen chronologically, so we need to blow -- # ;last cache, too -- $cache->delete(common_cache_key('user:faves:'.$this->id)); -- $cache->delete(common_cache_key('user:faves:'.$this->id).';last'); -- } -- } -+ $cache = common_memcache(); -+ if ($cache) { -+ # Faves don't happen chronologically, so we need to blow -+ # ;last cache, too -+ $cache->delete(common_cache_key('user:faves:'.$this->id)); -+ $cache->delete(common_cache_key('user:faves:'.$this->id).';last'); -+ } -+ } -hunk ./classes/User.php 408 -- return Profile_tag::getTags($this->id, $this->id); -- } -+ return Profile_tag::getTags($this->id, $this->id); -+ } -hunk ./classes/User.php 412 -- return Profile_tag::setTags($this->id, $this->id, $newtags); -- } -+ return Profile_tag::setTags($this->id, $this->id, $newtags); -+ } -hunk ./classes/User.php 437 -- $sub = Subscription::pkeyGet(array('subscriber' => $other->id, -- 'subscribed' => $this->id)); -+ $sub = Subscription::pkeyGet(array('subscriber' => $other->id, -+ 'subscribed' => $this->id)); -hunk ./lib/common.php 57 -- array('name' => 'Just another Laconica microblog', -- 'server' => 'localhost', -- 'theme' => 'default', -- 'path' => '/', -- 'logfile' => NULL, -- 'fancy' => false, -- 'locale_path' => INSTALLDIR.'/locale', -- 'language' => 'en_US', -- 'languages' => get_all_languages(), -- 'email' => -- array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : NULL, -- 'broughtby' => NULL, -- 'timezone' => 'UTC', -- 'broughtbyurl' => NULL, -- 'closed' => false, -- 'inviteonly' => false, -+ array('name' => 'Just another Laconica microblog', -+ 'server' => 'localhost', -+ 'theme' => 'default', -+ 'path' => '/', -+ 'logfile' => NULL, -+ 'fancy' => false, -+ 'locale_path' => INSTALLDIR.'/locale', -+ 'language' => 'en_US', -+ 'languages' => get_all_languages(), -+ 'email' => -+ array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : NULL, -+ 'broughtby' => NULL, -+ 'timezone' => 'UTC', -+ 'broughtbyurl' => NULL, -+ 'closed' => false, -+ 'inviteonly' => false, -hunk ./lib/common.php 74 -- 'syslog' => -- array('appname' => 'laconica', # for syslog -- 'priority' => 'debug'), # XXX: currently ignored -- 'queue' => -- array('enabled' => false), -- 'license' => -- array('url' => 'http://creativecommons.org/licenses/by/3.0/', -- 'title' => 'Creative Commons Attribution 3.0', -- 'image' => 'http://i.creativecommons.org/l/by/3.0/88x31.png'), -- 'mail' => -- array('backend' => 'mail', -- 'params' => NULL), -- 'nickname' => -- array('blacklist' => array(), -- 'featured' => array()), -- 'profile' => -- array('banned' => array()), -- 'avatar' => -- array('server' => NULL), -- 'public' => -- array('localonly' => true, -- 'blacklist' => array()), -- 'theme' => -- array('server' => NULL), -- 'throttle' => -+ 'syslog' => -+ array('appname' => 'laconica', # for syslog -+ 'priority' => 'debug'), # XXX: currently ignored -+ 'queue' => -+ array('enabled' => false), -+ 'license' => -+ array('url' => 'http://creativecommons.org/licenses/by/3.0/', -+ 'title' => 'Creative Commons Attribution 3.0', -+ 'image' => 'http://i.creativecommons.org/l/by/3.0/88x31.png'), -+ 'mail' => -+ array('backend' => 'mail', -+ 'params' => NULL), -+ 'nickname' => -+ array('blacklist' => array(), -+ 'featured' => array()), -+ 'profile' => -+ array('banned' => array()), -+ 'avatar' => -+ array('server' => NULL), -+ 'public' => -+ array('localonly' => true, -+ 'blacklist' => array()), -+ 'theme' => -+ array('server' => NULL), -+ 'throttle' => -hunk ./lib/common.php 102 -- 'xmpp' => -- array('enabled' => false, -- 'server' => 'INVALID SERVER', -- 'port' => 5222, -- 'user' => 'update', -- 'encryption' => true, -- 'resource' => 'uniquename', -- 'password' => 'blahblahblah', -- 'host' => NULL, # only set if != server -- 'debug' => false, # print extra debug info -- 'public' => array()), # JIDs of users who want to receive the public stream -+ 'xmpp' => -+ array('enabled' => false, -+ 'server' => 'INVALID SERVER', -+ 'port' => 5222, -+ 'user' => 'update', -+ 'encryption' => true, -+ 'resource' => 'uniquename', -+ 'password' => 'blahblahblah', -+ 'host' => NULL, # only set if != server -+ 'debug' => false, # print extra debug info -+ 'public' => array()), # JIDs of users who want to receive the public stream -hunk ./lib/common.php 117 -- 'tag' => -- array('dropoff' => 864000.0), -- 'popular' => -- array('dropoff' => 864000.0), -- 'daemon' => -- array('piddir' => '/var/run', -- 'user' => false, -- 'group' => false), -- 'integration' => -- array('source' => 'Laconica'), # source attribute for Twitter -- 'memcached' => -- array('enabled' => false, -- 'server' => 'localhost', -- 'port' => 11211), -- 'inboxes' => -- array('enabled' => true), # on by default for new sites -- ); -+ 'tag' => -+ array('dropoff' => 864000.0), -+ 'popular' => -+ array('dropoff' => 864000.0), -+ 'daemon' => -+ array('piddir' => '/var/run', -+ 'user' => false, -+ 'group' => false), -+ 'integration' => -+ array('source' => 'Laconica'), # source attribute for Twitter -+ 'memcached' => -+ array('enabled' => false, -+ 'server' => 'localhost', -+ 'port' => 11211), -+ 'inboxes' => -+ array('enabled' => true), # on by default for new sites -+ ); -hunk ./lib/common.php 139 -- 'schema_location' => INSTALLDIR . '/classes', -- 'class_location' => INSTALLDIR . '/classes', -- 'require_prefix' => 'classes/', -- 'class_prefix' => '', -- 'mirror' => NULL, -+ 'schema_location' => INSTALLDIR . '/classes', -+ 'class_location' => INSTALLDIR . '/classes', -+ 'require_prefix' => 'classes/', -+ 'class_prefix' => '', -+ 'mirror' => NULL, -hunk ./lib/common.php 145 -- 'quote_identifiers' => false, -- 'type' => 'mysql' ); -+ 'quote_identifiers' => false, -+ 'type' => 'mysql' ); -hunk ./lib/common.php 149 -- /* Work internally in UTC */ -- date_default_timezone_set('UTC'); -+ /* Work internally in UTC */ -+ date_default_timezone_set('UTC'); -hunk ./lib/common.php 167 -- if ($class == 'OAuthRequest') { -- require_once('OAuth.php'); -- } else if (file_exists(INSTALLDIR.'/classes/' . $class . '.php')) { -+ if ($class == 'OAuthRequest') { -+ require_once('OAuth.php'); -+ } else if (file_exists(INSTALLDIR.'/classes/' . $class . '.php')) { -hunk ./lib/deleteaction.php 24 -- function handle($args) { -- parent::handle($args); -- $user = common_current_user(); -- $notice_id = $this->trimmed('notice'); -- $notice = Notice::staticGet($notice_id); -- if (!$notice) { -- common_user_error(_('No such notice.')); -- exit; -- } -+ function handle($args) { -+ parent::handle($args); -+ $user = common_current_user(); -+ $notice_id = $this->trimmed('notice'); -+ $notice = Notice::staticGet($notice_id); -+ if (!$notice) { -+ common_user_error(_('No such notice.')); -+ exit; -+ } -hunk ./lib/deleteaction.php 34 -- $profile = $notice->getProfile(); -- $user_profile = $user->getProfile(); -+ $profile = $notice->getProfile(); -+ $user_profile = $user->getProfile(); -hunk ./lib/deleteaction.php 37 -- if (!common_logged_in()) { -- common_user_error(_('Not logged in.')); -- exit; -- } else if ($notice->profile_id != $user_profile->id) { -- common_user_error(_('Can\'t delete this notice.')); -- exit; -- } -- } -+ if (!common_logged_in()) { -+ common_user_error(_('Not logged in.')); -+ exit; -+ } else if ($notice->profile_id != $user_profile->id) { -+ common_user_error(_('Can\'t delete this notice.')); -+ exit; -+ } -+ } +- function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { ++ function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) { +hunk ./classes/User.php 346 +- $offset, $limit, $since_id, $before_id, NULL, $since); ++ $offset, $limit, $since_id, $before_id, null, $since); +hunk ./classes/User.php 349 +- function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { ++ function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) { +hunk ./classes/User.php 352 +- return NULL; ++ return null; +hunk ./classes/User.php 368 +- function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=NULL) { ++ function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0, $since=null) { +hunk ./classes/User.php 380 +- $order = NULL; ++ $order = null; +hunk ./classes/User_openid.php 20 +- function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User_openid',$k,$v); } ++ function staticGet($k,$v=null) { return Memcached_DataObject::staticGet('User_openid',$k,$v); } +hunk ./lib/common.php 61 +- 'logfile' => NULL, ++ 'logfile' => null, +hunk ./lib/common.php 67 +- array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : NULL, +- 'broughtby' => NULL, ++ array_key_exists('SERVER_ADMIN', $_SERVER) ? $_SERVER['SERVER_ADMIN'] : null, ++ 'broughtby' => null, +hunk ./lib/common.php 70 +- 'broughtbyurl' => NULL, ++ 'broughtbyurl' => null, +hunk ./lib/common.php 85 +- 'params' => NULL), ++ 'params' => null), +hunk ./lib/common.php 92 +- array('server' => NULL), ++ array('server' => null), +hunk ./lib/common.php 97 +- array('server' => NULL), ++ array('server' => null), +hunk ./lib/common.php 110 +- 'host' => NULL, # only set if != server ++ 'host' => null, # only set if != server +hunk ./lib/common.php 143 +- 'mirror' => NULL, ++ 'mirror' => null, hunk ./lib/deleteaction.php 46 -- function show_top($arr=NULL) { -- $instr = $this->get_instructions(); -- $output = common_markup_to_html($instr); -- common_element_start('div', 'instructions'); -- common_raw($output); -- common_element_end('div'); -- } -+ function show_top($arr=NULL) { -+ $instr = $this->get_instructions(); -+ $output = common_markup_to_html($instr); -+ common_element_start('div', 'instructions'); -+ common_raw($output); -+ common_element_end('div'); -+ } -hunk ./lib/deleteaction.php 54 -- function get_title() { -- return NULL; -- } -+ function get_title() { -+ return NULL; -+ } -hunk ./lib/deleteaction.php 58 -- function show_header() { -- return; -- } -+ function show_header() { -+ return; -+ } -hunk ./lib/facebookaction.php 13 -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -hunk ./lib/facebookaction.php 17 -- * along with this program. If not, see . -+ * along with this program. If not, see . -hunk ./lib/facebookaction.php 26 -- function handle($args) { -- parent::handle($args); -- } -+ function handle($args) { -+ parent::handle($args); -+ } -hunk ./lib/facebookaction.php 30 -- function get_facebook() { -- $apikey = common_config('facebook', 'apikey'); -- $secret = common_config('facebook', 'secret'); -- return new Facebook($apikey, $secret); -- } -+ function get_facebook() { -+ $apikey = common_config('facebook', 'apikey'); -+ $secret = common_config('facebook', 'secret'); -+ return new Facebook($apikey, $secret); -+ } -hunk ./lib/facebookaction.php 36 -- function update_profile_box($facebook, $fbuid, $user) { -+ function update_profile_box($facebook, $fbuid, $user) { -hunk ./lib/facebookaction.php 38 -- $notice = $user->getCurrentNotice(); -+ $notice = $user->getCurrentNotice(); -hunk ./lib/facebookaction.php 40 -- # Need to include inline CSS for styling the Profile box -+ # Need to include inline CSS for styling the Profile box -hunk ./lib/facebookaction.php 42 -- $style = ''; -+ $style = ''; -hunk ./lib/facebookaction.php 77 -- $html = $this->render_notice($notice); -+ $html = $this->render_notice($notice); -hunk ./lib/facebookaction.php 79 -- $fbml = "$content $html"; -- $fbml .= "$content $html"; -+ $fbml = "$content $html"; -+ $fbml .= "$content $html"; -hunk ./lib/facebookaction.php 82 -- $fbml_main = "$content $html"; -+ $fbml_main = "$content $html"; +- function show_top($arr=NULL) { ++ function show_top($arr=null) { +hunk ./lib/deleteaction.php 55 +- return NULL; ++ return null; hunk ./lib/facebookaction.php 84 -- $facebook->api_client->profile_setFBML(NULL, $fbuid, $fbml, NULL, NULL, $fbml_main); -- } -+ $facebook->api_client->profile_setFBML(NULL, $fbuid, $fbml, NULL, NULL, $fbml_main); -+ } -hunk ./lib/facebookaction.php 87 -- # Display methods -+ # Display methods -hunk ./lib/facebookaction.php 89 -- function show_header($selected ='Home') { -+ function show_header($selected ='Home') { -hunk ./lib/facebookaction.php 91 -- # Add a timestamp to the CSS file so Facebook cache wont ignore our changes -- $ts = filemtime(theme_file('facebookapp.css')); -- $cssurl = theme_path('facebookapp.css') . "?ts=$ts"; -+ # Add a timestamp to the CSS file so Facebook cache wont ignore our changes -+ $ts = filemtime(theme_file('facebookapp.css')); -+ $cssurl = theme_path('facebookapp.css') . "?ts=$ts"; -hunk ./lib/facebookaction.php 95 -- $header = ''; -- # $header .=''; -- $header .= ''; -+ $header = ''; -+ # $header .=''; -+ $header .= ''; -hunk ./lib/facebookaction.php 99 -- $header .= -- '' -- .'' -- .'' -- .'' -- .''; -- $header .= '
          '; -+ $header .= -+ '' -+ .'' -+ .'' -+ .'' -+ .''; -+ $header .= '
          '; -hunk ./lib/facebookaction.php 107 -- echo $header; -+ echo $header; -hunk ./lib/facebookaction.php 109 -- } -+ } -hunk ./lib/facebookaction.php 111 -- function show_footer() { -- $footer = '
          '; -- echo $footer; -- } -+ function show_footer() { -+ $footer = '
          '; -+ echo $footer; -+ } -hunk ./lib/facebookaction.php 116 -- function show_login_form() { -+ function show_login_form() { -hunk ./lib/facebookaction.php 118 -- $loginform = -- '

          To add the Identi.ca application, you need to log into your Identi.ca account.

          ' -- .'' -- .' ' -- .'' -- .'

          Login

          ' -- .'
          ' -- .'

          Login with your username and password. Don\'t have a username yet?' -- .' Register a new account.' -- .'

          ' -- .'
          ' -- .'
          ' -- .'
          ' -- .'

          ' -- .' ' -- .' ' -- .'

          ' -- .'

          ' -- .' ' -- .' ' -- .'

          ' -- .'

          ' -- .' ' -- .'

          ' -- .'
          ' -- .'

          ' -- .' Lost or forgotten password?' -- .'

          ' -- .'To add the Identi.ca application, you need to log into your Identi.ca account.' -+ .'' -+ .' ' -+ .'' -+ .'

          Login

          ' -+ .'
          ' -+ .'

          Login with your username and password. Don\'t have a username yet?' -+ .' Register a new account.' -+ .'

          ' -+ .'
          ' -+ .'
          ' -+ .'
          ' -+ .'

          ' -+ .' ' -+ .' ' -+ .'

          ' -+ .'

          ' -+ .' ' -+ .' ' -+ .'

          ' -+ .'

          ' -+ .' ' -+ .'

          ' -+ .'
          ' -+ .'

          ' -+ .' Lost or forgotten password?' -+ .'

          ' -+ .'getProfile(); -- $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE); -+ $profile = $notice->getProfile(); -+ $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE); -hunk ./lib/facebookaction.php 158 -- $noticeurl = common_local_url('shownotice', array('notice' => $notice->id)); -+ $noticeurl = common_local_url('shownotice', array('notice' => $notice->id)); -hunk ./lib/facebookaction.php 160 -- # XXX: we need to figure this out better. Is this right? -- if (strcmp($notice->uri, $noticeurl) != 0 && preg_match('/^http/', $notice->uri)) { -- $noticeurl = $notice->uri; -- } -+ # XXX: we need to figure this out better. Is this right? -+ if (strcmp($notice->uri, $noticeurl) != 0 && preg_match('/^http/', $notice->uri)) { -+ $noticeurl = $notice->uri; -+ } -hunk ./lib/facebookaction.php 165 -- $html = -- '
        • ' -- .'' -- .'' -+ .'' -+ .'';
-+        $html .=
-+        '' -- .'' . $profile->nickname . '' -- .'

          ' . $notice->rendered . '

          ' -- .'

          ' -- .''; -+ $html .= -+ '">' -+ .'' . $profile->nickname . '' -+ .'

          ' . $notice->rendered . '

          ' -+ .'

          ' -+ .''; -hunk ./lib/facebookaction.php 194 -- if ($notice->source) { -- $html .= _(' from '); -- $html .= $this->source_link($notice->source); -- } -+ if ($notice->source) { -+ $html .= _(' from '); -+ $html .= $this->source_link($notice->source); -+ } -hunk ./lib/facebookaction.php 199 -- if ($notice->reply_to) { -- $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to)); -- $html .= -- ' (' . _('in reply to...') . ')'; -- } -+ if ($notice->reply_to) { -+ $replyurl = common_local_url('shownotice', array('notice' => $notice->reply_to)); -+ $html .= -+ ' (' . _('in reply to...') . ')'; -+ } -hunk ./lib/facebookaction.php 205 -- $html .= '

        • '; -+ $html .= '

          '; -hunk ./lib/facebookaction.php 207 -- return $html; -- } -+ return $html; -+ } -hunk ./lib/facebookaction.php 210 -- function source_link($source) { -- $source_name = _($source); -+ function source_link($source) { -+ $source_name = _($source); -hunk ./lib/facebookaction.php 213 -- $html = ''; -+ $html = ''; -hunk ./lib/facebookaction.php 215 -- switch ($source) { -- case 'web': -- case 'xmpp': -- case 'mail': -- case 'omb': -- case 'api': -- $html .= $source_name; -- break; -- default: -- $ns = Notice_source::staticGet($source); -- if ($ns) { -- $html .= '
          ' . $ns->name . ''; -- } else { -- $html .= $source_name; -- } -- break; -- } -+ switch ($source) { -+ case 'web': -+ case 'xmpp': -+ case 'mail': -+ case 'omb': -+ case 'api': -+ $html .= $source_name; -+ break; -+ default: -+ $ns = Notice_source::staticGet($source); -+ if ($ns) { -+ $html .= '' . $ns->name . ''; -+ } else { -+ $html .= $source_name; -+ } -+ break; -+ } -hunk ./lib/facebookaction.php 233 -- $html .= ''; -+ $html .= ''; -hunk ./lib/facebookaction.php 235 -- return $html; -- } -+ return $html; -+ } +- $facebook->api_client->profile_setFBML(NULL, $fbuid, $fbml, NULL, NULL, $fbml_main); ++ $facebook->api_client->profile_setFBML(null, $fbuid, $fbml, null, null, $fbml_main); hunk ./lib/facebookaction.php 238 -- function pagination($have_before, $have_after, $page, $fbaction, $args=NULL) { -+ function pagination($have_before, $have_after, $page, $fbaction, $args=NULL) { -hunk ./lib/facebookaction.php 240 -- $html = ''; -+ $html = ''; -hunk ./lib/facebookaction.php 242 -- if ($have_before || $have_after) { -- $html = '