Passed
Push — master ( 6ebac0...a0be99 )
by Michael
19:32
created

get_config()   A

Complexity

Conditions 4
Paths 8

Size

Total Lines 170
Code Lines 41

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 41
c 1
b 0
f 0
nc 8
nop 1
dl 0
loc 170
rs 9.264

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * PersistentStorage Server backend configuration file.
4
 * @author  Douglas Mayle <[email protected]>
5
 * @version 1.0
6
 * @package PersistentStorage
7
 */
8
9
/**
10
 * If this file is being requested over the web, we display a JSON version of
11
 * the publicly viewable config info.
12
 */
13
if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
14
    echo json_encode(get_config());
15
}
16
17
/**
18
 * Gets the configuration information used by this package.
19
 * {@source }
20
 * @param bool $getprivates Return private configuration info merged with the public.
21
 * @returns array The configuration information for this package.
22
 */
23
function get_config($getprivates = false)
24
{
25
    // We set up two different settings array, so that we can have settings
26
    // that won't be shown to the public.
27
    $Private = [];
28
    $Public  = [];
29
30
    /**
31
     * For demo purposes, we can lie to the frontend and pretend to have user
32
     * storage.  Since we don't have a password mechanism, this simulation will
33
     * accept any password.
34
     */
35
    $Private['simulate_user_auth'] = false;
36
37
    /**
38
     * The capabilities array contains directives about what major options to
39
     * allow or disallow.
40
     */
41
    $Public['capabilities'] = [
42
        // Allow directory operations (e.g. rename, create, delete directories)
43
        'directory_operations' => true,
44
        // Allow file operations (e.g. copy, rename, delete files)
45
        'file_operations'      => true,
46
        // Allow image operations (e.g. scale, rotate, convert images)
47
        'image_operations'     => true,
48
        // Allow file uploads
49
        'upload_operations'    => true,
50
        // Stored files have a published URL
51
        'shared_publish'       => true,
52
        // By default, if the user is authenticated, we enable user storage.
53
        // Set to false to disable.
54
        'user_storage'         => !empty($_SERVER['PHP_AUTH_USER']) || $Private['simulate_user_auth']
55
    ];
56
57
    /**
58
     * Directory exposed to user operations.  Be sure that the web server has
59
     * read and write access to this directory.
60
     */
61
    $Private['storage_dir'] = 'demo_images';
62
63
    /**
64
     * The URL that the storage directory is exposed as.  By default, we try
65
     * and guess based on the URL used to access this page.  Also, since we
66
     * allow user upload, this directory should not be executable by the
67
     * server.  A sample .htaccess file is included in demo_images.
68
     */
69
    $Private['storage_url'] = str_replace(
70
                                  ['backend.php', 'manager.php'],
71
                                  '',
72
                                  $_SERVER['PHP_SELF']
73
                              ) . $Private['storage_dir'];
74
75
    /*
76
      Possible values: true, false
77
78
      TRUE - If PHP on the web server is in safe mode, set this to true.
79
             SAFE MODE restrictions: directory creation will not be possible,
80
    		 only the GD library can be used, other libraries require
81
    		 Safe Mode to be off.
82
83
      FALSE - Set to false if PHP on the web server is not in safe mode.
84
    */
85
    $Private['safe_mode'] = ini_get('safe_mode');
86
87
    /**
88
     * If PHP Safe Mode is on than only the GD image library will function, so
89
     * we force the default
90
     */
91
    if ($Private['safe_mode']) {
92
        @define('IMAGE_CLASS', 'GD');
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition for define(). This can introduce security issues, and is generally not recommended. ( Ignorable by Annotation )

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

92
        /** @scrutinizer ignore-unhandled */ @define('IMAGE_CLASS', 'GD');

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
93
    } else {
94
        /* 
95
         Possible values: 'GD', 'IM', or 'NetPBM'
96
97
         The image manipulation library to use, either GD or ImageMagick or NetPBM.
98
        */
99
        @define('IMAGE_CLASS', 'GD');
100
101
        /*
102
         After defining which library to use, if it is NetPBM or IM, you need to
103
         specify where the binary for the selected library are. And of course
104
         your server and PHP must be able to execute them (i.e. safe mode is OFF).
105
         GD does not require the following definition.
106
        */
107
        @define('IMAGE_TRANSFORM_LIB_PATH', '/usr/bin/');
108
    }
109
110
    /*
111
      The prefix for thumbnail files, something like .thumb will do. The
112
      thumbnails files will be named as "prefix_imagefile.ext", that is,
113
      prefix + orginal filename.
114
    */
115
    $Private['thumbnail_prefix'] = 't_';
116
117
    /**
118
     * The thumbnail array groups all of the configuration related to thumbnail
119
     * operations.
120
     */
121
    $Private['thumbnails'] = [
122
        // The prefix to apply to all created thumbnails.
123
        'prefix'    => 't_',
124
        // A subdirectory to keep thumbnails in.  If this is empty, thumbnails
125
        // will be stored alongside the files.
126
        'directory' => '',
127
        // Whether or not to filter thumbnails from the directory listing.
128
        'filter'    => true,
129
        // Filetypes which we restrict thumbnail operations to.
130
        'filetypes' => ['jpg', 'gif', 'png', 'bmp'],
131
        // What pixel sizes to save the thumbnails as.
132
        'width'     => 84,
133
        'height'    => 84
134
    ];
135
136
    /**
137
     * Resized prefix
138
     *
139
     * The prefix for resized files, something like .resized will do.  The
140
     * resized files will be named <prefix>_<width>x<height>_<original>
141
     * resized files are created when one changes the dimensions of an image
142
     * in the image manager selection dialog - the image is scaled when the
143
     * user clicks the ok button.
144
     */
145
146
    $Private['resized_prefix'] = '.resized';
147
148
    // -------------------------------------------------------------------------
149
150
    /**
151
     * Resized Directory
152
     *
153
     * Resized images may also be stored in a directory, except in safe mode.
154
     */
155
156
    $Private['resized_dir'] = '';
157
158
    /* Maximum upload file size
159
160
      Possible values: number, "max"
161
162
      number - maximum size in Kilobytes.
163
164
      "max"  - the maximum allowed by the server (the value is retrieved from the server configuration).
165
    */
166
    $Private['max_filesize_kb_image'] = 200;
167
168
    $Private['max_filesize_kb_link'] = 5000;
169
170
    /* Maximum upload folder size in Megabytes. Use 0 to disable limit */
171
    $Private['max_foldersize_mb'] = 0;
172
173
    /*
174
    Allowed extensions that can be shown and allowed to upload.
175
    Available icons are for "doc,fla,gif,gz,html,jpg,js,mov,pdf,php,png,ppt,rar,txt,xls,zip"
176
    -Changed by AFRU.
177
    */
178
179
    $Private['allowed_image_extensions'] = ['jpg', 'gif', 'png', 'bmp'];
180
    $Private['allowed_link_extensions']  = ['jpg', 'gif', 'js', 'php', 'pdf', 'zip', 'txt', 'psd', 'png', 'html', 'swf', 'xml', 'xls', 'doc'];
181
182
    /*
183
      Image Editor temporary filename prefix.
184
    */
185
    $Private['tmp_prefix'] = '.editor_';
186
187
    // Config variables are finished, this returns our data to the caller.
188
    if ($getprivates) {
189
        return $Public + $Private;
190
    }
191
192
    return $Public;
193
}
194
195
196