Learnsquare modules rss
จาก OpenTLE Wiki
How TO DEVERLOPMENT MODULE RSS ON LEARNSQUARE
What's RSS?
Really Simple Syndication (RSS) is an XML-based format for content distribution.
ขั้นตอนการพัฒนา
1. สร้างโฟลเดอร์ใหม่ชื่อ RSS ไว้ใน [root directory]/[learnsquare]/modules/
2. สร้างโฟลเดอร์ย่อยและไฟล์ที่จำเป็นภายในดังนี้
RSS -->blocks -->rss.php -->images --admin.gif -->language -->th -->global.php -->admin.php -->index.php -->version.php
3. การลงโค้ด
3.1 ไฟล์ index.php
- ทำการกำหนดสิทธิ์ในการเข้าถึงของผู้ใช้
3.2 ไฟล์ admin.php
- ทำการกำหนดสิทธิ์ของผู้เข้าใช้ต้องเป็นในระดับ admin เท่านั้น
$menus = $links = array();
if (lnUserAdmin( lnSessionGetVar('uid'))) {
$menus[] = _ADMINMENU;
$links[]='index.php?mod=Admin';
}
$menus[]= _RSSMENU;
$links[]= 'index.php?mod=RSS&file=admin';
- ทำการเลือกตรวจสอบฟังก์ชันในการเพิ่ม, ลบ, ตรวจดูข่าวRSS
if (!empty($op)) {
// include more functions
switch($op) {
case "delete_rss": delRSS($id); break;
case "add_rss": addRSS($vars); return;
case "add_rssform" : addRSSform(); return;
case "add_editrssform" : editRSSform($id); return;
}
}
- ถ้าไม่มีการเรียกใช้ฟังก์ชันจะแสดงรายการข่าวRSSที่มีอยู่ในขณะนั้น
OpenTable();
......
?>
<table width= "100%" cellpadding=2 cellspacing=1 border=0>
<tr bgcolor='#D2E9FF'>
<td width='8%'><center><b><font size='2' face='MS Sans Serif'><? echo _HEAD_CODE ?></font></b></center></td>
<td width='40%'><center><b><font size='2' face='MS Sans Serif'><? echo _RSSMENU ?></font></b></center></td>
<td width='15%'><center><b><font size='2' face='MS Sans Serif'><? echo _POSTNAME ?></font></b></center></td>
<td width='16%'><center><b><font size='2' face='MS Sans Serif'><? echo _POSTDATE ?></font></b></center></td>
<td width='5%'><center><b><font size='2' face='MS Sans Serif'><? echo _DELHEAD ?></font></b></center></td>
</tr>
......
/* show pages */
echo '</table>';
if ($numrows > $pagesize) {
$total_pages = ceil($numrows / $pagesize); // How many pages are we dealing with here ??
$prev_page = $page - 1;
echo '<BR>Page : ';
if ( $prev_page > 0 ) {
echo '<A HREF="index.php?mod=RSS&file=admin&page='.$prev_page.'"><IMG SRC="images/back.gif" WIDTH="19" HEIGHT="9" BORDER="0" ALT=""></A>';
}
for($n=1; $n <= $total_pages; $n++) {
if ($n == $page) {
echo "<B><U>$n</U></B> ";
}
else {
echo '<A HREF="index.php?mod=RSS&file=admin&page='.$n.'">'.$n.'</A> ';
}
}
$next_page = $page + 1;
if ( $next_page <= $total_pages ) {
echo '<A HREF="index.php?mod=RSS&file=admin&page='.$next_page.'"><IMG SRC="images/next.gif" WIDTH="19" HEIGHT="9" BORDER="0" ALT=""></A> ';
}
echo '<BR><BR><B> <FONT COLOR="#800000">= '._TOTALCOURSES.' '.$numrows.' ข่าว</B> =</FONT> <BR>';
echo '</center>';
echo '</td></tr>';
}
echo '</table>';
//end show page
CloseTable();
- ฟังก์ชัน delRSS ทำหน้าที่ลบข่าวRSSที่ไม่ต้องการออกไป
list($dbconn) = lnDBGetConn();
$lntable = lnDBGetTables();
$rsstable = $lntable['rss'];
$rsscolumn = &$lntable['rss_column'];
// delete rss
$dbconn->Execute("DELETE FROM $rsstable WHERE $rsscolumn[id] = '$id'");
- ฟังก์ชัน addRSSform ทำหน้าที่เป็นแบบฟอร์มในการรับข้อมูล, ลิงค์XML แล้งส่งไปยังฟังก์ชัน addRSS เพื่อเพิ่มข่าวRSS
list($dbconn) = lnDBGetConn();
$lntable = lnDBGetTables();
$rsstable = $lntable['rss'];
$rsscolumn = &$lntable['rss_column'];
$query = "SELECT $rsscolumn[id],
$rsscolumn[title],
$rsscolumn[xml],
$rsscolumn[display],
$rsscolumn[name],
$rsscolumn[date] FROM $rsstable";
$result = $dbconn->Execute($query);
if($dbconn->ErrorNo() != 0) {
echo "error";
return;
}
echo '<BR><center><fieldset><legend>'._ADDRSS.'</legend>'
.'<TABLE WIDTH="580" CELLPADDING=1 CELLSPACING=0 BORDER=0>'
.'<FORM NAME="RSS" METHOD=POST ACTION="index.php">'
.'<INPUT TYPE="hidden" NAME="mod" VALUE="RSS">'
.'<INPUT TYPE="hidden" NAME="file" VALUE="admin">'
.'<INPUT TYPE="hidden" NAME="op" VALUE="add_rss">'
.'<INPUT TYPE="hidden" NAME="course_author" VALUE="'.lnSessionGetVar('uid').'">';
echo '<TR><TD WIDTH=130>'._RSSTITLE.' <B>*</B></TD><TD><INPUT TYPE="text" NAME="rsstitle" SIZE="50" VALUE=""></TD></TR>';
echo '<TR><TD WIDTH=130 VALIGN="TOP">'._RSSDESCRIPTION.' <B>*</B></TD><TD><INPUT TYPE="text" NAME="rssdesc" SIZE="50" VALUE=""></TD></TR>';
echo '<TR><TD WIDTH=130 VALIGN="TOP">'._RSSOPTION.' </TD><TD>
<INPUT TYPE="radio" NAME="rssop" VALUE="1" CHECKED="true">'._op1.'
<INPUT TYPE="radio" NAME="rssop" VALUE="2">'._op2.'
<INPUT TYPE="radio" NAME="rssop" VALUE="3">'._op3.'
<INPUT TYPE="radio" NAME="rssop" VALUE="4">'._op4.'
</TD></TR>';
echo '<TR><TD WIDTH=130>'._POSTNAME.' <B>*</B></TD><TD><INPUT TYPE="text" NAME="postname" SIZE="20" VALUE=""></TD></TR>';
echo '<TR><TD WIDTH=130>'._POSTEMAIL.' </TD><TD><INPUT TYPE="text" NAME="postemail" SIZE="50" VALUE=""></TD></TR>';
echo '<TR><TD WIDTH=130 VALIGN="TOP"> <TD><BR><INPUT class="button" TYPE="button" VALUE="'. _ADD. '" onclick="formSubmit()"> ';
echo "<INPUT class=\"button\" TYPE=\"button\" VALUE=\"". _CANCEL. "\" onclick=\"javascript:window.open('index.php?mod=RSS&file=admin','_self')\">";
echo '<BR><BR></TD></TR></FORM>'
.'</TABLE>'
.'</fieldset>';
- ฟังก์ขัน addRSS ทำหน้าที่เพิ่มข่าวRSSที่เราสนใจ โดยรับค่าต่างๆมาจากฟังก์ชัน addRSSform
extract($vars);
....
list($dbconn) = lnDBGetConn();
$lntable = lnDBGetTables();
$rsstable = $lntable['rss'];
$rsscolumn = &$lntable['rss_column'];
$query = "INSERT INTO $rsstable
( $rsscolumn[title],
$rsscolumn[xml],
$rsscolumn[display],
$rsscolumn[name],
$rsscolumn[email],
$rsscolumn[date]
)
VALUES ('$rsstitle','$rssdesc','$rssop', '$postname','$postemail','$time')";
//VALUES ('$rsstitle','$rssdesc','$rssop', '$postname','$postemail','$time')";
//echo $query; exit();
$dbconn->Execute($query);
....
- ฟังก์ชัน editRSSform ทำหน้าที่ดุรายละเอียดและตัวอย่างข่าวRSS
list($dbconn) = lnDBGetConn();
$lntable = lnDBGetTables();
$rsstable = $lntable['rss'];
$rsscolumn = &$lntable['rss_column'];
$result = $dbconn->Execute("SELECT * from $rsstable WHERE $rsscolumn[id] = $id");
list($id,$title,$xml,$display,$name,$email,$date) = $result->fields;
$date = Date_Calc::dateFormat3($date, "%e %b %y");
echo '<BR><center><fieldset><legend>'._VIEWRSS.'</legend>'
.'<BR><TABLE WIDTH="550" CELLPADDING=2 CELLSPACING=0 BORDER=1 BGCOLOR=#CCCCCC BORDERCOLOR=#FFFFFF>'
.'<TR><TD WIDTH=100 VALIGN="TOP">'._RSSTITLE.'</TD><TD BGCOLOR=#EEEEEE VALIGN="TOP">'.$title.'</TD></TR>'
.'<TR><TD WIDTH=100 VALIGN="TOP">'._RSSDESCRIPTION.'</TD><TD BGCOLOR=#EEEEEE VALIGN="TOP">'.$xml.'</TD></TR>'
.'<TR><TD WIDTH=100 VALIGN="TOP">'._VIEWRSS.'</TD><TD BGCOLOR=#EEEEEE VALIGN="TOP">'.$display.'</TD></TR>'
.'<TR><TD WIDTH=100 VALIGN="TOP">'._POSTNAME.'</TD><TD BGCOLOR=#EEEEEE VALIGN="TOP">'.$name.'</TD></TR>'
.'<TR><TD WIDTH=100 VALIGN="TOP">'._POSTEMAIL.'</TD><TD BGCOLOR=#EEEEEE VALIGN="TOP">'.$email.'</TD></TR>'
.'<TR><TD WIDTH=100 VALIGN="TOP">'._POSTDATE.'</TD><TD BGCOLOR=#EEEEEE VALIGN="TOP">'.$date.'</TD></TR>'
.'</TABLE>';
3.3 ไฟล์ global.php ทำการสร้างตัวแปรไว้แทนภาษาที่เรียกใช้งาน
3.4 ไฟล์ rss.php ทำการดึงข่าวRSSที่เก็บไว้ในฐานข้อมูลมาแสดงผลใน blocks
list($dbconn) = lnDBGetConn();
$lntable = lnDBGetTables();
$rsstable = $lntable['rss'];
$rsscolumn = &$lntable['rss_column'];
$result = $dbconn->Execute("SELECT $rsscolumn[id], $rsscolumn[title], $rsscolumn[xml], $rsscolumn[display], $rsscolumn[name], $rsscolumn[date] FROM $rsstable ORDER BY $rsscolumn[id] DESC");
if ($result ->RecordCount()) {
$countrow=0;
while((list($id,$title,$xml,$display,$name,$date) = $result->fields) && ($countrow++<5))
{
$result->MoveNext();
$row['content'] .= $display;
}
$row['content'] .= '';
return themesidebox($row);
}
3.5 ไฟล์ version.php แสดงเวอร์ชัน, ผู้พัฒนา และรายละเอียดอื่นๆ
