@@ -12,131 +12,131 @@ |
||
12 | 12 | |
13 | 13 | class Microsoft extends AbstractService |
14 | 14 | { |
15 | - const SCOPE_BASIC = 'basic'; |
|
16 | - const SCOPE_OFFLINE_ACCESS = 'offline_access'; |
|
17 | - const SCOPE_SIGNIN = 'signin'; |
|
18 | - const SCOPE_BIRTHDAY = 'birthday'; |
|
19 | - const SCOPE_CALENDARS = 'calendars'; |
|
20 | - const SCOPE_CALENDARS_UPDATE = 'calendars_update'; |
|
21 | - const SCOPE_CONTACTS_BIRTHDAY = 'contacts_birthday'; |
|
22 | - const SCOPE_CONTACTS_CREATE = 'contacts_create'; |
|
23 | - const SCOPE_CONTACTS_CALENDARS = 'contacts_calendars'; |
|
24 | - const SCOPE_CONTACTS_PHOTOS = 'contacts_photos'; |
|
25 | - const SCOPE_CONTACTS_SKYDRIVE = 'contacts_skydrive'; |
|
26 | - const SCOPE_EMAIL = 'email'; |
|
27 | - const SCOPE_EVENTS_CREATE = 'events_create'; |
|
28 | - const SCOPE_MESSENGER = 'messenger'; |
|
29 | - const SCOPE_OPENID = 'openid'; |
|
30 | - const SCOPE_PHONE_NUMBERS = 'phone_numbers'; |
|
31 | - const SCOPE_PHOTOS = 'photos'; |
|
32 | - const SCOPE_POSTAL_ADDRESSES = 'postal_addresses'; |
|
33 | - const SCOPE_PROFILE = 'profile'; |
|
34 | - const SCOPE_SHARE = 'share'; |
|
35 | - const SCOPE_SKYDRIVE = 'skydrive'; |
|
36 | - const SCOPE_SKYDRIVE_UPDATE = 'skydrive_update'; |
|
37 | - const SCOPE_WORK_PROFILE = 'work_profile'; |
|
38 | - const SCOPE_APPLICATIONS = 'applications'; |
|
39 | - const SCOPE_APPLICATIONS_CREATE = 'applications_create'; |
|
40 | - const SCOPE_IMAP = 'imap'; |
|
41 | - const SCOPE_IMAP_ACCESSASUSERALL = 'https://outlook.office365.com/IMAP.AccessAsUser.All'; |
|
42 | - const SCOPE_SMTPSEND = 'https://outlook.office365.com/SMTP.Send'; |
|
43 | - const SCOPE_USERREAD = 'User.Read'; |
|
44 | - const SCOPE_MAILREAD = 'Mail.Read'; |
|
45 | - const SCOPE_MAILSEND = 'Mail.Send'; |
|
46 | - |
|
47 | - protected $storage; |
|
48 | - |
|
49 | - |
|
50 | - /** |
|
51 | - * MS uses some magical not officialy supported scope to get even moar info like full emailaddresses. |
|
52 | - * They agree that giving 3rd party apps access to 3rd party emailaddresses is a pretty lame thing to do so in all |
|
53 | - * their wisdom they added this scope because fuck you that's why. |
|
54 | - * |
|
55 | - * https://github.com/Lusitanian/PHPoAuthLib/issues/214 |
|
56 | - * http://social.msdn.microsoft.com/Forums/live/en-US/c6dcb9ab-aed4-400a-99fb-5650c393a95d/how-retrieve-users- |
|
57 | - * contacts-email-address?forum=messengerconnect |
|
58 | - * |
|
59 | - * Considering this scope is not officially supported: use with care |
|
60 | - */ |
|
61 | - const SCOPE_CONTACTS_EMAILS = 'contacts_emails'; |
|
62 | - |
|
63 | - |
|
64 | - public function __construct( |
|
65 | - CredentialsInterface $credentials, |
|
66 | - ClientInterface $httpClient, |
|
67 | - TokenStorageInterface $storage, |
|
68 | - $scopes = array(), |
|
69 | - UriInterface $baseApiUri = null |
|
70 | - ) { |
|
71 | - parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); |
|
72 | - |
|
73 | - $this->storage = $storage; |
|
74 | - |
|
75 | - if (null === $baseApiUri) { |
|
76 | - $this->baseApiUri = new Uri('https://apis.live.net/v5.0/'); |
|
77 | - } |
|
78 | - } |
|
79 | - |
|
80 | - /** |
|
81 | - * {@inheritdoc} |
|
82 | - */ |
|
83 | - public function getAuthorizationEndpoint() |
|
84 | - { |
|
85 | - $tenant = $this->storage->getTenant(); |
|
86 | - |
|
87 | - //return new Uri('https://login.live.com/oauth20_authorize.srf'); |
|
88 | - //return new Uri('https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize'); |
|
89 | - return new Uri('https://login.microsoftonline.com/'.$tenant.'/oauth2/v2.0/authorize'); |
|
90 | - } |
|
91 | - |
|
92 | - /** |
|
93 | - * {@inheritdoc} |
|
94 | - */ |
|
95 | - public function getAccessTokenEndpoint() |
|
96 | - { |
|
97 | - $tenant = $this->storage->getTenant(); |
|
98 | - |
|
99 | - //return new Uri('https://login.live.com/oauth20_token.srf'); |
|
100 | - //return new Uri('https://login.microsoftonline.com/organizations/oauth2/v2.0/token'); |
|
101 | - return new Uri('https://login.microsoftonline.com/'.$tenant.'/oauth2/v2.0/token'); |
|
102 | - } |
|
103 | - |
|
104 | - /** |
|
105 | - * {@inheritdoc} |
|
106 | - */ |
|
107 | - public function getAuthorizationMethod() |
|
108 | - { |
|
109 | - return static::AUTHORIZATION_METHOD_QUERY_STRING; |
|
110 | - } |
|
111 | - |
|
112 | - /** |
|
113 | - * {@inheritdoc} |
|
114 | - */ |
|
115 | - protected function parseAccessTokenResponse($responseBody) |
|
116 | - { |
|
117 | - $data = json_decode($responseBody, true); |
|
118 | - |
|
119 | - if (null === $data || !is_array($data)) { |
|
120 | - throw new TokenResponseException('Unable to parse response.'); |
|
121 | - } elseif (isset($data['error'])) { |
|
122 | - throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); |
|
123 | - } |
|
124 | - //print $data['access_token'];exit; |
|
125 | - |
|
126 | - $token = new StdOAuth2Token(); |
|
127 | - $token->setAccessToken($data['access_token']); |
|
128 | - $token->setLifetime($data['expires_in']); |
|
129 | - |
|
130 | - if (isset($data['refresh_token'])) { |
|
131 | - $token->setRefreshToken($data['refresh_token']); |
|
132 | - unset($data['refresh_token']); |
|
133 | - } |
|
134 | - |
|
135 | - unset($data['access_token']); |
|
136 | - unset($data['expires_in']); |
|
137 | - |
|
138 | - $token->setExtraParams($data); |
|
139 | - |
|
140 | - return $token; |
|
141 | - } |
|
15 | + const SCOPE_BASIC = 'basic'; |
|
16 | + const SCOPE_OFFLINE_ACCESS = 'offline_access'; |
|
17 | + const SCOPE_SIGNIN = 'signin'; |
|
18 | + const SCOPE_BIRTHDAY = 'birthday'; |
|
19 | + const SCOPE_CALENDARS = 'calendars'; |
|
20 | + const SCOPE_CALENDARS_UPDATE = 'calendars_update'; |
|
21 | + const SCOPE_CONTACTS_BIRTHDAY = 'contacts_birthday'; |
|
22 | + const SCOPE_CONTACTS_CREATE = 'contacts_create'; |
|
23 | + const SCOPE_CONTACTS_CALENDARS = 'contacts_calendars'; |
|
24 | + const SCOPE_CONTACTS_PHOTOS = 'contacts_photos'; |
|
25 | + const SCOPE_CONTACTS_SKYDRIVE = 'contacts_skydrive'; |
|
26 | + const SCOPE_EMAIL = 'email'; |
|
27 | + const SCOPE_EVENTS_CREATE = 'events_create'; |
|
28 | + const SCOPE_MESSENGER = 'messenger'; |
|
29 | + const SCOPE_OPENID = 'openid'; |
|
30 | + const SCOPE_PHONE_NUMBERS = 'phone_numbers'; |
|
31 | + const SCOPE_PHOTOS = 'photos'; |
|
32 | + const SCOPE_POSTAL_ADDRESSES = 'postal_addresses'; |
|
33 | + const SCOPE_PROFILE = 'profile'; |
|
34 | + const SCOPE_SHARE = 'share'; |
|
35 | + const SCOPE_SKYDRIVE = 'skydrive'; |
|
36 | + const SCOPE_SKYDRIVE_UPDATE = 'skydrive_update'; |
|
37 | + const SCOPE_WORK_PROFILE = 'work_profile'; |
|
38 | + const SCOPE_APPLICATIONS = 'applications'; |
|
39 | + const SCOPE_APPLICATIONS_CREATE = 'applications_create'; |
|
40 | + const SCOPE_IMAP = 'imap'; |
|
41 | + const SCOPE_IMAP_ACCESSASUSERALL = 'https://outlook.office365.com/IMAP.AccessAsUser.All'; |
|
42 | + const SCOPE_SMTPSEND = 'https://outlook.office365.com/SMTP.Send'; |
|
43 | + const SCOPE_USERREAD = 'User.Read'; |
|
44 | + const SCOPE_MAILREAD = 'Mail.Read'; |
|
45 | + const SCOPE_MAILSEND = 'Mail.Send'; |
|
46 | + |
|
47 | + protected $storage; |
|
48 | + |
|
49 | + |
|
50 | + /** |
|
51 | + * MS uses some magical not officialy supported scope to get even moar info like full emailaddresses. |
|
52 | + * They agree that giving 3rd party apps access to 3rd party emailaddresses is a pretty lame thing to do so in all |
|
53 | + * their wisdom they added this scope because fuck you that's why. |
|
54 | + * |
|
55 | + * https://github.com/Lusitanian/PHPoAuthLib/issues/214 |
|
56 | + * http://social.msdn.microsoft.com/Forums/live/en-US/c6dcb9ab-aed4-400a-99fb-5650c393a95d/how-retrieve-users- |
|
57 | + * contacts-email-address?forum=messengerconnect |
|
58 | + * |
|
59 | + * Considering this scope is not officially supported: use with care |
|
60 | + */ |
|
61 | + const SCOPE_CONTACTS_EMAILS = 'contacts_emails'; |
|
62 | + |
|
63 | + |
|
64 | + public function __construct( |
|
65 | + CredentialsInterface $credentials, |
|
66 | + ClientInterface $httpClient, |
|
67 | + TokenStorageInterface $storage, |
|
68 | + $scopes = array(), |
|
69 | + UriInterface $baseApiUri = null |
|
70 | + ) { |
|
71 | + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); |
|
72 | + |
|
73 | + $this->storage = $storage; |
|
74 | + |
|
75 | + if (null === $baseApiUri) { |
|
76 | + $this->baseApiUri = new Uri('https://apis.live.net/v5.0/'); |
|
77 | + } |
|
78 | + } |
|
79 | + |
|
80 | + /** |
|
81 | + * {@inheritdoc} |
|
82 | + */ |
|
83 | + public function getAuthorizationEndpoint() |
|
84 | + { |
|
85 | + $tenant = $this->storage->getTenant(); |
|
86 | + |
|
87 | + //return new Uri('https://login.live.com/oauth20_authorize.srf'); |
|
88 | + //return new Uri('https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize'); |
|
89 | + return new Uri('https://login.microsoftonline.com/'.$tenant.'/oauth2/v2.0/authorize'); |
|
90 | + } |
|
91 | + |
|
92 | + /** |
|
93 | + * {@inheritdoc} |
|
94 | + */ |
|
95 | + public function getAccessTokenEndpoint() |
|
96 | + { |
|
97 | + $tenant = $this->storage->getTenant(); |
|
98 | + |
|
99 | + //return new Uri('https://login.live.com/oauth20_token.srf'); |
|
100 | + //return new Uri('https://login.microsoftonline.com/organizations/oauth2/v2.0/token'); |
|
101 | + return new Uri('https://login.microsoftonline.com/'.$tenant.'/oauth2/v2.0/token'); |
|
102 | + } |
|
103 | + |
|
104 | + /** |
|
105 | + * {@inheritdoc} |
|
106 | + */ |
|
107 | + public function getAuthorizationMethod() |
|
108 | + { |
|
109 | + return static::AUTHORIZATION_METHOD_QUERY_STRING; |
|
110 | + } |
|
111 | + |
|
112 | + /** |
|
113 | + * {@inheritdoc} |
|
114 | + */ |
|
115 | + protected function parseAccessTokenResponse($responseBody) |
|
116 | + { |
|
117 | + $data = json_decode($responseBody, true); |
|
118 | + |
|
119 | + if (null === $data || !is_array($data)) { |
|
120 | + throw new TokenResponseException('Unable to parse response.'); |
|
121 | + } elseif (isset($data['error'])) { |
|
122 | + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); |
|
123 | + } |
|
124 | + //print $data['access_token'];exit; |
|
125 | + |
|
126 | + $token = new StdOAuth2Token(); |
|
127 | + $token->setAccessToken($data['access_token']); |
|
128 | + $token->setLifetime($data['expires_in']); |
|
129 | + |
|
130 | + if (isset($data['refresh_token'])) { |
|
131 | + $token->setRefreshToken($data['refresh_token']); |
|
132 | + unset($data['refresh_token']); |
|
133 | + } |
|
134 | + |
|
135 | + unset($data['access_token']); |
|
136 | + unset($data['expires_in']); |
|
137 | + |
|
138 | + $token->setExtraParams($data); |
|
139 | + |
|
140 | + return $token; |
|
141 | + } |
|
142 | 142 | } |
@@ -83,7 +83,7 @@ discard block |
||
83 | 83 | |
84 | 84 | // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context |
85 | 85 | $object = new BookKeeping($db); |
86 | -$hookmanager->initHooks(array($contextpage)); // Note that conf->hooks_modules contains array |
|
86 | +$hookmanager->initHooks(array($contextpage)); // Note that conf->hooks_modules contains array |
|
87 | 87 | |
88 | 88 | $formaccounting = new FormAccounting($db); |
89 | 89 | $formother = new FormOther($db); |
@@ -161,15 +161,15 @@ discard block |
||
161 | 161 | |
162 | 162 | if (!empty($search_date_start)) { |
163 | 163 | $filter['t.doc_date>='] = $search_date_start; |
164 | - $param .= '&date_startmonth=' . GETPOSTINT('date_startmonth') . '&date_startday=' . GETPOSTINT('date_startday') . '&date_startyear=' . GETPOSTINT('date_startyear'); |
|
164 | + $param .= '&date_startmonth='.GETPOSTINT('date_startmonth').'&date_startday='.GETPOSTINT('date_startday').'&date_startyear='.GETPOSTINT('date_startyear'); |
|
165 | 165 | } |
166 | 166 | if (!empty($search_date_end)) { |
167 | 167 | $filter['t.doc_date<='] = $search_date_end; |
168 | - $param .= '&date_endmonth=' . GETPOSTINT('date_endmonth') . '&date_endday=' . GETPOSTINT('date_endday') . '&date_endyear=' . GETPOSTINT('date_endyear'); |
|
168 | + $param .= '&date_endmonth='.GETPOSTINT('date_endmonth').'&date_endday='.GETPOSTINT('date_endday').'&date_endyear='.GETPOSTINT('date_endyear'); |
|
169 | 169 | } |
170 | 170 | if (!empty($search_doc_date)) { |
171 | 171 | $filter['t.doc_date'] = $search_doc_date; |
172 | - $param .= '&doc_datemonth=' . GETPOSTINT('doc_datemonth') . '&doc_dateday=' . GETPOSTINT('doc_dateday') . '&doc_dateyear=' . GETPOSTINT('doc_dateyear'); |
|
172 | + $param .= '&doc_datemonth='.GETPOSTINT('doc_datemonth').'&doc_dateday='.GETPOSTINT('doc_dateday').'&doc_dateyear='.GETPOSTINT('doc_dateyear'); |
|
173 | 173 | } |
174 | 174 | if (!empty($search_accountancy_code_start)) { |
175 | 175 | if ($type == 'sub') { |
@@ -177,7 +177,7 @@ discard block |
||
177 | 177 | } else { |
178 | 178 | $filter['t.numero_compte>='] = $search_accountancy_code_start; |
179 | 179 | } |
180 | - $param .= '&search_accountancy_code_start=' . urlencode($search_accountancy_code_start); |
|
180 | + $param .= '&search_accountancy_code_start='.urlencode($search_accountancy_code_start); |
|
181 | 181 | } |
182 | 182 | if (!empty($search_accountancy_code_end)) { |
183 | 183 | if ($type == 'sub') { |
@@ -185,12 +185,12 @@ discard block |
||
185 | 185 | } else { |
186 | 186 | $filter['t.numero_compte<='] = $search_accountancy_code_end; |
187 | 187 | } |
188 | - $param .= '&search_accountancy_code_end=' . urlencode($search_accountancy_code_end); |
|
188 | + $param .= '&search_accountancy_code_end='.urlencode($search_accountancy_code_end); |
|
189 | 189 | } |
190 | 190 | if (!empty($search_ledger_code)) { |
191 | 191 | $filter['t.code_journal'] = $search_ledger_code; |
192 | 192 | foreach ($search_ledger_code as $code) { |
193 | - $param .= '&search_ledger_code[]=' . urlencode($code); |
|
193 | + $param .= '&search_ledger_code[]='.urlencode($code); |
|
194 | 194 | } |
195 | 195 | } |
196 | 196 | if (!empty($search_not_reconciled)) { |
@@ -201,7 +201,7 @@ discard block |
||
201 | 201 | // param with type of list |
202 | 202 | $url_param = substr($param, 1); // remove first "&" |
203 | 203 | if (!empty($type)) { |
204 | - $param = '&type=' . $type . $param; |
|
204 | + $param = '&type='.$type.$param; |
|
205 | 205 | } |
206 | 206 | } |
207 | 207 | |
@@ -223,11 +223,11 @@ discard block |
||
223 | 223 | |
224 | 224 | foreach ($object->lines as $line) { |
225 | 225 | if ($type == 'sub') { |
226 | - print '"' . length_accounta($line->subledger_account) . '"' . $sep; |
|
227 | - print '"' . $line->subledger_label . '"' . $sep; |
|
226 | + print '"'.length_accounta($line->subledger_account).'"'.$sep; |
|
227 | + print '"'.$line->subledger_label.'"'.$sep; |
|
228 | 228 | } else { |
229 | - print '"' . length_accountg($line->numero_compte) . '"' . $sep; |
|
230 | - print '"' . $object->get_compte_desc($line->numero_compte) . '"' . $sep; |
|
229 | + print '"'.length_accountg($line->numero_compte).'"'.$sep; |
|
230 | + print '"'.$object->get_compte_desc($line->numero_compte).'"'.$sep; |
|
231 | 231 | } |
232 | 232 | print '"'.price($line->debit).'"'.$sep; |
233 | 233 | print '"'.price($line->credit).'"'.$sep; |
@@ -302,7 +302,7 @@ discard block |
||
302 | 302 | $newcardbutton = empty($hookmanager->resPrint) ? '' : $hookmanager->resPrint; |
303 | 303 | |
304 | 304 | if (empty($reshook)) { |
305 | - $newcardbutton = '<input type="button" id="exportcsvbutton" name="exportcsvbutton" class="butAction" value="'.$langs->trans("Export").' (' . getDolGlobalString('ACCOUNTING_EXPORT_FORMAT').')" />'; |
|
305 | + $newcardbutton = '<input type="button" id="exportcsvbutton" name="exportcsvbutton" class="butAction" value="'.$langs->trans("Export").' ('.getDolGlobalString('ACCOUNTING_EXPORT_FORMAT').')" />'; |
|
306 | 306 | |
307 | 307 | print '<script type="text/javascript"> |
308 | 308 | jQuery(document).ready(function() { |
@@ -317,11 +317,11 @@ discard block |
||
317 | 317 | </script>'; |
318 | 318 | |
319 | 319 | if ($type == 'sub') { |
320 | - $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT . '/accountancy/bookkeeping/balance.php?' . $url_param, '', 1, array('morecss' => 'marginleftonly')); |
|
321 | - $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT . '/accountancy/bookkeeping/balance.php?type=sub&' . $url_param, '', 1, array('morecss' => 'marginleftonly btnTitleSelected')); |
|
320 | + $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/balance.php?'.$url_param, '', 1, array('morecss' => 'marginleftonly')); |
|
321 | + $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/balance.php?type=sub&'.$url_param, '', 1, array('morecss' => 'marginleftonly btnTitleSelected')); |
|
322 | 322 | } else { |
323 | - $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT . '/accountancy/bookkeeping/balance.php?' . $url_param, '', 1, array('morecss' => 'marginleftonly btnTitleSelected')); |
|
324 | - $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT . '/accountancy/bookkeeping/balance.php?type=sub&' . $url_param, '', 1, array('morecss' => 'marginleftonly')); |
|
323 | + $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/balance.php?'.$url_param, '', 1, array('morecss' => 'marginleftonly btnTitleSelected')); |
|
324 | + $newcardbutton .= dolGetButtonTitle($langs->trans('AccountBalance')." - ".$langs->trans('GroupBySubAccountAccounting'), '', 'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/balance.php?type=sub&'.$url_param, '', 1, array('morecss' => 'marginleftonly')); |
|
325 | 325 | } |
326 | 326 | $newcardbutton .= dolGetButtonTitleSeparator(); |
327 | 327 | $newcardbutton .= dolGetButtonTitle($langs->trans('NewAccountingMvt'), '', 'fa fa-plus-circle paddingleft', DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?action=create'); |
@@ -465,9 +465,9 @@ discard block |
||
465 | 465 | // without time and class limits (Class 6 and 7 accounts ???) and does not take into account the "a-nouveau" journal. |
466 | 466 | if (getDolGlobalString('ACCOUNTANCY_SHOW_OPENING_BALANCE')) { |
467 | 467 | $sql = "SELECT t.numero_compte, (SUM(t.debit) - SUM(t.credit)) as opening_balance"; |
468 | - $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as t"; |
|
469 | - $sql .= " WHERE t.entity = " . $conf->entity; // Never do sharing into accounting features |
|
470 | - $sql .= " AND t.doc_date < '" . $db->idate($search_date_start) . "'"; |
|
468 | + $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as t"; |
|
469 | + $sql .= " WHERE t.entity = ".$conf->entity; // Never do sharing into accounting features |
|
470 | + $sql .= " AND t.doc_date < '".$db->idate($search_date_start)."'"; |
|
471 | 471 | $sql .= " GROUP BY t.numero_compte"; |
472 | 472 | |
473 | 473 | $resql = $db->query($sql); |
@@ -475,7 +475,7 @@ discard block |
||
475 | 475 | $opening_balances = array(); |
476 | 476 | for ($i = 0; $i < $nrows; $i++) { |
477 | 477 | $arr = $resql->fetch_array(); |
478 | - $opening_balances["'" . $arr['numero_compte'] . "'"] = $arr['opening_balance']; |
|
478 | + $opening_balances["'".$arr['numero_compte']."'"] = $arr['opening_balance']; |
|
479 | 479 | } |
480 | 480 | } |
481 | 481 | |
@@ -507,9 +507,9 @@ discard block |
||
507 | 507 | //var_dump($accounting_account); |
508 | 508 | //var_dump($accountingaccountstatic); |
509 | 509 | if (empty($accountingaccountstatic->label) && $accountingaccountstatic->id > 0) { |
510 | - $link = '<a class="editfielda reposition" href="' . DOL_URL_ROOT . '/accountancy/admin/card.php?action=update&token=' . newToken() . '&id=' . $accountingaccountstatic->id . '">' . img_edit() . '</a>'; |
|
510 | + $link = '<a class="editfielda reposition" href="'.DOL_URL_ROOT.'/accountancy/admin/card.php?action=update&token='.newToken().'&id='.$accountingaccountstatic->id.'">'.img_edit().'</a>'; |
|
511 | 511 | } elseif ($accounting_account == 'NotDefined') { |
512 | - $link = '<a href="' . DOL_URL_ROOT . '/accountancy/admin/card.php?action=create&token=' . newToken() . '&accountingaccount=' . length_accountg($line->numero_compte) . '">' . img_edit_add() . '</a>'; |
|
512 | + $link = '<a href="'.DOL_URL_ROOT.'/accountancy/admin/card.php?action=create&token='.newToken().'&accountingaccount='.length_accountg($line->numero_compte).'">'.img_edit_add().'</a>'; |
|
513 | 513 | } elseif (empty($tmparrayforrootaccount['label'])) { |
514 | 514 | // $tmparrayforrootaccount['label'] not defined = the account has not parent with a parent. |
515 | 515 | // This is useless, we should not create a new account when an account has no parent, we must edit it to fix its parent. |
@@ -546,7 +546,7 @@ discard block |
||
546 | 546 | |
547 | 547 | // Show first line of a break |
548 | 548 | print '<tr class="trforbreak">'; |
549 | - print '<td colspan="'.($colspan+1).'" class="tdforbreak">'.$root_account_number.($root_account_description ? ' - '.$root_account_description : '').'</td>'; |
|
549 | + print '<td colspan="'.($colspan + 1).'" class="tdforbreak">'.$root_account_number.($root_account_description ? ' - '.$root_account_description : '').'</td>'; |
|
550 | 550 | print '</tr>'; |
551 | 551 | |
552 | 552 | $displayed_account = $root_account_number; |
@@ -585,22 +585,22 @@ discard block |
||
585 | 585 | $urlzoom = ''; |
586 | 586 | if ($type == 'sub') { |
587 | 587 | if ($line->subledger_account) { |
588 | - $urlzoom = DOL_URL_ROOT . '/accountancy/bookkeeping/listbyaccount.php?type=sub&search_accountancy_code_start=' . urlencode($line->subledger_account) . '&search_accountancy_code_end=' . urlencode($line->subledger_account); |
|
588 | + $urlzoom = DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?type=sub&search_accountancy_code_start='.urlencode($line->subledger_account).'&search_accountancy_code_end='.urlencode($line->subledger_account); |
|
589 | 589 | if (GETPOSTISSET('date_startmonth')) { |
590 | - $urlzoom .= '&search_date_startmonth=' . GETPOSTINT('date_startmonth') . '&search_date_startday=' . GETPOSTINT('date_startday') . '&search_date_startyear=' . GETPOSTINT('date_startyear'); |
|
590 | + $urlzoom .= '&search_date_startmonth='.GETPOSTINT('date_startmonth').'&search_date_startday='.GETPOSTINT('date_startday').'&search_date_startyear='.GETPOSTINT('date_startyear'); |
|
591 | 591 | } |
592 | 592 | if (GETPOSTISSET('date_endmonth')) { |
593 | - $urlzoom .= '&search_date_endmonth=' . GETPOSTINT('date_endmonth') . '&search_date_endday=' . GETPOSTINT('date_endday') . '&search_date_endyear=' . GETPOSTINT('date_endyear'); |
|
593 | + $urlzoom .= '&search_date_endmonth='.GETPOSTINT('date_endmonth').'&search_date_endday='.GETPOSTINT('date_endday').'&search_date_endyear='.GETPOSTINT('date_endyear'); |
|
594 | 594 | } |
595 | 595 | } |
596 | 596 | } else { |
597 | 597 | if ($line->numero_compte) { |
598 | - $urlzoom = DOL_URL_ROOT . '/accountancy/bookkeeping/listbyaccount.php?search_accountancy_code_start=' . urlencode($line->numero_compte) . '&search_accountancy_code_end=' . urlencode($line->numero_compte); |
|
598 | + $urlzoom = DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?search_accountancy_code_start='.urlencode($line->numero_compte).'&search_accountancy_code_end='.urlencode($line->numero_compte); |
|
599 | 599 | if (GETPOSTISSET('date_startmonth')) { |
600 | - $urlzoom .= '&search_date_startmonth=' . GETPOSTINT('date_startmonth') . '&search_date_startday=' . GETPOSTINT('date_startday') . '&search_date_startyear=' . GETPOSTINT('date_startyear'); |
|
600 | + $urlzoom .= '&search_date_startmonth='.GETPOSTINT('date_startmonth').'&search_date_startday='.GETPOSTINT('date_startday').'&search_date_startyear='.GETPOSTINT('date_startyear'); |
|
601 | 601 | } |
602 | 602 | if (GETPOSTISSET('date_endmonth')) { |
603 | - $urlzoom .= '&search_date_endmonth=' . GETPOSTINT('date_endmonth') . '&search_date_endday=' . GETPOSTINT('date_endday') . '&search_date_endyear=' . GETPOSTINT('date_endyear'); |
|
603 | + $urlzoom .= '&search_date_endmonth='.GETPOSTINT('date_endmonth').'&search_date_endday='.GETPOSTINT('date_endday').'&search_date_endyear='.GETPOSTINT('date_endyear'); |
|
604 | 604 | } |
605 | 605 | } |
606 | 606 | } |
@@ -643,9 +643,9 @@ discard block |
||
643 | 643 | print '<td class="right nowraponall amount">'.price(price2num($sous_total_debit, 'MT')).'</td>'; |
644 | 644 | print '<td class="right nowraponall amount">'.price(price2num($sous_total_credit, 'MT')).'</td>'; |
645 | 645 | if (getDolGlobalString('ACCOUNTANCY_SHOW_OPENING_BALANCE')) { |
646 | - print '<td class="right nowraponall amount">' . price(price2num($sous_total_opening_balance + $sous_total_debit - $sous_total_credit, 'MT')) . '</td>'; |
|
646 | + print '<td class="right nowraponall amount">'.price(price2num($sous_total_opening_balance + $sous_total_debit - $sous_total_credit, 'MT')).'</td>'; |
|
647 | 647 | } else { |
648 | - print '<td class="right nowraponall amount">' . price(price2num($sous_total_debit - $sous_total_credit, 'MT')) . '</td>'; |
|
648 | + print '<td class="right nowraponall amount">'.price(price2num($sous_total_debit - $sous_total_credit, 'MT')).'</td>'; |
|
649 | 649 | } |
650 | 650 | // Action column |
651 | 651 | if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { |
@@ -666,9 +666,9 @@ discard block |
||
666 | 666 | print '<td class="right nowraponall amount">'.price(price2num($total_debit, 'MT')).'</td>'; |
667 | 667 | print '<td class="right nowraponall amount">'.price(price2num($total_credit, 'MT')).'</td>'; |
668 | 668 | if (getDolGlobalString('ACCOUNTANCY_SHOW_OPENING_BALANCE')) { |
669 | - print '<td class="right nowraponall amount">' . price(price2num($total_opening_balance + $total_debit - $total_credit, 'MT')) . '</td>'; |
|
669 | + print '<td class="right nowraponall amount">'.price(price2num($total_opening_balance + $total_debit - $total_credit, 'MT')).'</td>'; |
|
670 | 670 | } else { |
671 | - print '<td class="right nowraponall amount">' . price(price2num($total_debit - $total_credit, 'MT')) . '</td>'; |
|
671 | + print '<td class="right nowraponall amount">'.price(price2num($total_debit - $total_credit, 'MT')).'</td>'; |
|
672 | 672 | } |
673 | 673 | // Action column |
674 | 674 | if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { |
@@ -682,7 +682,7 @@ discard block |
||
682 | 682 | if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { |
683 | 683 | print "<td></td>\n"; |
684 | 684 | } |
685 | - print '<td class="right">' . $langs->trans("AccountingResult") . ':</td>'; |
|
685 | + print '<td class="right">'.$langs->trans("AccountingResult").':</td>'; |
|
686 | 686 | if (getDolGlobalString('ACCOUNTANCY_SHOW_OPENING_BALANCE')) { |
687 | 687 | print '<td></td>'; |
688 | 688 | } |
@@ -695,8 +695,8 @@ discard block |
||
695 | 695 | $accountingResultCredit = price(price2num($accountingResult, 'MT')); |
696 | 696 | $accountingResultClassCSS = ' green'; |
697 | 697 | } |
698 | - print '<td class="right nowraponall amount' . $accountingResultClassCSS . '">' . $accountingResultDebit . '</td>'; |
|
699 | - print '<td class="right nowraponall amount' . $accountingResultClassCSS . '">' . $accountingResultCredit . '</td>'; |
|
698 | + print '<td class="right nowraponall amount'.$accountingResultClassCSS.'">'.$accountingResultDebit.'</td>'; |
|
699 | + print '<td class="right nowraponall amount'.$accountingResultClassCSS.'">'.$accountingResultCredit.'</td>'; |
|
700 | 700 | |
701 | 701 | print '<td></td>'; |
702 | 702 | if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { |
@@ -47,7 +47,7 @@ discard block |
||
47 | 47 | $limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit; |
48 | 48 | $sortfield = GETPOST('sortfield', 'aZ09comma'); |
49 | 49 | $sortorder = GETPOST('sortorder', 'aZ09comma'); |
50 | -$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list |
|
50 | +$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list |
|
51 | 51 | $confirm = GETPOST('confirm', 'alpha'); |
52 | 52 | |
53 | 53 | $page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page"); |
@@ -265,12 +265,12 @@ discard block |
||
265 | 265 | foreach ($typeleaves as $key => $val) { |
266 | 266 | $labeltypes[$val['id']] = ($langs->trans($val['code']) != $val['code']) ? $langs->trans($val['code']) : $langs->trans($val['label']); |
267 | 267 | } |
268 | - $formquestion [] = array( 'type' => 'other', |
|
268 | + $formquestion [] = array('type' => 'other', |
|
269 | 269 | 'name' => 'typeofholiday', |
270 | 270 | 'label' => $langs->trans("Type"), |
271 | 271 | 'value' => $form->selectarray('typeholiday', $labeltypes, GETPOST('typeholiday', 'alpha'), 1) |
272 | 272 | ); |
273 | - $formquestion [] = array( 'type' => 'other', |
|
273 | + $formquestion [] = array('type' => 'other', |
|
274 | 274 | 'name' => 'nbdaysholydays', |
275 | 275 | 'label' => $langs->trans("NumberDayAddMass"), |
276 | 276 | 'value' => '<input name="nbdaysholidays" class="maxwidth75" id="nbdaysholidays" value="'.GETPOSTINT('nbdaysholidays').'">' |
@@ -82,12 +82,12 @@ discard block |
||
82 | 82 | 'bom' => 'Bom', |
83 | 83 | 'bookcal' => 'BookCal', |
84 | 84 | 'bookmark' => 'Bookmark', |
85 | - 'cashdesk' => null, // TODO: fill in proper class |
|
85 | + 'cashdesk' => null, // TODO: fill in proper class |
|
86 | 86 | 'category' => 'Categorie', |
87 | 87 | 'clicktodial' => 'ClickToDial', |
88 | 88 | 'collab' => 'Collab', |
89 | 89 | 'comptabilite' => 'Comptabilite', |
90 | - 'contact' => null, // TODO: fill in proper class |
|
90 | + 'contact' => null, // TODO: fill in proper class |
|
91 | 91 | 'contract' => 'Contrat', |
92 | 92 | 'cron' => 'Cron', |
93 | 93 | 'datapolicy' => 'DataPolicy', |
@@ -99,7 +99,7 @@ discard block |
||
99 | 99 | 'don' => 'Don', |
100 | 100 | 'dynamicprices' => 'DynamicPrices', |
101 | 101 | 'ecm' => 'ECM', |
102 | - 'ecotax' => null, // TODO: External module ? |
|
102 | + 'ecotax' => null, // TODO: External module ? |
|
103 | 103 | 'emailcollector' => 'EmailCollector', |
104 | 104 | 'eventorganization' => 'EventOrganization', |
105 | 105 | 'expensereport' => 'ExpenseReport', |
@@ -110,7 +110,7 @@ discard block |
||
110 | 110 | 'fournisseur' => 'Fournisseur', |
111 | 111 | 'ftp' => 'FTP', |
112 | 112 | 'geoipmaxmind' => 'GeoIPMaxmind', |
113 | - 'google' => null, // External ? |
|
113 | + 'google' => null, // External ? |
|
114 | 114 | 'gravatar' => 'Gravatar', |
115 | 115 | 'holiday' => 'Holiday', |
116 | 116 | 'hrm' => 'HRM', |
@@ -124,7 +124,7 @@ discard block |
||
124 | 124 | 'ldap' => 'Ldap', |
125 | 125 | 'loan' => 'Loan', |
126 | 126 | 'mailing' => 'Mailing', |
127 | - 'mailman' => null, // Same module as mailmanspip -> MailmanSpip ?? |
|
127 | + 'mailman' => null, // Same module as mailmanspip -> MailmanSpip ?? |
|
128 | 128 | 'mailmanspip' => 'MailmanSpip', |
129 | 129 | 'margin' => 'Margin', |
130 | 130 | 'member' => 'Adherent', |
@@ -137,7 +137,7 @@ discard block |
||
137 | 137 | 'notification' => 'Notification', |
138 | 138 | 'numberwords' => null, // Not provided by default, no module tests |
139 | 139 | 'oauth' => 'Oauth', |
140 | - 'openstreetmap' => null, // External module? |
|
140 | + 'openstreetmap' => null, // External module? |
|
141 | 141 | 'opensurvey' => 'OpenSurvey', |
142 | 142 | 'order' => 'Commande', |
143 | 143 | 'partnership' => 'Partnership', |
@@ -164,8 +164,8 @@ discard block |
||
164 | 164 | 'stock' => 'Stock', |
165 | 165 | 'stocktransfer' => 'StockTransfer', |
166 | 166 | 'stripe' => 'Stripe', |
167 | - 'supplier_invoice' => null, // Special case, uses invoice |
|
168 | - 'supplier_order' => null, // Special case, uses invoice |
|
167 | + 'supplier_invoice' => null, // Special case, uses invoice |
|
168 | + 'supplier_order' => null, // Special case, uses invoice |
|
169 | 169 | 'supplier_proposal' => 'SupplierProposal', |
170 | 170 | 'syslog' => 'Syslog', |
171 | 171 | 'takepos' => 'TakePos', |
@@ -196,7 +196,7 @@ discard block |
||
196 | 196 | // 'processes' => 6, |
197 | 197 | 'backward_compatibility_checks' => false, |
198 | 198 | 'simplify_ast' => true, |
199 | - 'analyzed_file_extensions' => ['php','inc'], |
|
199 | + 'analyzed_file_extensions' => ['php', 'inc'], |
|
200 | 200 | 'globals_type_map' => [ |
201 | 201 | 'conf' => '\Conf', |
202 | 202 | 'db' => '\DoliDB', |
@@ -226,7 +226,7 @@ discard block |
||
226 | 226 | // your application should be included in this list. |
227 | 227 | 'directory_list' => [ |
228 | 228 | 'htdocs', |
229 | - PHAN_DIR . '/stubs/', |
|
229 | + PHAN_DIR.'/stubs/', |
|
230 | 230 | ], |
231 | 231 | |
232 | 232 | // A directory list that defines files that will be excluded |
@@ -243,7 +243,7 @@ discard block |
||
243 | 243 | "exclude_analysis_directory_list" => [ |
244 | 244 | 'htdocs/includes/', |
245 | 245 | 'htdocs/core/class/lessc.class.php', // External library |
246 | - PHAN_DIR . '/stubs/', |
|
246 | + PHAN_DIR.'/stubs/', |
|
247 | 247 | ], |
248 | 248 | //'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@', |
249 | 249 | 'exclude_file_regex' => '@^(' // @phpstan-ignore-line |
@@ -254,7 +254,7 @@ discard block |
||
254 | 254 | .'|htdocs/includes/restler/.*' // @phpstan-ignore-line |
255 | 255 | // Included as stub (did not seem properly analysed by phan without it) |
256 | 256 | .'|htdocs/includes/stripe/.*' // @phpstan-ignore-line |
257 | - .')@', // @phpstan-ignore-line |
|
257 | + .')@', // @phpstan-ignore-line |
|
258 | 258 | |
259 | 259 | // A list of plugin files to execute. |
260 | 260 | // Plugins which are bundled with Phan can be added here by providing their name |
@@ -275,7 +275,7 @@ discard block |
||
275 | 275 | 'plugins' => [ |
276 | 276 | __DIR__.'/plugins/NoVarDumpPlugin.php', |
277 | 277 | __DIR__.'/plugins/ParamMatchRegexPlugin.php', |
278 | - __DIR__.'/plugins/GetPostFixerPlugin.php', // Only detects without --automatic-fix |
|
278 | + __DIR__.'/plugins/GetPostFixerPlugin.php', // Only detects without --automatic-fix |
|
279 | 279 | 'DeprecateAliasPlugin', |
280 | 280 | //'EmptyMethodAndFunctionPlugin', |
281 | 281 | 'InvalidVariableIssetPlugin', |
@@ -327,24 +327,24 @@ discard block |
||
327 | 327 | // Add any issue types (such as 'PhanUndeclaredMethod') |
328 | 328 | // here to inhibit them from being reported |
329 | 329 | 'suppress_issue_types' => [ |
330 | - 'PhanPluginWhitespaceTab', // Dolibarr used tabs |
|
331 | - 'PhanPluginCanUsePHP71Void', // Dolibarr is maintaining 7.0 compatibility |
|
332 | - 'PhanPluginShortArray', // Dolibarr uses array() |
|
333 | - 'PhanPluginShortArrayList', // Dolibarr uses array() |
|
330 | + 'PhanPluginWhitespaceTab', // Dolibarr used tabs |
|
331 | + 'PhanPluginCanUsePHP71Void', // Dolibarr is maintaining 7.0 compatibility |
|
332 | + 'PhanPluginShortArray', // Dolibarr uses array() |
|
333 | + 'PhanPluginShortArrayList', // Dolibarr uses array() |
|
334 | 334 | // Fixers From PHPDocToRealTypesPlugin: |
335 | - 'PhanPluginCanUseParamType', // Fixer - Report/Add types in the function definition (function abc(string $var) (adds string) |
|
336 | - 'PhanPluginCanUseReturnType', // Fixer - Report/Add return types in the function definition (function abc(string $var) (adds string) |
|
337 | - 'PhanPluginCanUseNullableParamType', // Fixer - Report/Add nullable parameter types in the function definition |
|
338 | - 'PhanPluginCanUseNullableReturnType', // Fixer - Report/Add nullable return types in the function definition |
|
339 | - 'PhanPluginNonBoolBranch', // Not essential - 31240+ occurrences |
|
340 | - 'PhanPluginNumericalComparison', // Not essential - 19870+ occurrences |
|
341 | - 'PhanTypeMismatchArgument', // Not essential - 12300+ occurrences |
|
342 | - 'PhanPluginNonBoolInLogicalArith', // Not essential - 11040+ occurrences |
|
343 | - 'PhanPluginConstantVariableScalar', // Not essential - 5180+ occurrences |
|
335 | + 'PhanPluginCanUseParamType', // Fixer - Report/Add types in the function definition (function abc(string $var) (adds string) |
|
336 | + 'PhanPluginCanUseReturnType', // Fixer - Report/Add return types in the function definition (function abc(string $var) (adds string) |
|
337 | + 'PhanPluginCanUseNullableParamType', // Fixer - Report/Add nullable parameter types in the function definition |
|
338 | + 'PhanPluginCanUseNullableReturnType', // Fixer - Report/Add nullable return types in the function definition |
|
339 | + 'PhanPluginNonBoolBranch', // Not essential - 31240+ occurrences |
|
340 | + 'PhanPluginNumericalComparison', // Not essential - 19870+ occurrences |
|
341 | + 'PhanTypeMismatchArgument', // Not essential - 12300+ occurrences |
|
342 | + 'PhanPluginNonBoolInLogicalArith', // Not essential - 11040+ occurrences |
|
343 | + 'PhanPluginConstantVariableScalar', // Not essential - 5180+ occurrences |
|
344 | 344 | 'PhanPluginDuplicateAdjacentStatement', |
345 | - 'PhanPluginDuplicateConditionalTernaryDuplication', // 2750+ occurrences |
|
346 | - 'PhanPluginDuplicateConditionalNullCoalescing', // Not essential - 990+ occurrences |
|
347 | - 'PhanPluginRedundantAssignmentInGlobalScope', // Not essential, a lot of false warning |
|
345 | + 'PhanPluginDuplicateConditionalTernaryDuplication', // 2750+ occurrences |
|
346 | + 'PhanPluginDuplicateConditionalNullCoalescing', // Not essential - 990+ occurrences |
|
347 | + 'PhanPluginRedundantAssignmentInGlobalScope', // Not essential, a lot of false warning |
|
348 | 348 | ], |
349 | 349 | // You can put relative paths to internal stubs in this config option. |
350 | 350 | // Phan will continue using its detailed type annotations, |
@@ -363,29 +363,29 @@ discard block |
||
363 | 363 | //'xdebug' => 'vendor/phan/phan/.phan/internal_stubs/xdebug.phan_php', |
364 | 364 | //'memcached' => PHAN_DIR . '/your_internal_stubs_folder_name/memcached.phan_php', |
365 | 365 | //'PDO' => PHAN_DIR . '/stubs/PDO.phan_php', |
366 | - 'brotli' => PHAN_DIR . '/stubs/brotli.phan_php', |
|
367 | - 'curl' => PHAN_DIR . '/stubs/curl.phan_php', |
|
368 | - 'calendar' => PHAN_DIR . '/stubs/calendar.phan_php', |
|
369 | - 'fileinfo' => PHAN_DIR . '/stubs/fileinfo.phan_php', |
|
370 | - 'ftp' => PHAN_DIR . '/stubs/ftp.phan_php', |
|
371 | - 'gd' => PHAN_DIR . '/stubs/gd.phan_php', |
|
372 | - 'geoip' => PHAN_DIR . '/stubs/geoip.phan_php', |
|
373 | - 'imap' => PHAN_DIR . '/stubs/imap.phan_php', |
|
374 | - 'intl' => PHAN_DIR . '/stubs/intl.phan_php', |
|
375 | - 'ldap' => PHAN_DIR . '/stubs/ldap.phan_php', |
|
376 | - 'mcrypt' => PHAN_DIR . '/stubs/mcrypt.phan_php', |
|
377 | - 'memcache' => PHAN_DIR . '/stubs/memcache.phan_php', |
|
378 | - 'mysqli' => PHAN_DIR . '/stubs/mysqli.phan_php', |
|
379 | - 'pdo_cubrid' => PHAN_DIR . '/stubs/pdo_cubrid.phan_php', |
|
380 | - 'pdo_mysql' => PHAN_DIR . '/stubs/pdo_mysql.phan_php', |
|
381 | - 'pdo_pgsql' => PHAN_DIR . '/stubs/pdo_pgsql.phan_php', |
|
382 | - 'pdo_sqlite' => PHAN_DIR . '/stubs/pdo_sqlite.phan_php', |
|
383 | - 'pgsql' => PHAN_DIR . '/stubs/pgsql.phan_php', |
|
384 | - 'session' => PHAN_DIR . '/stubs/session.phan_php', |
|
385 | - 'simplexml' => PHAN_DIR . '/stubs/SimpleXML.phan_php', |
|
386 | - 'soap' => PHAN_DIR . '/stubs/soap.phan_php', |
|
387 | - 'sockets' => PHAN_DIR . '/stubs/sockets.phan_php', |
|
388 | - 'zip' => PHAN_DIR . '/stubs/zip.phan_php', |
|
366 | + 'brotli' => PHAN_DIR.'/stubs/brotli.phan_php', |
|
367 | + 'curl' => PHAN_DIR.'/stubs/curl.phan_php', |
|
368 | + 'calendar' => PHAN_DIR.'/stubs/calendar.phan_php', |
|
369 | + 'fileinfo' => PHAN_DIR.'/stubs/fileinfo.phan_php', |
|
370 | + 'ftp' => PHAN_DIR.'/stubs/ftp.phan_php', |
|
371 | + 'gd' => PHAN_DIR.'/stubs/gd.phan_php', |
|
372 | + 'geoip' => PHAN_DIR.'/stubs/geoip.phan_php', |
|
373 | + 'imap' => PHAN_DIR.'/stubs/imap.phan_php', |
|
374 | + 'intl' => PHAN_DIR.'/stubs/intl.phan_php', |
|
375 | + 'ldap' => PHAN_DIR.'/stubs/ldap.phan_php', |
|
376 | + 'mcrypt' => PHAN_DIR.'/stubs/mcrypt.phan_php', |
|
377 | + 'memcache' => PHAN_DIR.'/stubs/memcache.phan_php', |
|
378 | + 'mysqli' => PHAN_DIR.'/stubs/mysqli.phan_php', |
|
379 | + 'pdo_cubrid' => PHAN_DIR.'/stubs/pdo_cubrid.phan_php', |
|
380 | + 'pdo_mysql' => PHAN_DIR.'/stubs/pdo_mysql.phan_php', |
|
381 | + 'pdo_pgsql' => PHAN_DIR.'/stubs/pdo_pgsql.phan_php', |
|
382 | + 'pdo_sqlite' => PHAN_DIR.'/stubs/pdo_sqlite.phan_php', |
|
383 | + 'pgsql' => PHAN_DIR.'/stubs/pgsql.phan_php', |
|
384 | + 'session' => PHAN_DIR.'/stubs/session.phan_php', |
|
385 | + 'simplexml' => PHAN_DIR.'/stubs/SimpleXML.phan_php', |
|
386 | + 'soap' => PHAN_DIR.'/stubs/soap.phan_php', |
|
387 | + 'sockets' => PHAN_DIR.'/stubs/sockets.phan_php', |
|
388 | + 'zip' => PHAN_DIR.'/stubs/zip.phan_php', |
|
389 | 389 | ], |
390 | 390 | |
391 | 391 | ]; |
@@ -40,7 +40,7 @@ discard block |
||
40 | 40 | // 'processes' => 6, |
41 | 41 | 'backward_compatibility_checks' => false, |
42 | 42 | 'simplify_ast' => true, |
43 | - 'analyzed_file_extensions' => ['php','inc'], |
|
43 | + 'analyzed_file_extensions' => ['php', 'inc'], |
|
44 | 44 | 'globals_type_map' => [ |
45 | 45 | 'conf' => '\Conf', |
46 | 46 | 'db' => '\DoliDB', |
@@ -70,7 +70,7 @@ discard block |
||
70 | 70 | // your application should be included in this list. |
71 | 71 | 'directory_list' => [ |
72 | 72 | 'htdocs', |
73 | - PHAN_DIR . '/stubs/', |
|
73 | + PHAN_DIR.'/stubs/', |
|
74 | 74 | ], |
75 | 75 | |
76 | 76 | // A directory list that defines files that will be excluded |
@@ -87,7 +87,7 @@ discard block |
||
87 | 87 | "exclude_analysis_directory_list" => [ |
88 | 88 | 'htdocs/includes/', |
89 | 89 | 'htdocs/core/class/lessc.class.php', // External library |
90 | - PHAN_DIR . '/stubs/', |
|
90 | + PHAN_DIR.'/stubs/', |
|
91 | 91 | ], |
92 | 92 | //'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@', |
93 | 93 | 'exclude_file_regex' => '@^(' // @phpstan-ignore-line |
@@ -100,7 +100,7 @@ discard block |
||
100 | 100 | .'|htdocs/includes/stripe/.*' // @phpstan-ignore-line |
101 | 101 | //.'|htdocs/[^c][^o][^r][^e][^/].*' // For testing @phpstan-ignore-line |
102 | 102 | //.'|htdocs/[^h].*' // For testing on restricted set @phpstan-ignore-line |
103 | - .')@', // @phpstan-ignore-line |
|
103 | + .')@', // @phpstan-ignore-line |
|
104 | 104 | |
105 | 105 | // A list of plugin files to execute. |
106 | 106 | // Plugins which are bundled with Phan can be added here by providing their name |
@@ -172,26 +172,26 @@ discard block |
||
172 | 172 | // Add any issue types (such as 'PhanUndeclaredMethod') |
173 | 173 | // here to inhibit them from being reported |
174 | 174 | 'suppress_issue_types' => [ |
175 | - 'PhanPluginWhitespaceTab', // Dolibarr used tabs |
|
176 | - 'PhanPluginCanUsePHP71Void', // Dolibarr is maintaining 7.0 compatibility |
|
177 | - 'PhanPluginShortArray', // Dolibarr uses array() |
|
178 | - 'PhanPluginShortArrayList', // Dolibarr uses array() |
|
175 | + 'PhanPluginWhitespaceTab', // Dolibarr used tabs |
|
176 | + 'PhanPluginCanUsePHP71Void', // Dolibarr is maintaining 7.0 compatibility |
|
177 | + 'PhanPluginShortArray', // Dolibarr uses array() |
|
178 | + 'PhanPluginShortArrayList', // Dolibarr uses array() |
|
179 | 179 | // The following may require that --quick is not used |
180 | 180 | // Fixers From PHPDocToRealTypesPlugin: |
181 | - 'PhanPluginCanUseParamType', // Fixer - Report/Add types in the function definition (function abc(string $var) (adds string) |
|
182 | - 'PhanPluginCanUseReturnType', // Fixer - Report/Add return types in the function definition (function abc(string $var) (adds string) |
|
183 | - 'PhanPluginCanUseNullableParamType', // Fixer - Report/Add nullable parameter types in the function definition |
|
184 | - 'PhanPluginCanUseNullableReturnType', // Fixer - Report/Add nullable return types in the function definition |
|
185 | - |
|
186 | - 'PhanPluginNonBoolBranch', // Not essential - 31240+ occurrences |
|
187 | - 'PhanPluginNumericalComparison', // Not essential - 19870+ occurrences |
|
188 | - 'PhanTypeMismatchArgument', // Not essential - 12300+ occurrences |
|
189 | - 'PhanPluginNonBoolInLogicalArith', // Not essential - 11040+ occurrences |
|
190 | - 'PhanPluginConstantVariableScalar', // Not essential - 5180+ occurrences |
|
181 | + 'PhanPluginCanUseParamType', // Fixer - Report/Add types in the function definition (function abc(string $var) (adds string) |
|
182 | + 'PhanPluginCanUseReturnType', // Fixer - Report/Add return types in the function definition (function abc(string $var) (adds string) |
|
183 | + 'PhanPluginCanUseNullableParamType', // Fixer - Report/Add nullable parameter types in the function definition |
|
184 | + 'PhanPluginCanUseNullableReturnType', // Fixer - Report/Add nullable return types in the function definition |
|
185 | + |
|
186 | + 'PhanPluginNonBoolBranch', // Not essential - 31240+ occurrences |
|
187 | + 'PhanPluginNumericalComparison', // Not essential - 19870+ occurrences |
|
188 | + 'PhanTypeMismatchArgument', // Not essential - 12300+ occurrences |
|
189 | + 'PhanPluginNonBoolInLogicalArith', // Not essential - 11040+ occurrences |
|
190 | + 'PhanPluginConstantVariableScalar', // Not essential - 5180+ occurrences |
|
191 | 191 | 'PhanPluginDuplicateAdjacentStatement', |
192 | - 'PhanPluginDuplicateConditionalTernaryDuplication', // 2750+ occurrences |
|
193 | - 'PhanPluginDuplicateConditionalNullCoalescing', // Not essential - 990+ occurrences |
|
194 | - 'PhanPluginRedundantAssignmentInGlobalScope', // Not essential, a lot of false warning |
|
192 | + 'PhanPluginDuplicateConditionalTernaryDuplication', // 2750+ occurrences |
|
193 | + 'PhanPluginDuplicateConditionalNullCoalescing', // Not essential - 990+ occurrences |
|
194 | + 'PhanPluginRedundantAssignmentInGlobalScope', // Not essential, a lot of false warning |
|
195 | 195 | ], |
196 | 196 | // You can put relative paths to internal stubs in this config option. |
197 | 197 | // Phan will continue using its detailed type annotations, |
@@ -210,29 +210,29 @@ discard block |
||
210 | 210 | //'xdebug' => 'vendor/phan/phan/.phan/internal_stubs/xdebug.phan_php', |
211 | 211 | //'memcached' => PHAN_DIR . '/your_internal_stubs_folder_name/memcached.phan_php', |
212 | 212 | //'PDO' => PHAN_DIR . '/stubs/PDO.phan_php', |
213 | - 'brotli' => PHAN_DIR . '/stubs/brotli.phan_php', |
|
214 | - 'curl' => PHAN_DIR . '/stubs/curl.phan_php', |
|
215 | - 'calendar' => PHAN_DIR . '/stubs/calendar.phan_php', |
|
216 | - 'fileinfo' => PHAN_DIR . '/stubs/fileinfo.phan_php', |
|
217 | - 'ftp' => PHAN_DIR . '/stubs/ftp.phan_php', |
|
218 | - 'gd' => PHAN_DIR . '/stubs/gd.phan_php', |
|
219 | - 'geoip' => PHAN_DIR . '/stubs/geoip.phan_php', |
|
220 | - 'imap' => PHAN_DIR . '/stubs/imap.phan_php', |
|
221 | - 'intl' => PHAN_DIR . '/stubs/intl.phan_php', |
|
222 | - 'ldap' => PHAN_DIR . '/stubs/ldap.phan_php', |
|
223 | - 'mcrypt' => PHAN_DIR . '/stubs/mcrypt.phan_php', |
|
224 | - 'memcache' => PHAN_DIR . '/stubs/memcache.phan_php', |
|
225 | - 'mysqli' => PHAN_DIR . '/stubs/mysqli.phan_php', |
|
226 | - 'pdo_cubrid' => PHAN_DIR . '/stubs/pdo_cubrid.phan_php', |
|
227 | - 'pdo_mysql' => PHAN_DIR . '/stubs/pdo_mysql.phan_php', |
|
228 | - 'pdo_pgsql' => PHAN_DIR . '/stubs/pdo_pgsql.phan_php', |
|
229 | - 'pdo_sqlite' => PHAN_DIR . '/stubs/pdo_sqlite.phan_php', |
|
230 | - 'pgsql' => PHAN_DIR . '/stubs/pgsql.phan_php', |
|
231 | - 'session' => PHAN_DIR . '/stubs/session.phan_php', |
|
232 | - 'simplexml' => PHAN_DIR . '/stubs/SimpleXML.phan_php', |
|
233 | - 'soap' => PHAN_DIR . '/stubs/soap.phan_php', |
|
234 | - 'sockets' => PHAN_DIR . '/stubs/sockets.phan_php', |
|
235 | - 'zip' => PHAN_DIR . '/stubs/zip.phan_php', |
|
213 | + 'brotli' => PHAN_DIR.'/stubs/brotli.phan_php', |
|
214 | + 'curl' => PHAN_DIR.'/stubs/curl.phan_php', |
|
215 | + 'calendar' => PHAN_DIR.'/stubs/calendar.phan_php', |
|
216 | + 'fileinfo' => PHAN_DIR.'/stubs/fileinfo.phan_php', |
|
217 | + 'ftp' => PHAN_DIR.'/stubs/ftp.phan_php', |
|
218 | + 'gd' => PHAN_DIR.'/stubs/gd.phan_php', |
|
219 | + 'geoip' => PHAN_DIR.'/stubs/geoip.phan_php', |
|
220 | + 'imap' => PHAN_DIR.'/stubs/imap.phan_php', |
|
221 | + 'intl' => PHAN_DIR.'/stubs/intl.phan_php', |
|
222 | + 'ldap' => PHAN_DIR.'/stubs/ldap.phan_php', |
|
223 | + 'mcrypt' => PHAN_DIR.'/stubs/mcrypt.phan_php', |
|
224 | + 'memcache' => PHAN_DIR.'/stubs/memcache.phan_php', |
|
225 | + 'mysqli' => PHAN_DIR.'/stubs/mysqli.phan_php', |
|
226 | + 'pdo_cubrid' => PHAN_DIR.'/stubs/pdo_cubrid.phan_php', |
|
227 | + 'pdo_mysql' => PHAN_DIR.'/stubs/pdo_mysql.phan_php', |
|
228 | + 'pdo_pgsql' => PHAN_DIR.'/stubs/pdo_pgsql.phan_php', |
|
229 | + 'pdo_sqlite' => PHAN_DIR.'/stubs/pdo_sqlite.phan_php', |
|
230 | + 'pgsql' => PHAN_DIR.'/stubs/pgsql.phan_php', |
|
231 | + 'session' => PHAN_DIR.'/stubs/session.phan_php', |
|
232 | + 'simplexml' => PHAN_DIR.'/stubs/SimpleXML.phan_php', |
|
233 | + 'soap' => PHAN_DIR.'/stubs/soap.phan_php', |
|
234 | + 'sockets' => PHAN_DIR.'/stubs/sockets.phan_php', |
|
235 | + 'zip' => PHAN_DIR.'/stubs/zip.phan_php', |
|
236 | 236 | ], |
237 | 237 | |
238 | 238 | ]; |