Пример #1
0
 public static function build($files, $attrs, $is_generate_file = true, $index = array())
 {
     if (is_string($files)) {
         $files = array($files);
     }
     $categorized = array();
     self::$cdn_merged = JBETOLO_CDN_MAP && (bool) plgSystemJBetolo::param('cdn_merged');
     $deleteSrcs = plgSystemJBetolo::param('delete');
     self::$deleteSrcs = $deleteSrcs ? explode(',', $deleteSrcs) : array();
     foreach ($files as $f => $file) {
         self::$root = null;
         self::$contents = self::$files = array();
         self::load($file);
         $attr = '';
         if (!empty($index)) {
             foreach ($index as $ind) {
                 if ($ind['src'] == $file) {
                     $attr = $ind['attr'];
                     break;
                 }
             }
         }
         if (empty($attr) && !empty($attrs)) {
             $attr = $attrs[$f];
         }
         if (is_array($attr)) {
             $attr = implode(',', $attr);
         }
         if (!isset($categorized[$attr])) {
             $categorized[$attr] = array('files' => array(), 'contents' => array(), 'srcs' => array());
         }
         if (is_array(self::$files)) {
             $categorized[$attr]['files'] = array_merge($categorized[$attr]['files'], self::$files);
             $categorized[$attr]['contents'] = array_merge($categorized[$attr]['contents'], self::$contents);
         } else {
             $categorized[$attr]['files'][] = self::$files;
             $categorized[$attr]['contents'][] = self::$contents;
         }
         $categorized[$attr]['srcs'] = array_merge($categorized[$attr]['srcs'], array($file));
     }
     $res = array();
     if ($is_generate_file) {
         foreach ($categorized as $attr => $recs) {
             $res[$attr] = jbetoloFileHelper::createFileName($recs['files'], 'css');
             $res[$attr]['srcs'] = $recs['srcs'];
             jbetoloFileHelper::writeToFile($res[$attr]['merged'], $recs['contents'], 'css');
         }
     } else {
         $res = jbetoloHelper::getArrayValues($categorized['main']['contents'], 'content');
         $res = implode(chr(13), $res);
     }
     self::$contents = self::$files = null;
     return $res;
 }