<?php
class
CSSUpdate{
private
$csstmpl_path
= null;
private
$css_path
= null;
private
$replacetags
=
array
();
private
$search_child
= false;
private
$convert_num
= 0;
private
$is_ready
= 0;
public
function
__construct(
$csstmpl_path
,
$css_path
,
$replacetags
=
array
(),
$search_child
=false){
if
(!
is_dir
(
$csstmpl_path
) || !
is_dir
(
$css_path
) || !
$replacetags
){
$this
->is_ready = 0;
}
else
{
$this
->csstmpl_path =
$csstmpl_path
;
$this
->css_path =
$css_path
;
$this
->replacetags =
$replacetags
;
$this
->search_child =
$search_child
;
$this
->is_ready = 1;
}
}
public
function
update(){
if
(
$this
->is_ready==0){
$this
->response(
'csstmpl or csspath or replacetags error'
);
return
''
;
}
$this
->traversing(
$this
->csstmpl_path);
$this
->response(
'covert num:'
.
$this
->convert_num);
}
private
function
traversing(
$path
){
$handle
= opendir(
$path
);
while
((
$file
=readdir(
$handle
))!==false){
if
(
$file
!=
'..'
&&
$file
!=
'.'
){
$curfile
=
$path
.
'/'
.
$file
;
if
(
is_dir
(
$curfile
)){
if
(
$this
->search_child){
$this
->traversing(
$curfile
);
}
}
elseif
(
$this
->checkExt(
$curfile
)){
$dfile
=
str_replace
(
$this
->csstmpl_path,
$this
->css_path,
$curfile
);
$this
->create(
$curfile
,
$dfile
);
$this
->response(
$curfile
.
' convert to '
.
$dfile
.
' success'
);
$this
->convert_num ++;
}
}
}
closedir
(
$handle
);
}
private
function
checkExt(
$file
){
$name
=
basename
(
$file
);
$namefrag
=
explode
(
'.'
,
$name
);
if
(
count
(
$namefrag
)>=2){
if
(
strtolower
(
$namefrag
[
count
(
$namefrag
)-1])==
'css'
){
return
true;
}
}
return
false;
}
private
function
create(
$tmplfile
,
$dfile
){
$css_content
=
file_get_contents
(
$tmplfile
);
foreach
(
$this
->replacetags
as
$tag
){
$css_content
=
str_replace
(
$tag
,
$tag
.
"?"
.
date
(
'YmdHis'
),
$css_content
);
}
if
(!
is_dir
(dirname(
$dfile
))){
mkdir
(dirname(
$dfile
), 0755, true);
}
file_put_contents
(
$dfile
,
$css_content
, true);
}
private
function
response(
$content
){
echo
$content
.
"<br>"
;
}
}
?>