| Conditions | 31 |
| Paths | > 20000 |
| Total Lines | 196 |
| Code Lines | 108 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
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:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 69 | public function __toString() |
||
| 70 | { |
||
| 71 | $output = []; |
||
| 72 | |||
| 73 | // Render fonts |
||
| 74 | if ($this->font->count()) { |
||
| 75 | |||
| 76 | $bundleFontCollection = $this->font->getArrayCopy(); |
||
| 77 | $bundleFontVersion = $this->getVersion(serialize($bundleFontCollection)); |
||
| 78 | $bundleFontFilePath = PATH_PUBLIC . 'assets' . DIRECTORY_SEPARATOR . 'fonts.css'; |
||
| 79 | $bundleFontMinifyFilePath = PATH_PUBLIC . 'assets' . DIRECTORY_SEPARATOR . 'fonts.min.css'; |
||
| 80 | |||
| 81 | if (is_file($bundleFontFilePath . '.map')) { |
||
| 82 | $bundleFontMap = json_decode(file_get_contents($bundleFontFilePath . '.map'), true); |
||
| 83 | // if the file version is changed delete it first |
||
| 84 | if ( ! hash_equals($bundleFontVersion, $bundleFontMap[ 'version' ])) { |
||
| 85 | unlink($bundleFontFilePath); |
||
| 86 | unlink($bundleFontFilePath . '.map'); |
||
| 87 | } |
||
| 88 | } |
||
| 89 | |||
| 90 | if ( ! is_file($bundleFontFilePath)) { |
||
| 91 | $bundleFontMap = [ |
||
| 92 | 'version' => $bundleFontVersion, |
||
| 93 | ]; |
||
| 94 | |||
| 95 | // Create css font file |
||
| 96 | if ($bundleFileStream = @fopen($bundleFontFilePath, 'ab')) { |
||
| 97 | flock($bundleFileStream, LOCK_EX); |
||
| 98 | |||
| 99 | foreach ($this->font as $font) { |
||
| 100 | $bundleFontMap[ 'sources' ][] = $font; |
||
| 101 | fwrite($bundleFileStream, file_get_contents($font)); |
||
| 102 | } |
||
| 103 | |||
| 104 | flock($bundleFileStream, LOCK_UN); |
||
| 105 | fclose($bundleFileStream); |
||
| 106 | } |
||
| 107 | |||
| 108 | // Create css font map |
||
| 109 | if ($bundleFileStream = @fopen($bundleFontFilePath . '.map', 'ab')) { |
||
| 110 | flock($bundleFileStream, LOCK_EX); |
||
| 111 | |||
| 112 | fwrite($bundleFileStream, json_encode($bundleFontMap)); |
||
| 113 | |||
| 114 | flock($bundleFileStream, LOCK_UN); |
||
| 115 | fclose($bundleFileStream); |
||
| 116 | } |
||
| 117 | |||
| 118 | // Create css font file minify version |
||
| 119 | $minifyFontHandler = new CSS($bundleFontFilePath); |
||
| 120 | $minifyFontHandler->minify($bundleFontMinifyFilePath); |
||
| 121 | } |
||
| 122 | |||
| 123 | if (input()->env('DEBUG_STAGE') === 'PRODUCTION') { |
||
| 124 | $output[] = '<link rel="stylesheet" type="text/css" media="all" href="' . $this->getUrl($bundleFontMinifyFilePath) . '?v=' . $bundleFontVersion . '">'; |
||
| 125 | } else { |
||
| 126 | $output[] = '<link rel="stylesheet" type="text/css" media="all" href="' . $this->getUrl($bundleFontFilePath) . '?v=' . $bundleFontVersion . '">'; |
||
| 127 | } |
||
| 128 | } |
||
| 129 | |||
| 130 | $unbundledFilename = ['app', 'app.min', 'theme', 'theme.min']; |
||
| 131 | |||
| 132 | // Render css |
||
| 133 | if ($this->css->count()) { |
||
| 134 | foreach($this->css as $css) { |
||
| 135 | if(in_array(pathinfo($css, PATHINFO_FILENAME), $unbundledFilename)) { |
||
| 136 | $cssVersion = $this->getVersion($css); |
||
| 137 | $output[] = '<link rel="stylesheet" type="text/css" media="all" href="' . $this->getUrl($css) . '?v=' . $cssVersion . '">'; |
||
| 138 | } |
||
| 139 | } |
||
| 140 | |||
| 141 | $bundleCssCollection = $this->css->getArrayCopy(); |
||
| 142 | $bundleCssVersion = $this->getVersion(serialize($bundleCssCollection)); |
||
| 143 | $bundleCssFilename = 'head-' . controller()->getClassInfo()->getParameter(); |
||
| 144 | $bundleCssFilePath = PATH_PUBLIC . 'assets' . DIRECTORY_SEPARATOR . 'css' . DIRECTORY_SEPARATOR . $bundleCssFilename . '.css'; |
||
| 145 | $bundleCssMinifyFilePath = PATH_PUBLIC . 'assets' . DIRECTORY_SEPARATOR . 'css' . DIRECTORY_SEPARATOR . $bundleCssFilename . '.min.css'; |
||
| 146 | |||
| 147 | if (is_file($bundleCssFilePath . '.map')) { |
||
| 148 | $bundleCssMap = json_decode(file_get_contents($bundleCssFilePath . '.map'), true); |
||
| 149 | // if the file version is changed delete it first |
||
| 150 | if ( ! hash_equals($bundleCssVersion, $bundleCssMap[ 'version' ])) { |
||
| 151 | unlink($bundleCssFilePath); |
||
| 152 | unlink($bundleCssFilePath . '.map'); |
||
| 153 | } |
||
| 154 | } |
||
| 155 | |||
| 156 | if ( ! is_file($bundleCssFilePath)) { |
||
| 157 | $bundleCssMap = [ |
||
| 158 | 'version' => $bundleCssVersion, |
||
| 159 | ]; |
||
| 160 | |||
| 161 | // Create css file |
||
| 162 | if ($bundleFileStream = @fopen($bundleCssFilePath, 'ab')) { |
||
| 163 | flock($bundleFileStream, LOCK_EX); |
||
| 164 | |||
| 165 | foreach ($this->css as $css) { |
||
| 166 | if( ! in_array(pathinfo($css, PATHINFO_FILENAME), $unbundledFilename)) { |
||
| 167 | $bundleCssMap[ 'sources' ][] = $css; |
||
| 168 | fwrite($bundleFileStream, file_get_contents($css)); |
||
| 169 | } |
||
| 170 | } |
||
| 171 | |||
| 172 | flock($bundleFileStream, LOCK_UN); |
||
| 173 | fclose($bundleFileStream); |
||
| 174 | } |
||
| 175 | |||
| 176 | // Create css map |
||
| 177 | if ($bundleFileStream = @fopen($bundleCssFilePath . '.map', 'ab')) { |
||
| 178 | flock($bundleFileStream, LOCK_EX); |
||
| 179 | |||
| 180 | fwrite($bundleFileStream, json_encode($bundleCssMap)); |
||
| 181 | |||
| 182 | flock($bundleFileStream, LOCK_UN); |
||
| 183 | fclose($bundleFileStream); |
||
| 184 | } |
||
| 185 | |||
| 186 | // Create css file minify version |
||
| 187 | $minifyCssHandler = new CSS($bundleCssFilePath); |
||
| 188 | $minifyCssHandler->minify($bundleCssMinifyFilePath); |
||
| 189 | } |
||
| 190 | |||
| 191 | if (input()->env('DEBUG_STAGE') === 'PRODUCTION') { |
||
| 192 | $output[] = '<link rel="stylesheet" type="text/css" media="all" href="' . $this->getUrl($bundleCssMinifyFilePath) . '?v=' . $bundleCssVersion . '">'; |
||
| 193 | } else { |
||
| 194 | $output[] = '<link rel="stylesheet" type="text/css" media="all" href="' . $this->getUrl($bundleCssFilePath) . '?v=' . $bundleCssVersion . '">'; |
||
| 195 | } |
||
| 196 | } |
||
| 197 | |||
| 198 | // Render js |
||
| 199 | if ($this->javascript->count()) { |
||
| 200 | foreach($this->javascript as $js) { |
||
| 201 | if(in_array(pathinfo($css, PATHINFO_FILENAME), $unbundledFilename)) { |
||
|
|
|||
| 202 | $jsVersion = $this->getVersion($js); |
||
| 203 | $output[] = '<script type="text/javascript" src="' . $this->getUrl($js) . '?v=' . $jsVersion . '"></script>'; |
||
| 204 | } |
||
| 205 | } |
||
| 206 | |||
| 207 | $bundleJsCollection = $this->css->getArrayCopy(); |
||
| 208 | $bundleJsVersion = $this->getVersion(serialize($bundleJsCollection)); |
||
| 209 | $bundleJsFilename = 'head-' . controller()->getClassInfo()->getParameter(); |
||
| 210 | $bundleJsFilePath = PATH_PUBLIC . 'assets' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . $bundleJsFilename . '.js'; |
||
| 211 | $bundleJsMinifyFilePath = PATH_PUBLIC . 'assets' . DIRECTORY_SEPARATOR . 'js' . DIRECTORY_SEPARATOR . $bundleJsFilename . '.min.js'; |
||
| 212 | |||
| 213 | if (is_file($bundleJsFilePath . '.map')) { |
||
| 214 | $bundleJsMap = json_decode(file_get_contents($bundleJsFilePath . '.map'), true); |
||
| 215 | // if the file version is changed delete it first |
||
| 216 | if ( ! hash_equals($bundleJsVersion, $bundleJsMap[ 'version' ])) { |
||
| 217 | unlink($bundleJsFilePath); |
||
| 218 | unlink($bundleJsFilePath . '.map'); |
||
| 219 | } |
||
| 220 | } |
||
| 221 | |||
| 222 | if ( ! is_file($bundleJsFilePath)) { |
||
| 223 | $bundleJsMap = [ |
||
| 224 | 'version' => $bundleJsVersion, |
||
| 225 | ]; |
||
| 226 | |||
| 227 | // Create js file |
||
| 228 | if ($bundleFileStream = @fopen($bundleJsFilePath, 'ab')) { |
||
| 229 | flock($bundleFileStream, LOCK_EX); |
||
| 230 | |||
| 231 | foreach ($this->css as $css) { |
||
| 232 | if( ! in_array(pathinfo($css, PATHINFO_FILENAME), $unbundledFilename)) { |
||
| 233 | $bundleJsMap[ 'sources' ][] = $css; |
||
| 234 | fwrite($bundleFileStream, file_get_contents($css)); |
||
| 235 | } |
||
| 236 | } |
||
| 237 | |||
| 238 | flock($bundleFileStream, LOCK_UN); |
||
| 239 | fclose($bundleFileStream); |
||
| 240 | } |
||
| 241 | |||
| 242 | // Create js map |
||
| 243 | if ($bundleFileStream = @fopen($bundleJsFilePath . '.map', 'ab')) { |
||
| 244 | flock($bundleFileStream, LOCK_EX); |
||
| 245 | |||
| 246 | fwrite($bundleFileStream, json_encode($bundleJsMap)); |
||
| 247 | |||
| 248 | flock($bundleFileStream, LOCK_UN); |
||
| 249 | fclose($bundleFileStream); |
||
| 250 | } |
||
| 251 | |||
| 252 | // Create js file minify version |
||
| 253 | $minifyJsHandler = new JS($bundleJsFilePath); |
||
| 254 | $minifyJsHandler->minify($bundleJsMinifyFilePath); |
||
| 255 | } |
||
| 256 | |||
| 257 | if (input()->env('DEBUG_STAGE') === 'PRODUCTION') { |
||
| 258 | $output[] = '<script type="text/javascript" src="' . $this->getUrl($bundleJsMinifyFilePath) . '?v=' . $bundleJsVersion . '"></script>'; |
||
| 259 | } else { |
||
| 260 | $output[] = '<script type="text/javascript" src="' . $this->getUrl($bundleJsFilePath) . '?v=' . $bundleJsVersion . '"></script>'; |
||
| 261 | } |
||
| 262 | } |
||
| 263 | |||
| 264 | return implode(PHP_EOL, $output); |
||
| 265 | } |
||
| 266 | } |