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 แสดงเวอร์ชัน, ผู้พัฒนา และรายละเอียดอื่นๆ

รับข้อมูลจาก "http://wiki.opentle.org/Learnsquare_modules_rss"
เครื่องมือส่วนตัว