2011-06-22 6 views
0

私はYahooの財務から株価情報を取得するwordpressプラグインを使用しています。非常に奇妙なことに、ちょっとしたことがあるだけです。私はランダムに140行目で致命的なエラーを表示します...そして140行目はブレークです。私はコードを理解するために引用符の下にコピーしています。編集:今私は、完全なPHPファイルを...持っている!PHP致命的なエラーブレーク。

<?php 

/* プラグイン名:http://www.dagondesign.com/articles/stock-quotes-plugin-for-wordpress/ 説明:ダゴンデザイン バージョン:1.0.1 著者URI:http://www.dagondesign.com */

ウェブサイト 著者に表示株価証券は プラグインURIを引用

$ ddsq_version = '1.0.1';

//セットアップのデフォルトのオプションは add_option( 'ddsq_format'、 '%のNAME%:% LAST%(%変更%の)')が存在しない場合は、 add_option( 'ddsq_up_color'、 '00BB00'); add_option( 'ddsq_down_color'、 'FF0000'); add_option( 'ddsq_update_time'、 '10');

関数ddsq_add_option_pages(){ IF(function_exists( 'add_options_page')){ add_options_page( '株価'、 'DDStockQuotes'、8、FILE、 'ddsq_options_page')。 }
}

関数ddsq_options_page(){

global $ddsq_version; 

if (isset($_POST['set_defaults'])) { 
    echo '<div id="message" class="updated fade"><p><strong>'; 

    update_option('ddsq_format', '<strong>%NAME%</strong> %LAST% [<strong>%CHANGE%</strong>]'); 
    update_option('ddsq_up_color', '00BB00'); 
    update_option('ddsq_down_color', 'FF0000'); 
    update_option('ddsq_update_time', '10'); 

    echo 'Default Options Loaded!'; 
    echo '</strong></p></div>'; 

} else if (isset($_POST['info_update'])) { 

    update_option('ddsq_format', (string) $_POST["ddsq_format"]); 
    update_option('ddsq_up_color', (string) $_POST["ddsq_up_color"]); 
    update_option('ddsq_down_color', (string) $_POST["ddsq_down_color"]); 
    update_option('ddsq_update_time', $_POST["ddsq_update_time"]); 

    echo 'Configuration Updated!'; 
    echo '</strong></p></div>'; 

} ?> 

<div class=wrap> 

<h2>Stock Quotes v<?php echo $ddsq_version; ?></h2> 

<p>For information and updates, please visit:<br /> 
<a href="http://www.dagondesign.com/articles/stock-quotes-plugin-for-wordpress/">http://www.dagondesign.com/articles/stock-quotes-plugin-for-wordpress/</a></p> 


<form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>"> 
<input type="hidden" name="info_update" id="info_update" value="true" /> 


<h3>Usage</h3> 
<p>There are two ways you can display quotes:</p> 
<p><strong>1) In a post or page</strong> 
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
[stock MSFT]</p> 
<p><strong>2) In a template file</strong> 
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;?php echo ddsq_get_quote('MSFT'); ?&gt;</p> 


<h3>Options</h3> 
<table width="100%" border="0" cellspacing="6" cellpadding="4"> 

<tr valign="top"><td width="13%"> 
    <strong>Output Format </strong> 
</td><td align="left"> 
    <input name="ddsq_format" type="text" size="100" value="<?php echo htmlspecialchars(stripslashes(get_option('ddsq_format'))) ?>"/> 
    <br />Placeholders for data: <strong>%NAME% %LAST% %CHANGE%</strong> 
</td></tr> 

<tr valign="top"><td width="13%"> 
    <strong>Up Color </strong> 
</td><td align="left"> 
    <input name="ddsq_up_color" type="text" size="7" value="<?php echo get_option('ddsq_up_color') ?>"/> 
    Color to use for price change when up (leave blank to disable) 
</td></tr> 

<tr valign="top"><td width="13%"> 
    <strong>Down Color </strong> 
</td><td align="left"> 
    <input name="ddsq_down_color" type="text" size="7" value="<?php echo get_option('ddsq_down_color') ?>"/> 
    Color to use for price change when down (leave blank to disable) 
</td></tr> 

<tr valign="top"><td width="13%"> 
    <strong>Update Time </strong> 
</td><td align="left"> 
    <input name="ddsq_update_time" type="text" size="3" value="<?php echo get_option('ddsq_update_time') ?>"/> 
    Number of minutes to wait, before fetching updated stock prices 
