From d679a38e9efabb2213c294e8537e020d987cc3fe Mon Sep 17 00:00:00 2001
From: friendica <info@friendica.com>
Date: Wed, 11 Apr 2012 05:24:45 -0700
Subject: [PATCH] first cut at a testdrive addon

---
 randplace.tgz           | Bin 2090 -> 2059 bytes
 randplace/randplace.php |   6 +--
 testdrive.tgz           | Bin 0 -> 1879 bytes
 testdrive/README.md     |  23 +++++++++++
 testdrive/testdrive.php |  89 ++++++++++++++++++++++++++++++++++++++++
 5 files changed, 114 insertions(+), 4 deletions(-)
 create mode 100644 testdrive.tgz
 create mode 100644 testdrive/README.md
 create mode 100644 testdrive/testdrive.php

diff --git a/randplace.tgz b/randplace.tgz
index 931781d060a9feb147a03a43f7a5659fd8e874e2..7ab5f0db9d1769808dd0747f587395e7a32f6b15 100755
GIT binary patch
literal 2059
zcmV+m2=w<KiwFSecZE*?1MOJrZyPrf_gDL`nC=-~IVbDkL{{L$4uWg%TJ&-$;@tH^
z8VJ-bCGotwT##HlZjt}JGehn}ww$1an|`PWTUe39dH&|HGNMS!OeAu+^M|bwuIXg5
zb3A!6JwAT2Gn$+npFA1!epox>@$|{~_+)ZCn(U0m$J6m-2PS`<O6{tw69!->7s*nY
zD^=V>S1u<f<EKxbehHnv;4)48o2Nm!Dj!q^$A5ZX{KvSax8gr}e1h>GJ*XD<tiO2t
zpTEFp?+qV4+Ji^%ACb#bc!NODIWQJz_iJerqe`cAaS9hAFEa`MG)fk!N(7QsOH~X-
zn(ATz7t(<M)8PQuD_KCPty9HvK>YqEjb&cr!HB-UtlUbQQ+TB=CA_M`0MA#>m8ZjD
z6PQ7w^I>W9LS=H8Bk?)i?))<|(!+u<5{z6b>!gt>Tr0N%w~}CQa3{w{qpPLg5^1gq
zx>|}tW`n@zN7CAJFoH}6Wg(SLCQhdPF0VvnndJ@d3c6jOBWJ2WXk}UN5EfOD5RX1&
zIuXbK(7u>mHY8I1ptOtobQ?W}>c_MhlUU+SUqCN{#^h_F{I0V>lt$+I3fV7=&iN$K
z#X>EsU_yr0c-`r8(EnOx85_~anN`JI-GgI>dwYBJ7BnTJW9u(_d%FauU5W{Pysiv7
zF4w_5UY>AHBr9?QhC)gY6+7SyZ&8hfGS-nr|Hu4<(kN}fX|PTkgb_lF9GNk!_!9l2
zYP)sJXDh8Qdoi8Qm^AL!4!@`35kYGYUnCy!;j`ADT0JyE#$78=wH5$ir6aIgMATCD
z0hxlxtS4a>Edh!F5(9iJ95TjO6p$E+IN_^Rnc^egtE@EW47osj6t%zZGo5vr)uMi*
z{mnHr|1+G~SHF|JzsoMp^l~XpFA7LP5I5uz5`5f@yDn0HxfQ7944-Nfurd@k>~R}>
z9E!u5jeI?=7;1sX0KRjOiyI%wRAyKTZe>?(6yN5cqbQ9*H;`mf6jiwvuU4r|V8!*j
z@w$Qa!-3&*ydMS*EgtHUb_Wfc;Ly0Cw=eo|u&=Pd-37)=td(5(gwH_at_#jiUsZfz
z^u_2$$-QK$2@9C!871oitC1~bq82J)R`!&Mc^$z^tW&~OA-(5_83=6)^mQRkmzIj%
z+9Bjr@mAsr1!tMQCgre#hThV_PjFD{Muh5>zLcrYC$;E(<?WeK+2|b}qP!utCS4r;
zER6<5y#p&O{!uwaX55yz#^`VsS_I15#VX(`Qv}vs#_-h{u&3X}l}h9HB#0z^t)=yB
zN=!WTFxuzKB)a9r2Bv{Yi4HHE=QC`297k*=NLf$N@2HQHL5^EManZTN1B{l;ELPt_
z(?rq<$l$hQl<`J79B9zx>}u8)ap2Rt&TH@WeSw%m!ZTP(H!D5KnmfA4CYZ}Y%rn^u
zN?>t#ONkbrufOk8gE1`v5O}F(<*cg~3lGh2u?xf&rv=|O)?k`ykH}1m)FT^Hmcy!Y
z`Liy3qqn{}q29jv;Kijx407vfu3T%ArI0A6Ivu)hfu%|=f%q|GG;%^dVg4iDWrc0r
z`9?1x;`s-2Ho^`skt=0V4T-htxbNkmpM^2vrbne`pA@I9+K8D-G3uCw7_k|t%Vfw?
zVq5M7a)b;&Q61Q&2=s8ILwWwZ9}i<pje`Tg$lw9Zd-chGFYZ74#wBz}L9BIs_a0S4
zl9`bl{9Zhx_(R;c)x5oWM>_l+#)qW%#~LAtt_s%+Y!ACYVOck|S7zksnyx=)ANd@r
z{T!1{wSIi}{WG2wJUgzVVfv?$@E-`cxxk1v1LXRs(j5k2pSLgroWLf@)cdm^USGWR
z$}tU=PoDR3fwR4>5TXd1D*`HI<(0@(>MM>&*yz2`I<Yumn?>Oa`i*@yV5ccB?SQ(W
zF|2hMY7VSCL*j0s?E0I^5*zid&FUkJXRfG1A*H>q40NkNT?G0#Dx%SMSt75{*4Bg3
zo#lV<)8$2Lem;Qk&ckk^`r5=x6$=gZT#9pOXMX>bgL(((oP&MqyXGf-!<Dm^ZQV^K
z?Mh156-q%26D=cvDQgY6l@<ycSE#H<=XB>?ymEQAk^)-^49*~ao~hyz2ej-gYNbQ~
z?xvJyk&_?XFtIiQe34k3MKKJ3SW$VN3o9!_v*7^Z;r#;%UZ-nu1i4I=IE&Ep5e(01
zGy2K=R7Anrf023gT2&cpLEKij^tC8OP#Z<T4p#Zdr=MyVn~=ioVn12Q<dQG<dNrp*
zc!5PFoSa4BA;P^=i0juCjtjLy`1b9qf7c<AACzsd6ZEs*$Emu)DOFgDP7VP&nxmGN
z(Ruu=C0jjar?_7HrWrdfn(>f)_<Tq-&(=9BRJ2VWZ^+TL5hbSXx`0f~Wwx1~k0R2&
zd&u_B^@pfd>>H+rRzIINwRX&9O{6NgNu?XP29&kmsc&{DBPwDQ?u;n{2)#OFgt#>^
zLv+M>*U$7)fY$qiIK&NS!7J=)G_r7!fqCT|X6k2y<;feT!g;XE>+etRXn$1iZ|2q*
z7hHSc>)xTym0?i5HQ?jkpZ#;zcKyb6PdR*08K3_BcQhJLAJgx@<Kxj}O3(cJ?{xe7
z@0VCO4g76$rKQ<uf$tCQ6f(JRSjnzc>Q<+4JQ|fB@M|s%*43lA#sZb&_JnpnuJNnO
p<{e%%>HOKIZ`XEh*LH2!c5T;oZP#{f*LMA-)~~Sd`osVz001)=2q*vm

literal 2090
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
U$98PTc6?Fe|C!$Z?EokM0AEBV7XSbN

diff --git a/randplace/randplace.php b/randplace/randplace.php
index df713766..b70c02d9 100755
--- a/randplace/randplace.php
+++ b/randplace/randplace.php
@@ -8,10 +8,8 @@
  * 
  * 
  *
- * Addons are registered with the system in the
- * .htconfig.php file.
- *
- * $a->config['system']['addon'] = 'plugin1,plugin2,etc.';
+ * Addons are registered with the system through the admin
+ * panel.
  *
  * When registration is detected, the system calls the plugin
  * name_install() function, located in 'addon/name/name.php',
diff --git a/testdrive.tgz b/testdrive.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..7d314ea28fedfdfdd21653a06b8e1cd1e00457bd
GIT binary patch
literal 1879
zcmV-d2dMZTiwFSfcZE*?1MOICZ`(!^_E+;)%n42?rH<Zg*?}GBpsO7;z&R~ywMF0<
z!iro;n~+>~xwIn``S174u3l(aX|K4{cfe^N*w%75^UUkc*vi7jM%~KR&R<4t(D89^
zr`tO`?sgA%+P$Oh(P77(&uORAIX>)kj}MLyaNap+x4S#k`|BXBs4T27L_4X7Cd%BZ
z><fJPq<7SL@#4i}V0uKd%lQ9z(LcYuXr}R3*TDfkIy(GP{5wYn>+wJA9(8u8{ne3d
zp#Ssu4-o%zj(>2rpdbhai>x43kf7H_$t+fppgbujDx<rpil(H}Jdvr)EO<(*Q(;v^
zB8qgGS(2Y}WpJW1Dm2-tun<%zD=8H-8c8Y(8Ixe~c{xf{6mTlyLENMu_+=_H64_E3
zU_?d=i&r4fPNfsIPs%--04aEBDok8e9ODJjW5^5k#Pe5?&c<qT9WHY|ytxh?yNt!G
z2yf_&4%(+da3w8tKrl?5>C#YhYW>U2e45i(C6cTrktF&KY7g4bG$V)Kdo7nnX&Ca4
z8O3re%EVHptH?Y9W5;uq!K?tfB2h?Z+}zFV{K%?XXE$7-VmKRGXY8V2FqOsy2%>eK
zYh%ky*%>2~pDY5#4xF2}bYxkmY~qdcN}6=Bf`wC{5lNH22MjZ3DHb7{ham9bkKpc!
zq_H+sNK{TFp)g+PW-}@VBhZP4W*6|0NJJJn?5R*Ni9OJy!3q^W%1a}YnUn7n19%`P
zQK@2gl<X?@I41)8qYq;tEulMMGB)x~B?+T0;55=D@-NSg{-ltnPA&(E;|?C^kn4zb
z6qTlcCmd2c{|+mhN7&L-WHSniSz%>L<1&l*Jv@S}SQTQFuu-p<Y7*!*PD>@LjZF0|
z%!xD?69a=Sgnsl$wCexMzc|Ogs*XSC|GndGZ_)p|z0Lvpf3J7Y-S+>-pqGC~w1c4a
z>{&q1=&eZQ2`w{$kIrQg8I^NtpU{=yEPZevv_u@EVycyjDzEgz)eG(hxKnoeyH`e&
zHUBJ4;k0&|ZT{Xb?Npl+x>O$}T`s~!FQ?Y#C#}{pfKAj=3zg1ox|M?Y72a+IOp792
znK(o-b4#r^=(ix)HFBa*&Sp5(`eQv@ew{-M_bGI?w!Tm|%&?OE;PuAo0~L|c*`E~a
zUV*63n=QgEaL=YPdjzW<DESZUV#7ArwXV0mC-(P7-p0LB#kjrqMyLG6wc9hANIUe`
zcD-`v?^myUhOWl-zma>V5$qy7wltX&V<6+#dhMql&ijK4zHs=Wvx{^cdNIWiAkQd#
zQiK?b_(t|np2YsDqE2leV&f6&sLlh4RjFiHx6;^p_|xE9Ao4#mOcURP)bwERJ0uUX
z!4hy!-ioBomI9}96Tolu6gzU|9hmfM38VlT$$F@=C@Evvl9{$@Jab`aRP8NfA|s1}
z8ylT^v%O&(41Y<0J{-Kcyto?lFMmMBeM4{F4laKDx&Ke<(Ru$J-;_Y_-x)fc=mQLR
z=q_fsjxT}d?nCYNiTi|9bC?jDd8|#t*|N)5wTPxT;8|kN7=OH5m0TCbh*_PFcSHCq
zq_bDddhNd4?E43HmP_~K?e~K>uip)?-dznYF6R&Ztv+1xRMOO&63!Vh$xKQy0T<Ik
z&+>GsOb;_OSI@PA1LwNq3Y!~Z?o0DW3!VZKX(Sioz=JgE$EnIt9cZ80gpK>0iON2D
zPM(6fDn=MIOM?b+pD~|mtHX_qoQ*AvP7_(QFuWEzd;X%`{E$z)9~v%NySqrAGIwM5
zvRr;I@_$e?Uo4x(9QdLpmZ5DpFsA|G_vZkgKb_VLqvOWAe=FUeucv!$-cr`mc5@AW
zt1<jWc2R?yvYQQJutPs7R&8aM!@|$Io4dfg!0S)Z3FxWs1)NoCO!ZIoy%BnEE{sUg
zVCd;n^v>(WcdSJ&@v#t{-LDSzD|q?!6*mM`%VmSK>SGpqwxOOD@R;~*3<{~sTwco_
z<m2f*UYWyfDF$xO%(|-wMQ)HO<2qN$JKpCO69@eDr0|P^N5LDPps~Djowtcfx_66s
zJJ70mjBy3nSVK~jqYp?kr*@%jHT}4es51SF5$`2-z8cDAxF&6+<Jr0eweJ)?>Ac@7
z_TOjkGpFF5ShlH)$LnS#vM6{D&sLjHlYWsj)w$#?mt^)q&t&YE!^-f+wcxfbK3`ij
zu`R~D!ApZ>h>Ln<>zy3AVUMRmw?xALIWcaREp((r!b?vIQNAevO&`?{wb<DGzXaU0
zSU5-Bq66|qMZ(g2;ER=Mju-0O(8ug58*5Z0gJ#XCcGlz1biUSQ+?CvjTIL>@zRRi;
zDt1}7`byr$3+Wfb%E)UpM|f%93eY_;%^GrNt)}L801BpdjVwN^@m-ItbosA|noqFW
z&2<gWYd3gayV<}s&pyv^-2(4TZJs)xF+Ke^7m6)yX-iw$(w4Tgr7dk~OIzB~mbSE|
RE&Wf?zW^k@5b*#g003<Uw|f8p

literal 0
HcmV?d00001

diff --git a/testdrive/README.md b/testdrive/README.md
new file mode 100644
index 00000000..3d735dea
--- /dev/null
+++ b/testdrive/README.md
@@ -0,0 +1,23 @@
+TestDrive
+=========
+
+
+Testdrive is a Friendica plugin which implements automatic account expiration so that a site may be used as a public
+test bed. 
+
+When an account is created on the site, it is given a hard expiration date of 
+
+
+$a->config['testdrive']['expiredays'] = 30;
+
+Set this in your .htconfig.php file to allow a 30 day test drive period. By default no expiration period is defined 
+in case the plugin is activated accidentally. 
+
+
+There is no opportunity to extend an expired account using this plugin. Expiration is final. Other plugins may be created
+which charge for service and extend the expiration as long as a balance is maintained. This plugin is purely for creating
+a limited use test site. 
+
+An email warning will be sent out approximately five days before the expiration occurs. Once it occurs logins and many 
+system functions are disabled. Five days later the account is removed completely. 
+   
\ No newline at end of file
diff --git a/testdrive/testdrive.php b/testdrive/testdrive.php
new file mode 100644
index 00000000..b7c021a1
--- /dev/null
+++ b/testdrive/testdrive.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * Name: testdrive
+ * Description: Sample Friendica plugin/addon for creating a test drive Friendica site with automatic account expiration.
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ */
+
+
+
+
+function testdrive_install() {
+
+	register_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account');
+	register_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron');
+}
+
+
+function testdrive_uninstall() {
+
+	unregister_hook('register_account', 'addon/testdrive/testdrive.php', 'testdrive_register_account');
+	unregister_hook('cron', 'addon/testdrive/testdrive.php', 'testdrive_cron');
+
+}
+
+function testdrive_register_account($a,$b) {
+
+	$uid = $b;
+
+	$days = get_config('testdrive','expiredays');
+	if(! $days)
+		return;
+
+	$r = q("UPDATE user set account_expires_on = '%s' where uid = %d limit 1",
+		dbesc(datetime_convert('UTC','UTC','now +' . $days . ' days')),
+		intval($uid)
+	);
+
+};
+	
+
+function testdrive_cron($a,$b) {
+	require_once('include/enotify.php');
+
+	$r = q("select * from user where account_expires_on < UTC_TIMESTAMP() + INTERVAL 5 DAY and
+		expire_notification_sent = '0000-00-00 00:00:00' ");
+
+	if(count($r)) {
+		foreach($r as $rr) {
+			notification(array(
+				'uid' => $rr['uid'],
+				'type' => NOTIFY_SYSTEM,
+				'system_type' => 'testdrive_expire',
+				'language'     => $rr['language'],
+				'to_name'      => $rr['username'],
+				'to_email'     => $rr['email'],
+				'source_name'  => t('Administrator'),
+				'source_link'  => $a->get_baseurl(),
+				'source_photo' => $a->get_baseurl() . '/images/person-80.jpg',
+			));
+
+			q("update user set expire_notification_sent = '%s' where uid = %d limit 1",
+				dbesc(datetime_convert()),
+				intval($rr['uid'])
+			);
+ 
+		}
+	}
+
+	$r = q("select * from user where account_expired = 1 and account_expires_on < UTC_TIMESTAMP() - INTERVAL 5 DAY ");
+	if(count($r)) {
+		require_once('include/Contact.php');
+		foreach($r as $rr)
+			user_remove($rr['uid']);
+
+	}
+
+}		
+
+function testdrive_enotify(&$a, &$b) {
+    if (x($b, 'params') && $b['params']['type'] == NOTIFY_SYSTEM 
+		&& x($b['params'], 'system_type') && $b['params']['system_type'] === 'testdrive_expire') {
+        $b['itemlink'] = $a->get_baseurl();
+        $b['epreamble'] = $b['preamble'] = sprintf( t('Your account on %s will expire in a few days.'), get_config('system','sitename'));
+        $b['subject'] = t('Your Friendica test account is about to expire.');
+        $b['body'] = sprintf( t("Hi %1\$s,\n\nYour test account on %2\$s will expire in less than five days. We hope you enjoyed this test drive and use this opportunity to find a permanent Friendica website for your integrated social communications. A list of public sites is available at http://dir.friendica.com/siteinfo - and for more information on setting up your own Friendica server please see the Friendica project website at http://friendica.com."), $b['params']['to_name'], "[url=" . $app->config["system"]["url"] . "]" . $app->config["sitename"] . "[/url]");
+    }
+}