FrontPage
topic.class.phpのソースコード
<?php
require_once "BaseDB.class.php";
// ログインをするクラス
class Topic extends BaseDB
{
public function loadTopic( $topicid='' )
{
$qstring = "select topicid,dt,lastupdate,fdelete,catid," .
"title,body from b_webdiary where topicid=$topicid";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
if(!$fresult = mysql_fetch_array($qresult))
{
$this->errorm = "日記情報がありません。";
$this->errors++;
return false;
}
$this->topicid = $fresult['topicid'];
$this->dt = $fresult['dt'];
$this->lastupdate = $fresult['lastupdate'];
$this->fdelete = $fresult['fdelete'];
$this->catid = $fresult['catid'];
$this->title = $fresult['title'];
$this->body = $fresult['body'];
return true;
}
public function saveTopic( $id='' )
{
if( $this->fdelete == '' ){ $delf = 0; } else { $delf = 1; }
if( $this->topicid == 0 ){
$qstring = "insert into b_webdiary (dt,lastupdate,fdelete,catid,title,body)values(" .
"NOW(),NOW(),$delf,$this->catid,'$this->title','$this->body')";
} else {
$qstring = "update b_webdiary set ".
"lastupdate = NOW(), ".
"fdelete = $delf, ".
"catid = $this->catid, ".
"title = '$this->title', ".
"body = '$this->body' ".
" where topicid=$this->topicid";
}
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
return true;
}
public function getTopicsAll()
{
$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d %T') as postdatef,d.lastupdate,d.fdelete," .
"d.catid,b.category,d.title,d.body " .
" from b_webdiary d left join b_categories b " .
" on d.catid = b.catid order by d.dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
$arr = $this->mysql_fetch_all( $qresult );
return $arr;
}
public function deleteTopics()
{
$qstring = "delete from b_webdiary where fdelete = 1";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
return true;
}
public function getTopics( $linecount )
{
$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
"d.catid,b.category,d.title,d.body,YEAR(d.dt) as yyyy,MONTH(d.dt) as mm " .
" from b_webdiary d left join b_categories b " .
" on d.catid = b.catid order by d.dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
$all = array();
for ($i=0; $i<$linecount; $i++ ) {
if( $rec = mysql_fetch_assoc($qresult) ){
$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
$all[] = $rec;
}
}
return $all;
}
public function getTopicsCategory( $catid )
{
$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
"d.catid,b.category,d.title,d.body " .
" from b_webdiary d left join b_categories b " .
" on d.catid = b.catid where d.catid=$catid order by d.dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
echo( $this->errorm );
return false;
}
$all = array();
while( $rec = mysql_fetch_assoc($qresult) ){
$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
$all[] = $rec;
}
return $all;
}
public function getTopic( $topicid )
{
$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
"d.catid,b.category,d.title,d.body,YEAR(d.dt) as yyyy,MONTH(d.dt) as mm " .
" from b_webdiary d left join b_categories b " .
" on d.catid = b.catid where topicid=$topicid order by d.dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
if( $rec = mysql_fetch_assoc($qresult) ){
$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
}
return $rec;
}
public function getTopicMonth( $year, $month )
{
$qstring = "select DAYOFMONTH( dt ) as dd, topicid " .
" from b_webdiary where YEAR(dt)=$year and MONTH(dt)=$month order by dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
echo( $this->errorm );
return false;
}
while( $rec = mysql_fetch_assoc($qresult) ){
$days[ $rec['dd'] ] = $rec['topicid'];
}
return $days;
}
public function getTopicsDaily( $year, $month, $day )
{
//クエリを実行
$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
"d.catid,b.category,d.title,d.body " .
" from b_webdiary d left join b_categories b " .
" on d.catid = b.catid where YEAR(dt)=$year and MONTH(dt)=$month and DAYOFMONTH(dt)=$day order by dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
echo( $this->errorm );
return false;
}
$all = array();
while( $rec = mysql_fetch_assoc($qresult) ){
$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
$all[] = $rec;
}
return $all;
}
public function makeTopicCalender( $year, $month )
{
$calender['datenow'] = sprintf( "%04d/%02d", $year, $month );
// 指定月 Topic ID 一覧取得
$topicids = $this->getTopicMonth( $year, $month );
// 指定月 1日の曜日算定 (日曜が0)
$wday = date("w", $f_day = mktime(0, 0, 0, $month, 1, $year));
$col = 0; // 表示位置カウント
//
$cal = '<tr>';
for( $i=0; $i<$wday; $i++ ){ // 1日まで空欄
$cal .= '<td> </td>';
$col++;
}
// 日付が 失敗するまで 進める
$i=0;
while (checkdate($month, ++$i, $year)) {
if( $topicids[$i] != '' ){ // topic あり
$cal .= '<td><a href="daily_archives.php?year=' .$year.'&month='.$month.'&day='. $i. '">' . $i . "</a></td>";
} else {
$cal .= "<td>$i</td>";
}
$col++;
if (!( $col % 7 )) $cal .= "</tr><tr>";
}
for( $i=$wday; $i<7; $i++ ){ // 1日まで空欄
$cal .= '<td> </td>';
$col++;
}
$cal .= '</tr>';
$calender['view'] = $cal;
return $calender;
}
public function getTopicMothlyArc()
{
$qstring = "select YEAR(dt) as yyyy,MONTH(dt) as mm,count(topicid) as cnt,MAX( DATE_FORMAT( dt,'%Y/%m') ) as datef " .
" from b_webdiary group by YEAR(dt),MONTH(dt) order by dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[ $qstring]";
$this->errors++;
echo( $this->errorm );
return false;
}
$arr = $this->mysql_fetch_all( $qresult );
return $arr;
}
public function getTopicsMonthly( $year, $month )
{
$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
"d.catid,b.category,d.title,d.body " .
" from b_webdiary d left join b_categories b " .
" on d.catid = b.catid where YEAR(dt)=$year and MONTH(dt)=$month order by d.dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
echo( $this->errorm );
return false;
}
$all = array();
while( $rec = mysql_fetch_assoc($qresult) ){
$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
$all[] = $rec;
}
return $all;
}
public function getTopicsSearch( $keywd )
{
$qstring = "select d.topicid,DATE_FORMAT( d.dt,'%Y/%m/%d') as postdatef,DATE_FORMAT( d.dt,'%H:%i') as posttimef,d.lastupdate,d.fdelete," .
"d.catid,b.category,d.title,d.body " .
" from b_webdiary d left join b_categories b " .
" on d.catid = b.catid where d.title regexp '$keywd' or d.body regexp '$keywd' order by d.dt desc";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
echo( $this->errorm );
return false;
}
$all = array();
while( $rec = mysql_fetch_assoc($qresult) ){
$rec['bodyf'] = ereg_replace( "\n","<br>", $rec['body'] );
$rec['bodyf'] = ereg_replace( "<br><br>","</p>\n<p>", $rec['bodyf'] );
$rec['bodyf'] = '<p>' . $rec['bodyf'] . '</p>';
$rec['commentcount'] = $this->getCommentCnt( $rec['topicid'] );
$all[] = $rec;
}
return $all;
}
public function getCommentCnt( $topicid )
{
$qstring = "select count(*) as cnt from b_comments where topicid=$topicid";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
$rec = mysql_fetch_assoc($qresult);
return $rec['cnt'];
}
// プロパティ参照
function __get( $property )
{
return $this->$property;
}
// プロパティセット
function __set( $property, $value )
{
$this->$property = $value;
}
} //クラス終了
?>