write() public méthode

Exclusive file write
public write ( $file, $data, $append = FALSE ) : integer | FALSE
$file string
$data mixed
$append bool
Résultat integer | FALSE
Exemple #1
0
 /**
  * minify each file in a collection
  * @param $collection
  * @return mixed
  */
 public function minify($collection)
 {
     $web = \Web::instance();
     // check final path
     $public_path = $this->f3->get('ASSETS.minify.public_path');
     if (!is_dir($public_path)) {
         mkdir($public_path, 0777, true);
     }
     $type = false;
     $inline_stack = array();
     foreach ($collection as $i => &$asset) {
         $type = $asset['type'];
         if ($asset['origin'] == 'inline') {
             $slot = $asset['slot'] ?: 'default';
             $inline_stack[$slot][] = $asset['data'];
             unset($collection[$i]);
             unset($asset);
             continue;
         }
         $path = $asset['path'];
         $exclude = $this->f3->get('ASSETS.minify.exclude');
         // skip external files
         if ($asset['origin'] == 'external') {
             continue;
         } elseif (is_file($path) && ((!isset($asset['exclude']) || !in_array('minify', $this->f3->split($asset['exclude']))) && (empty($exclude) || !preg_match('/' . $exclude . '/i', $path)))) {
             // proceed
             $path_parts = pathinfo($path);
             $filename = $path_parts['filename'] . '.min.' . $type;
             if (!is_file($public_path . $filename) || filemtime($path) > filemtime($public_path . $filename)) {
                 $min = $web->minify($path_parts['basename'], null, false, $path_parts['dirname'] . '/');
                 if ($type == 'css') {
                     $min = $this->fixRelativePaths($min, $path_parts['dirname'] . '/');
                 }
                 $this->f3->write($public_path . $filename, $min);
             }
             $asset['path'] = $public_path . $filename;
         }
         unset($asset);
     }
     if (!empty($inline_stack)) {
         foreach ($inline_stack as $slotGroup => $inlineData) {
             $data = implode($inlineData);
             if ($this->f3->get('ASSETS.minify.inline')) {
                 // this is probably pretty slow
                 $hash = $this->f3->hash($data);
                 $filename = $hash . '.min.' . $type;
                 if (!is_file($public_path . $filename)) {
                     $this->f3->write($public_path . $filename, $data);
                     $min = $web->minify($filename, null, false, $public_path);
                     $this->f3->write($public_path . $filename, $min);
                 }
                 $collection[] = array('path' => $public_path . $filename, 'type' => $type, 'origin' => 'internal', 'slot' => $slotGroup);
             } else {
                 $collection[] = array('data' => $data, 'type' => $type, 'origin' => 'inline', 'slot' => $slotGroup);
             }
         }
     }
     return $collection;
 }