Completed
Push — master ( 3c661d...2a57f9 )
by Will
26s queued 12s
created

src/Tasks/CustomersToGroupTask.php (2 issues)

1
<?php
2
3
namespace SilverShop\Tasks;
4
5
use SilverShop\Extension\ShopConfigExtension;
6
use SilverStripe\Dev\BuildTask;
7
use SilverStripe\ORM\DataObject;
8
use SilverStripe\ORM\DB;
9
use SilverStripe\Security\Member;
10
11
/**
12
 * Adds all customers to an assigned group.
13
 *
14
 * @package    shop
15
 * @subpackage tasks
16
 */
17
class CustomersToGroupTask extends BuildTask
18
{
19
    protected $title = 'Customers to Group';
20
21
    protected $description = 'Adds all customers to an assigned group.';
22
23
    public function run($request)
24
    {
25
26
        $gp = ShopConfigExtension::current()->CustomerGroup();
27
        if (empty($gp)) {
28
            return false;
29
        }
30
31
        $allCombos = DB::query(
32
            'SELECT "ID", "MemberID", "GroupID" FROM "Group_Members" WHERE "Group_Members"."GroupID" = '
33
            . $gp->ID . ';'
34
        );
35
        //make an array of all combos
36
        $alreadyAdded = array();
37
        $alreadyAdded[-1] = -1;
38
        if ($allCombos) {
0 ignored issues
show
$allCombos is of type SilverStripe\ORM\Connect\Query, thus it always evaluated to true.
Loading history...
39
            foreach ($allCombos as $combo) {
40
                $alreadyAdded[$combo['MemberID']] = $combo['MemberID'];
41
            }
42
        }
43
        $unlistedMembers = DataObject::get(
44
            Member::class,
45
            $where = '"Member"."ID" NOT IN (' . implode(',', $alreadyAdded) . ')',
46
            $sort = null,
47
            $join = 'INNER JOIN "SilverShop_Order" ON "SilverShop_Order"."MemberID" = "Member"."ID"'
48
        );
49
        //add combos
50
        if ($unlistedMembers) {
0 ignored issues
show
$unlistedMembers is of type SilverStripe\ORM\DataList, thus it always evaluated to true.
Loading history...
51
            $existingMembers = $gp->Members();
52
            foreach ($unlistedMembers as $member) {
53
                $existingMembers->add($member);
54
                echo '.';
55
            }
56
        } else {
57
            echo 'no new members added';
58
        }
59
    }
60
}
61