WordPress.org

Plugin Directory

Changeset 527443


Ignore:
Timestamp:
04/04/12 20:00:32 (5 years ago)
Author:
turl
Message:

Implement media support for inline CSS.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • autoptimize/trunk/classes/autoptimizeStyles.php

    r164671 r527443  
    3737            foreach($matches[0] as $tag) 
    3838            { 
     39                //Get the media 
     40                if(strpos($tag,'media=')!==false) 
     41                { 
     42                    preg_match('#media=(?:"|\')([^>]*)(?:"|\')#Ui',$tag,$medias); 
     43                    $medias = explode(',',$medias[1]); 
     44                    $media = array(); 
     45                    foreach($medias as $elem) 
     46                    { 
     47                        $media[] = current(explode(' ',trim($elem),2)); 
     48                    } 
     49                }else{ 
     50                    //No media specified - applies to all 
     51                    $media = array('all'); 
     52                } 
     53             
    3954                if(preg_match('#<link.*href=("|\')(.*)("|\')#Usmi',$tag,$source)) 
    4055                { 
     
    4257                    $url = current(explode('?',$source[2],2)); 
    4358                    $path = $this->getpath($url); 
    44                     $media = array('all'); 
    4559                     
    4660                    if($path !==false && preg_match('#\.css$#',$path)) 
    4761                    { 
    4862                        //Good link 
    49                         //Get the media 
    50                         if(strpos($tag,'media=')!==false) 
    51                         { 
    52                             $medias = preg_replace('#^.*media=(?:"|\')(.*)(?:"|\').*$#U','$1',$tag); 
    53                             $medias = explode(',',$medias); 
    54                             $media = array(); 
    55                             foreach($medias as $elem) 
    56                             { 
    57                                 $media[] = current(explode(' ',trim($elem),2)); 
    58                             } 
    59                         }else{ 
    60                             //No media specified - applies to all 
    61                             $media = array('all'); 
    62                         } 
    63  
    6463                        $this->css[] = array($media,$path); 
    6564                    }else{ 
     
    7170                    preg_match('#<style.*>(.*)</style>#Usmi',$tag,$code); 
    7271                    $code = preg_replace('#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm','$1',$code[1]); 
    73                     $this->css[] = array('all','INLINE;'.$code); 
     72                    $this->css[] = array($media,'INLINE;'.$code); 
    7473                } 
    7574                 
     
    9695                $css = preg_replace('#^INLINE;#','',$css); 
    9796                $css = $this->fixurls(ABSPATH.'/index.php',$css); 
    98                 if(!isset($this->csscode['all'])) 
    99                     $this->csscode['all'] = ''; 
    100                 $this->csscode['all'] .= "\n/*FILESTART*/".$css; 
    10197            }else{ 
    10298                //<link> 
     
    104100                { 
    105101                    $css = $this->fixurls($css,file_get_contents($css)); 
    106                     foreach($media as $elem) 
    107                     { 
    108                         if(!isset($this->csscode[$elem])) 
    109                             $this->csscode[$elem] = ''; 
    110                         $this->csscode[$elem] .= "\n/*FILESTART*/".$css; 
    111                     } 
    112                 }/*else{ 
     102                }else{ 
    113103                    //Couldn't read CSS. Maybe getpath isn't working? 
    114                 }*/ 
     104                    $css = ''; 
     105                } 
     106            } 
     107             
     108            foreach($media as $elem) 
     109            { 
     110                if(!isset($this->csscode[$elem])) 
     111                    $this->csscode[$elem] = ''; 
     112                $this->csscode[$elem] .= "\n/*FILESTART*/".$css; 
    115113            } 
    116114        } 
Note: See TracChangeset for help on using the changeset viewer.