</td></tr> 
</table> 

<div class="submit"> 
    <input type="submit" name="set_defaults" value="<?php _e('Load Default Options'); ?> &raquo;" /> 
    <input type="submit" name="info_update" value="<?php _e('Update options'); ?> &raquo;" /> 
</div> 

</form> 
</div><?php 

}

関数ddsq_get_quote($のSYMB){

$up_color = trim(get_option('ddsq_up_color')); 
$down_color = trim(get_option('ddsq_down_color')); 
$quote_format = stripslashes(get_option('ddsq_format')); 
$update_time = trim(get_option('ddsq_update_time')); 

$update_time = $update_time * 60; 
$t_out = ''; 
$time_diff = ''; 

// Trying to open local cached file first 
$file_path = WP_PLUGIN_DIR . "/" . $symb . ".txt"; 
if (file_exists($file_path)){ 
    $time_diff = date('U') - filemtime($file_path); 
} 

$lf = @fopen($file_path, "r"); 
if (($lf == FALSE) || ($time_diff >= $update_time)) { 
    $url = "http://finance.yahoo.com/d/quotes.csv?s=" . $symb . "&f=sl1c1"; 
    $fp = @fopen($url, "r"); 
    if ($fp == FALSE) { 
     #$t_out = 'Error opening: ' . htmlspecialchars($url); 
     break; 
    } else { 
     $array = @fgetcsv($fp , 4096 , ', '); 
     @fclose($fp); 
     $sq_name = $array[0]; 
     $sq_last = $array[1]; 
     $sq_change = $array[2]; 

     $col = NULL; 
     if (($sq_change[0] == '-') && ($down_color != '')) { 
      $col = $down_color; 
     } else if (($sq_change[0] == '+') && ($up_color != '')) { 
      $col = $up_color; 
     } 

     if ($col !== NULL) { 
      $sq_change = '<span style="color: #' . $col . ';">' . $sq_change . '</span>'; 
     } 

     $t_out = $quote_format; 
     $t_out = str_replace('%NAME%', $sq_name, $t_out); 
     $t_out = str_replace('%LAST%', $sq_last, $t_out); 
     $t_out = str_replace('%CHANGE%', $sq_change, $t_out); 

     $cache_file = fopen($file_path, "w+"); 
     fwrite($cache_file, $t_out); 
    } 
} else { 
    fclose($lf); 
    $t_out = file_get_contents($file_path); 
    if ($t_out == FALSE){ 
     echo "ERROR opening cache file"; 
    } 
} 

return $t_out; 

}

関数ddsq_process($コンテンツ){

$results = array(); 

preg_match_all("/\[\s?stock\s?(.*)\s?\]/", $content, $results); 

$i = 0; 
foreach ($results[0] as $r) { 

    $content = str_replace($r, ddsq_get_quote($results[1][$i]), $content); 
    $i++; 
} 

return $content; 

}

ADD_FILTER( 'the_content'、 'ddsq_process')。 add_action( 'admin_menu'、 'ddsq_add_option_pages');

?>

+0

致命的なエラーは "on line 140"と表示されますか?それは奇妙だ。 – BoltClock

+4

そこに 'for' /' while'ループがあります。なぜならそこに 'break 'の理由がないからです。 – mhitza

+0

ええ、すべてのコードを投稿すると便利です。あなたはそれをカットしました。 – BraedenP

答えて

0

限り私が見ることができるように自分自身内break;を受け入れないループや制御構造は(等switch)、存在しません。ループ内でこのコードを呼び出すことがあると思います。この場合、break;が許可されます。しかし時にはそうではありません。すべてbreak;if-ブロック内では意味をなさない。ファイルポインタはfalseに評価することができますが、エラーのfopenをチェックするとき、あなたが使用する必要がある場合

+0

私は休憩をコメントアウトする必要があります。 ?? –

+0

"このコードをループ内で呼び出すこともありますが、この場合は中断することができます。" PHPでは実際にそれを可能にしていますか? – phant0m

+1

@ phant0m 'include'? :) – mhitza

0

- 私はわからない:

それとは別に
if ($fp === FALSE) 

、@のmhitzaさんのコメントを見てみましょう。

+0

私は完全に初心者ですこのプラグインは私の開発者によって行われました。私はちょうど彼を盗む前にそれを修正しようとしています:) –