Issues (20)

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Header Injection
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

app/Support/helpers.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
use App\Support\Http\ApiResponse;
4
use Illuminate\Support\Str;
5
use Ramsey\Uuid\Uuid;
6
7
if (! function_exists('mb_trim')) {
8
    /**
9
     * Strip whitespace (or other characters) from the beginning and end of a string.
10
     *
11
     * @see https://github.com/vanderlee/PHP-multibyte-functions/blob/master/functions/mb_trim.php
12
     *
13
     * @param  string  $string
14
     * @return string
15
     */
16
    function mb_trim($string)
17
    {
18
        return mb_ereg_replace('^\s*([\s\S]*?)\s*$', '\1', $string);
19
    }
20
}
21
22
if (! function_exists('urlsafe_base64_encode')) {
23
    /**
24
     * Encodes the given data with base64, and returns an URL-safe string.
25
     *
26
     * @param  string  $data
27
     * @return string
28
     */
29
    function urlsafe_base64_encode($data)
30
    {
31
        return strtr(base64_encode($data), ['+' => '-', '/' => '_', '=' => '']);
32
    }
33
}
34
35
if (! function_exists('urlsafe_base64_decode')) {
36
    /**
37
     * Decodes a base64 encoded data.
38
     *
39
     * @param  string  $data
40
     * @param  bool  $strict
41
     * @return string
42
     */
43
    function urlsafe_base64_decode($data, $strict = false)
44
    {
45
        return base64_decode(strtr($data.str_repeat('=', (4 - strlen($data) % 4)), '-_', '+/'), $strict);
46
    }
47
}
48
49
if (! function_exists('string_value')) {
50
    /**
51
     * Converts any type to a string.
52
     *
53
     * @param  mixed  $value
54
     * @return string
55
     */
56
    function string_value($value, $jsonOptions = JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
57
    {
58
        if (is_object($value)) {
59
            if (method_exists($value, '__toString')) {
60
                return (string) $value;
61
            }
62
63
            if (method_exists($value, 'toArray')) {
64
                $value = $value->toArray();
65
            }
66
        }
67
68
        return is_string($value) ? $value : json_encode($value, $jsonOptions);
69
    }
70
}
71
72
if (! function_exists('active_if')) {
73
    /**
74
     * Returns string 'active' if the current request URI matches the given patterns.
75
     *
76
     * @return string
77
     */
78
    function active_if()
79
    {
80
        return call_user_func_array([app('request'), 'is'], func_get_args()) ? 'active' : '';
81
    }
82
}
83
84
if (! function_exists('get_id')) {
85
    /**
86
     * Get id from a mixed variable.
87
     *
88
     * @param  mixed  $var
89
     * @param  string  $key
90
     * @return mixed
91
     */
92
    function get_id($var, $key = 'id')
93
    {
94 View Code Duplication
        if (is_object($var)) {
0 ignored issues
show
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
95
            return $var->{$key};
96
        } elseif (is_array($var)) {
97
            return $var[$key];
98
        }
99
100
        return $var;
101
    }
102
}
103
104
if (! function_exists('str_limit2')) {
105
    /**
106
     * Limit the number of characters in a string.
107
     *
108
     * @param  string  $value
109
     * @param  int     $limit
110
     * @param  string  $end
111
     * @return string
112
     */
113
    function str_limit2($value, $limit = 100, $end = '')
114
    {
115
        return Str::limit($value, $limit, $end);
116
    }
117
}
118
119
if (! function_exists('is_domain')) {
120
    /**
121
     * Determines the current domain equals to the given domain identifier.
122
     *
123
     * @param  string  $identifier
124
     * @return bool
125
     */
126
    function is_domain($identifier)
127
    {
128 1
        return app('request')->getHost() === config('app.domains.'.$identifier);
129
    }
130
}
131
132
if (! function_exists('app_url')) {
133
    /**
134
     * Generate an URL for the application.
135
     *
136
     * @param  string  $path
137
     * @param  mixed  $parameters
138
     * @param  string  $identifier
139
     * @return string
140
     */
141
    function app_url($path = '', $parameters = null, $identifier = 'site')
142
    {
143
        $path = trim($path, '/');
144
        if (! empty($path) && ! starts_with($path, ['?', '&', '#'])) {
145
            $path = '/'.$path;
146
        }
147
148
        if (! is_null($parameters)) {
149
            $query = http_build_query($parameters);
150
            if (! empty($query)) {
151
                $path .= (str_contains($path, ['?', '&', '#']) ? '&' : '?').$query;
152
            }
153
        }
154
155
        if ($identifier && ($root = config('support.url.'.$identifier))) {
156
            return $root.$path;
157
        }
158
159
        return url($path);
160
    }
161
}
162
163
if (! function_exists('revision')) {
164
    /**
165
     * Get the revisioned asset path.
166
     *
167
     * @param  string  $path
168
     * @return string
169
     */
170
    function revision($path)
171
    {
172
        if ($rev = array_get(config('assets'), trim($path, '/'))) {
173
            return $path.'?'.$rev;
174
        }
175
176
        return $path;
177
    }
178
}
179
180
if (! function_exists('asset_from')) {
181
    /**
182
     * Generate the URL to an asset from a custom root domain such as CDN, etc.
183
     *
184
     * @param  string  $root
185
     * @param  string  $path
186
     * @param  bool|null  $secure
187
     * @return string
188
     */
189
    function asset_from($root, $path = '', $secure = null)
190
    {
191
        return app('url')->assetFrom($root, $path, $secure);
192
    }
193
}
194
195
if (! function_exists('asset_url')) {
196
    /**
197
     * Generate an asset URL.
198
     *
199
     * @param  string $path
200
     * @return string
201
     */
202
    function asset_url($path, $identifier = 'asset')
203
    {
204
        if (filter_var($path, FILTER_VALIDATE_URL) !== false) {
205
            return $path;
206
        }
207
208
        return config('support.url.'.$identifier).'/'.revision(trim($path, '/'));
209
    }
210
}
211
212
if (! function_exists('cdn_url')) {
213
    /**
214
     * Generate an asset CDN URL.
215
     *
216
     * @param  string  $path
217
     * @return string
218
     */
219
    function cdn_url($path)
220
    {
221
        return asset_url($path, 'cdn');
222
    }
223
}
224
225
if (! function_exists('api')) {
226
    /**
227
     * Create a new API response.
228
     *
229
     * @return \App\Support\Http\ApiResponse
230
     */
231
    function api(...$args)
232
    {
233
        return new ApiResponse(...$args);
234
    }
235
}
236
237
if (! function_exists('optimus_encode')) {
238
    /**
239
     * Encode a number with Optimus.
240
     *
241
     * @param  int  $number
242
     * @return int
243
     */
244
    function optimus_encode($number)
245
    {
246
        return app('optimus')->encode($number);
247
    }
248
}
249
250
if (! function_exists('optimus_decode')) {
251
    /**
252
     * Decode a number with Optimus.
253
     *
254
     * @param  int  $number
255
     * @return int
256
     */
257
    function optimus_decode($number)
258
    {
259
        return app('optimus')->decode($number);
260
    }
261
}
262
263
if (! function_exists('random_uuid')) {
264
    /**
265
     * Generate a version 4 (random) UUID.
266
     *
267
     * @param  bool  $hex
268
     * @return string
269
     */
270
    function random_uuid($hex = false)
271
    {
272
        $uuid = Uuid::uuid4();
273
274
        return $hex ? $uuid->getHex() : $uuid->toString();
275
    }
276
}
277