การปรับแก้ไขข้อมูลเมื่อทำการ Quote เพื่อปรับแก้ไขชื่อของ User ที่ทำการ Quote ใน phpbb

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

Post Reply
User avatar
Ittichai_chupol
PHP VIP Members
PHP VIP Members
Posts: 3114
Joined: 19/09/2018 10:33 am

การปรับแก้ไขข้อมูลเมื่อทำการ Quote เพื่อปรับแก้ไขชื่อของ User ที่ทำการ Quote ใน phpbb

Post by Ittichai_chupol » 25/11/2019 6:39 pm

เว็บบอร์ด phpbb นั้นเป็บเว็บบอร์ดที่มี code และ ฟั่งชั่น ตางๆ ที่สนับสนุนการใช้งาน ในส่วนต่างๆของเว็บ มาให้เป้นพื้นฐาน ตั้งแต่แรกติดตั้งอยู่ นั้นจึงทำให้ผุ้พัฒนา ไม่ต้องเสียเวลากับการที่จะต้องสร้าง ส่วนต่างขึ้นมาเองทั้งหมด เพียงแค่ปรับปรุง หรือ เสริมเพียงเเค่บางส่วนเข้าไปเท่านั้น ก็ทำให้เว็บบอร์ด สามารถทำงาน ตามที่เราต้องการ โดยวิธีการที่เราจะทำให้เว็บบอร์ด phpbb สามารถทำในส่วนที่ไม่ได้มีมากับตอนติดตั้งครั่งแรกนั้น คือการส่ร้าง ส่วนขยาย(Extension)

ในการจะทำให้ ส่วนขยาย(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

Code: Select all

  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;  // ส่งค่ากลับไปใช่งาน
                
            }
    }


ผลก่อนปรับแก้ไข
PHP Knowledge-1.png
หลักจากใช้งาน
PHP Knowledge-2.png
บทความที่เกี่ยวข้อง
การสร้าง Extension ใน phpbb
การสร้าง controller สำหรับ phpbb
Event listenner - เขียน Extension บน phpBB 3.1

Post Reply

Return to “PHP Knowledge”

Users browsing this forum: No registered users and 4 guests