-
Notifications
You must be signed in to change notification settings - Fork 86
/
AssignClientToGroupBasedOnRegistrationDate.php
60 lines (50 loc) · 2.11 KB
/
AssignClientToGroupBasedOnRegistrationDate.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/**
* Assign Client to Group based on registration date
*
* @package WHMCS
* @copyright Katamaze
* @link https://katamaze.com
* @author Davide Mantenuto <[email protected]>
*/
use WHMCS\Database\Capsule;
add_hook('DailyCronJob', 1, function($vars)
{
// Define group/product pairs. Instructions provided below
// https://github.com/Katamaze/WHMCS-Free-Action-Hooks/blob/master/README.md#client-to-group-based-on-registration-date
$groups['1'] = '90';
$groups['2'] = '180';
$groups['3'] = '365';
$activeCustomers = true;
$oldestPurchase = 10;
$ignoreDomains = false;
$ignoreProducts = array('1');
if (!$groups): return; endif;
$filterStatus = ($activeCustomers ? ' AND status = "Active"' : false);
if ($oldestPurchase)
{
$ignoreProducts = ($ignoreProducts ? ' AND t2.packageid NOT IN (\'' . implode('\',\'', $ignoreProducts) . '\')' : false);
if ($ignoreDomains)
{
foreach (Capsule::select(Capsule::raw('SELECT t1.id FROM tblclients AS t1 LEFT JOIN tblhosting AS t2 ON t1.id = t2.userid WHERE DATEDIFF(CURDATE(), t2.regdate) >= "' . $oldestPurchase . '" '. $ignoreProducts .' GROUP BY t1.id')) as $v)
{
$filterPurchase[] = $v->id;
}
}
else
{
foreach (Capsule::select(Capsule::raw('SELECT t1.id FROM tblclients AS t1 LEFT JOIN tblhosting AS t2 ON t1.id = t2.userid LEFT JOIN tbldomains AS t3 ON t1.id = t3.userid WHERE (DATEDIFF(CURDATE(), t2.regdate) >= "' . $oldestPurchase . '" '. $ignoreProducts .') OR DATEDIFF(CURDATE(), t3.registrationdate) >= "' . $oldestPurchase . '" GROUP BY t1.id')) as $v)
{
$filterPurchase[] = $v->id;
}
}
if ($filterPurchase)
{
$filterPurchase = ' AND id IN (\'' . implode('\',\'', $filterPurchase) . '\')';
}
}
foreach ($groups as $groupID => $days)
{
Capsule::table('tblclients')->whereRaw('DATEDIFF(CURDATE(), datecreated) >= "' . $days . '"' . $filterStatus . $filterPurchase)->update(['groupid' => $groupID]);
}
});