Changeset 19198 for lang/php

Show
Ignore:
Timestamp:
09/11/08 23:14:24 (2 months ago)
Author:
sasezaki
Message:

lang/php/Diggin_CDDB: ひどい!前後のレコード捨ててたなんて!私のこともそうやって捨てるのね!

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/php/Diggin_CDDB/library/Diggin/CDDB/Application/CDex.php

    r19091 r19198  
    115115            //cdex comment is /^#FILE/ 
    116116            if (preg_match("/^$end.*/i", $splFileObject->current())) { 
    117                 $end = $splFileObject->key(); 
     117                $endkey = $splFileObject->key(); 
    118118            } 
    119119            if (preg_match("/^$start.*/i", $splFileObject->current())) { 
    120                 return array('start' => ($line - $i), 'end' => $end); 
     120                if (isset($endkey)) { 
     121                    return array('start' => ($line - $i), 'end' => $endkey); 
     122                } 
    121123            } 
    122124        } 
    123125         
    124126        //if none 
    125          
     127        require_once 'Diggin/CDDB/Application/Exception.php'; 
     128        throw new Diggin_CDDB_Application_Exception("there is no seek points, $splFileObject,(start:$start, end:$end)"); 
    126129    }  
    127130         
     
    194197    public function getRewriteStr(SplFileInfo $file, $rewrite_points, $disc) 
    195198    { 
     199        $fileArray = file($file); 
     200     
    196201        //extract rewritepart string 
    197         $rewriteStr = implode('', array_slice(file($file), $rewrite_points['start'] +1 , $rewrite_points['end'])); 
     202        $rewriteStr = implode('', array_slice($fileArray, $rewrite_points['start'] +1 , $rewrite_points['end'])); 
    198203 
    199204        $decode = Diggin_CDDB_Disc_Decoder::decode($rewriteStr, Diggin_CDDB_Disc_Decoder::TYPE_ARRAY, 'SJIS'); 
     
    213218        $rewriteStr = Diggin_CDDB_Disc_Encoder::encode($decode); 
    214219         
     220         
    215221        //#filename line add 
    216222        $splFileObject = $file->openFile(); 
    217223        $splFileObject->seek($rewrite_points['start'] ); 
    218         $rewriteStr = $splFileObject->current().$rewriteStr.PHP_EOL; 
    219          
    220         return $rewriteStr; 
     224        $rewriteStr = $splFileObject->current().$rewriteStr; 
     225         
     226        //if rewriting is not first(head of file),   add before of rewrite 
     227        if ($rewrite_points['start'] !== 0) { 
     228            $before = implode('', array_slice($fileArray, 0, $rewrite_points['start'])); 
     229            $rewriteStr = $before.$rewriteStr; 
     230        } 
     231         
     232        if ($rewrite_points['end']  !== count($fileArray)-1 ) { 
     233            $after = implode('', array_slice($fileArray, $rewrite_points['end']+1)); 
     234            $rewriteStr = $rewriteStr.PHP_EOL.$after; 
     235            $end = ''; //afterをつける場合、EOFの行まで含まれるので調整。 
     236        } else {             
     237            $end = PHP_EOL; 
     238        } 
     239         
     240        return $rewriteStr.$end; 
    221241    } 
    222242