ในการจะทำให้ ส่วนขยาย(Extension) ของ phpbb นั้นสามารถทำงานด้านของข้อมูลนั้นได้อย่างถูกต้อง ก็ควรจะทำงานร่วมกับ Event ของ phpbb ที่มีมาให้จะช่วยเพิ่มประสิทธิภาพ และอำนวยความสะดวกให้กับ ผู้ที่พัฒนา ส่วนขยาย(Extension) ของ phpbb
โดยยิ่งถ้าหากข้อมูลเหล่านั้นเป็นข้อมูลเกี่ยวกับ ด้านการโพสต์ ซึ่งถึงว่า มีส่วนสำคัญของ phpbb ก็ต้องมีการระแวนระวังเป็นพิเศษ เพื่อไม่ให้ข้อมูลเดิมนั้นผิดพลาด หลังการใช้งาน extension
ตัวอย่างจากนี้เป็นส่วนหนึ่งของการพัฒนา Extension คือ การใช้งาน Event ของ phpbb เข้ามาช่วยการการสร้าง Extension สำหรับการปรับเปลี่ยนข้อมูลเมื่อมีการ Quote โพสต์
1.Event ที่ใช้มีชื่อว่า posting_modify_template_vars ซึ่งเป็น Eventที่จะทำงานเมื่อมีการเขียนสร้างโพสต์ ที่กระดานกระทู้
2.ใน Event posting_modify_template_vars จะมี ตัวแปรที่เก็บค่า mode ไว้ว่า ผู้ใช้งานกำลัง จะทำการ โพสต์ แก้ไข หรือ quote
โค้ด: เลือกทั้งหมด
public function posting_modify_template_vars($event) {
if ($mode == 'quote') { //ตรวจสอบว่าโพสต์นี้เป็นการ quote หรือไม
$page_data = $event['page_data']; //สร้างตัวแปร เพื่อเก็บข้อมูล ข้อมูล page_data
global $phpbb_container;
$message_parser = $event['message_parser']; //สร้างตัวแปร เพื่อเก็บข้อมูลข้อความ จากมาจาก message_parser
$bbcode_utils = $phpbb_container->get('text_formatter.utils'); //ตัวแปร ที่แปลง phpbb
$post_data = $event['post_data']; //สร้างตัวปรเพื่อเก็บค่าของ post_data
$text = preg_replace("/\r\n|\r|\n/", '', $post_data['post_text']); #ตัดคำออก
$a = preg_match('/\[quote=(.*?)](.*?)\[\/quote]/', $text, $output_array); ค้นหาข้อมูลที่อยู่ภายใต้ quote
$post_text_new = $output_array[2];
$message = $message_parser->message = $bbcode_utils->generate_quote(
censor_text($post_text_new), array(
'author' => '0050000',
'post_id' => $post_id,
'time' => $post_data['post_time'],
'user_id' => '1',
) // ปรับค่าใหม่แล้วให้กับตัวแปร ที่จำเป็น
);
$message_parser->message .= "\n\n";
$page_data['MESSAGE'] = $message;
$event['page_data'] = $page_data; // ส่งค่ากลับไปใช่งาน
}
}
ผลก่อนปรับแก้ไข
หลักจากใช้งาน
บทความที่เกี่ยวข้อง
การสร้าง Extension ใน phpbb
การสร้าง controller สำหรับ phpbb
Event listenner - เขียน Extension บน phpBB 3.1