Issues (3627)

plugins/MauticCrmBundle/Api/HubspotApi.php (3 issues)

1
<?php
2
3
namespace MauticPlugin\MauticCrmBundle\Api;
4
5
use Mautic\EmailBundle\Helper\MailHelper;
6
use Mautic\PluginBundle\Exception\ApiErrorException;
7
8
class HubspotApi extends CrmApi
9
{
10
    protected $requestSettings = [
11
        'encode_parameters' => 'json',
12
    ];
13
14
    protected function request($operation, $parameters = [], $method = 'GET', $object = 'contacts')
15
    {
16
        $hapikey = $this->integration->getHubSpotApiKey();
0 ignored issues
show
The method getHubSpotApiKey() does not exist on MauticPlugin\MauticCrmBu...\CrmAbstractIntegration. It seems like you code against a sub-type of MauticPlugin\MauticCrmBu...\CrmAbstractIntegration such as MauticPlugin\MauticCrmBu...tion\HubspotIntegration. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

16
        /** @scrutinizer ignore-call */ 
17
        $hapikey = $this->integration->getHubSpotApiKey();
Loading history...
17
        $url     = sprintf('%s/%s/%s/?hapikey=%s', $this->integration->getApiUrl(), $object, $operation, $hapikey);
18
        $request = $this->integration->makeRequest($url, $parameters, $method, $this->requestSettings);
19
        if (isset($request['status']) && 'error' == $request['status']) {
20
            $message = $request['message'];
21
            if (isset($request['validationResults'])) {
22
                $message .= " \n ".print_r($request['validationResults'], true);
0 ignored issues
show
Are you sure print_r($request['validationResults'], true) of type string|true can be used in concatenation? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

22
                $message .= " \n "./** @scrutinizer ignore-type */ print_r($request['validationResults'], true);
Loading history...
23
            }
24
            if (isset($request['validationResults'][0]['error']) && 'PROPERTY_DOESNT_EXIST' == $request['validationResults'][0]['error']) {
25
                $this->createProperty($request['validationResults'][0]['name']);
26
                $this->request($operation, $parameters, $method, $object);
27
            } else {
28
                throw new ApiErrorException($message);
29
            }
30
        }
31
32
        return $request;
33
    }
34
35
    /**
36
     * @return mixed
37
     */
38
    public function getLeadFields($object = 'contacts')
39
    {
40
        if ('company' == $object) {
41
            $object = 'companies'; //hubspot company object name
42
        }
43
44
        return $this->request('v2/properties', [], 'GET', $object);
45
    }
46
47
    /**
48
     * Creates Hubspot lead.
49
     *
50
     * @return mixed
51
     */
52
    public function createLead(array $data, $lead, $updateLink = false)
53
    {
54
        /*
55
         * As Hubspot integration requires a valid email
56
         * If the email is not valid we don't proceed with the request
57
         */
58
        $email  = $data['email'];
59
        $result = [];
60
        //Check if the is a valid email
61
        MailHelper::validateEmail($email);
0 ignored issues
show
Deprecated Code introduced by
The function Mautic\EmailBundle\Helpe...Helper::validateEmail() has been deprecated: 2.11.0 to be removed in 3.0; use Mautic\EmailBundle\Helper\EmailValidator ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

61
        /** @scrutinizer ignore-deprecated */ MailHelper::validateEmail($email);

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
62
        //Format data for request
63
        $formattedLeadData = $this->integration->formatLeadDataForCreateOrUpdate($data, $lead, $updateLink);
64
        if ($formattedLeadData) {
65
            $result = $this->request('v1/contact/createOrUpdate/email/'.$email, $formattedLeadData, 'POST');
66
        }
67
68
        return $result;
69
    }
70
71
    /**
72
     * gets Hubspot contact.
73
     *
74
     * @return mixed
75
     */
76
    public function getContacts($params = [])
77
    {
78
        return $this->request('v1/lists/recently_updated/contacts/recent?', $params, 'GET', 'contacts');
79
    }
80
81
    /**
82
     * gets Hubspot company.
83
     *
84
     * @return mixed
85
     */
86
    public function getCompanies($params, $id)
87
    {
88
        if ($id) {
89
            return $this->request('v2/companies/'.$id, $params, 'GET', 'companies');
90
        }
91
92
        return $this->request('v2/companies/recent/modified', $params, 'GET', 'companies');
93
    }
94
95
    /**
96
     * @param        $propertyName
97
     * @param string $object
98
     *
99
     * @return mixed|string
100
     */
101
    public function createProperty($propertyName, $object = 'properties')
102
    {
103
        return $this->request('v1/contacts/properties', ['name' => $propertyName,  'groupName' => 'contactinformation', 'type' => 'string'], 'POST', $object);
104
    }
105
}
106