<?php
namespace imcat;

/*
*/
// Media类
class vopMedia{

    
// {media:[type=map][val=3.44%2C44.24][w=33][h=44][ext=地点1]/media}
    
static function repShow($cstr){
        
preg_match_all("/\{media\:([^\n]{12,1200}\])\/media\}/i"$cstr$m);
        
$cfgs self::cfgTypes();
        if(!empty(
$m[0])){
            foreach(
$m[0] as $k=>$itm){ 
                
$porg $m[1][$k]; 
                
$mtype self::onePara($porg,'type'); 
                if(!isset(
$cfgs[$mtype])) continue;
                
$sres self::_repItem($porg,$mtype);
                
$cstr str_replace($itm,$sres,$cstr); 
            }
        }
        
$cstr comStore::revSaveDir($cstr);
        return 
$cstr;
    }    

    static function 
_repItem($porg,$mtype){
        global 
$_cbase
        
$mapi $_cbase['sys_map'];
        
$pw self::onePara($porg,'w'); $pw $pw>80 $pw '480'//100%;
        
$ph self::onePara($porg,'h'); $ph $ph>60 $ph '360';
        
$val self::_itmUri($porg);
        if(
in_array($mtype,array('iframe','map'))){
            if(
$mtype=='map'){
                
$title self::onePara($porg,'ext'); $point $val
                
$val PATH_BASE."?info-map-$mapi&point=$point&title=$title";
            }
            
$sres "<iframe src='$val' width='$pw' height='$ph'></iframe>";
        }else{ 
//if(in_array($mtype,array('swf','audio','ckvdo'))){ //'flv',
            
if($mtype=='audio'$ph intval(self::onePara($porg,'h')); $ph $ph>10 $ph '30'//重新取一次
            
$tpl self::_itmTpl($mtype);
            
$sres self::_itmRep($tpl,$val,$pw,$ph); 
            
$exMethed '_ex'.ucfirst($mtype);
            if(
method_exists(__CLASS__,$exMethed)){
                
$sres self::$exMethed($sres,$val,$mtype,$porg);
            }
        }
        
$playid $mtype.'_'.substr(basKeyid::kidAuto(),2,12);
        
$sres str_replace(array('{$id}'), $playid$sres); 
        return 
$sres;
    }

    
/*static function _exSevise($sres,$val,$mtype,$porg){

    }*/

    
static function _exCkvdo($sres,$val,$mtype,$porg){
        global 
$_cbase;
        
$ckjs '/ckplayer/ckplayer/ckplayer.js';
        if(
$mtype=='ckvdo' && !strstr($_cbase['run']['jsimp'],$ckjs)){
            
$_cbase['run']['jsimp'] .= "$ckjs,"
            
$sres basJscss::jscode('',PATH_VENDUI.$ckjs).$sres
        }
        return 
$sres;
    }
        
    static function 
_itmTpl($file){
        return 
comFiles::get(DIR_ROOT."/cfgs/player/$file.htm"); 
    }
    
    static function 
_itmRep($org,$val,$pw,$ph){
        
$re str_replace(array('{$url}','{$w}','{$h}'),array($val,$pw,$ph),$org);
        
$re str_replace(array('{uiroot}','{$uiroot}'),PATH_VENDUI,$re);
        
$re str_replace(array('{skroot}','{$skroot}'),PATH_VIEWS,$re);
        
$re str_replace(array('{fbname}','{$fbname}'),basename($val),$re);
        return 
$re
    }
    
    static function 
_itmUri($org){
        
$val self::onePara($org,'val'); 
        
$val urldecode($val); 
        return 
$val;
    }    
    
    static function 
onePara($str,$key){
        
preg_match("/\[$key\=([^\]]{1,255})\]/i"$str$m);
        return empty(
$m[1]) ? '' $m[1];
    }
    
    static function 
cfgTypes(){
        return 
basLang::ucfg('cfglibs.dopmedia'); //;
    
}    
}