วิธีการปรับเปลี่ยนค่าเมื่อมีการ Quote โพสต์ ใน phpbb
โพสต์แล้ว: 20/08/2019 5:21 pm
- เว็บบอร์ด phpbb นั้นเป็บเว็บบอร์ดที่มี code และ ฟั่งชั่น ตางๆ ที่สนับสนุนการใช้งาน ในส่วนต่างๆของเว็บ มาให้เป้นพื้นฐาน ตั้งแต่แรกติดตั้งอยู่ นั้นจึงทำให้ผุ้พัฒนา ไม่ต้องเสียเวลากับการที่จะต้องสร้าง ส่วนต่างขึ้นมาเองทั้งหมด เพียงแค่ปรับปรุง หรือ เสริมเพียงเเค่บางส่วนเข้าไปเท่านั้น ก็ทำให้เว็บบอร์ด สามารถทำงาน ตามที่เราต้องการ โดยวิธีการที่เราจะทำให้เว็บบอร์ด phpbb สามารถทำในส่วนที่ไม่ได้มีมากับตอนติดตั้งครั่งแรกนั้น คือการส่ร้าง ส่วนขยาย(Extension)
ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
โดยส่วนใหญ่การพัฒนา Extension จะต้องพึงการใช้งาน Event ต่างๆ ที่ phpbb นั้นมีอยู่ก่อนน่าเป็นพื้นฐานอยู่แล้ว เพื่อลดขั้นตอนการพัฒนา Coding ลงได้ เป็นอย่างมากโดนจะทำให้ผู้พัฒนาไม่ต้องไปเขียนโคดหลายๆบันทัดพึงที่จะดึงข้อมูลนั้นๆออกมาใช้ เพราะหากใช้งาน Event ของ phpbb ก็จะเขียนโคดแค่บรรทัดเดียวแต่ดึงข้อมูลได้มากมาย รวมทั้งยังอยากจจะช่วยลดการ Query ข้อลงได้อีก และง่ายต่อการนำไปใช้งานงานในขั้นตอนต่อไปได้ด้วย
ดังเช่นตัวอย่างต่อไปนี้ ที่จะทำ คือ การใช้งาน Event ของ phpbb เพื่อดักการโพสต์ที่เป็น การ Quote โพสต์ แล้วต้องการที่จะเป็น เข้าของโพสต์ที่ Quote มาเป็นนามแฝงที่เก็บไว้ในฐานข้อมูลนามแฝง ซึ่งจะมีขั้นตอนดังนี้
1.Event ของ phpbb ที่จะใช้มีชื่อว่า
2.ภายใน Event posting_modify_template_vars จะมี Event ย่อยๆอีกมากที่ช่วยในการดึงข้อมูลส่วนต่างๆที่เกี่ยวข้องมาใช้งาน โดยที่จะใช้งานก็คือ
3.จะนั้นก็ประกาศ ฟังชั่นดังนี้
4.กำหนดเงือนไขว่า เมื่อมีการโพสต์แบบ Quote จะเข้ามาทำงานในส่วนนี้
5.สร้างตะวแปรเพื่อเก็บค่าจาก Event ย่อยๆของ posting_modify_template_vars โดยผมจะใช้ดังนี้
6.จากนั้นนำตัวแปรเที่ได้ พื่อไป Quote ในฐานข้อมูลที่เก็บข้อมูลนามแฝงไว้
7.จากนั้นนำค่าที่ได้ไปแทนค่าเพื่อแสดงผลในน่าแสดงผลลัพธ์ ดังนี้
8.ผลลัพธ์ที่ได้
ส่วนขยาย(Extension) จะทำให้ เว็บบอร์ด phpbb มีประสิทธิภาพ การทำงานที่ดีขึ้น โดยสามารถ ปรับเพิ่มเพิ่มแก้ไข้ ในส่วนต่างๆของ เว็บบอร์ด phpbb ได้ตามอิสระ ซึ่งในขั้นตอนพัฒนา ไม่จำเป้นที่จะต้องเข้าไปยุ่งเกี่ยว Code เดิมที่มีอยู่(แต่อาจจะมีบางครั่งที่ต้องเข้าไปแก้ไข้ เพิ่มเติม) นั้นก็ช่วยเราไม่ต้องกังวลกับการผิดพลาดที่อาจจะเกิดขึ้นได้เพราะหาก Code ของ เว็บบอร์ด phpbb เกิดความผิดพลาดก้อาจจะกระทบต่อการทำงานส่วนอื่นๆ ด้วย โดยการสร้าง Extension นั้นก็มีวิธีการพัฒนาที่ไม่ซับซ่อนมาก เพียงแต่จะมีเพียงการทำงานที่จะต้องเป็นไปตามที่เราต้องการเท่านั้น ที่จะยากนิดหน่อย
โดยส่วนใหญ่การพัฒนา Extension จะต้องพึงการใช้งาน Event ต่างๆ ที่ phpbb นั้นมีอยู่ก่อนน่าเป็นพื้นฐานอยู่แล้ว เพื่อลดขั้นตอนการพัฒนา Coding ลงได้ เป็นอย่างมากโดนจะทำให้ผู้พัฒนาไม่ต้องไปเขียนโคดหลายๆบันทัดพึงที่จะดึงข้อมูลนั้นๆออกมาใช้ เพราะหากใช้งาน Event ของ phpbb ก็จะเขียนโคดแค่บรรทัดเดียวแต่ดึงข้อมูลได้มากมาย รวมทั้งยังอยากจจะช่วยลดการ Query ข้อลงได้อีก และง่ายต่อการนำไปใช้งานงานในขั้นตอนต่อไปได้ด้วย
ดังเช่นตัวอย่างต่อไปนี้ ที่จะทำ คือ การใช้งาน Event ของ phpbb เพื่อดักการโพสต์ที่เป็น การ Quote โพสต์ แล้วต้องการที่จะเป็น เข้าของโพสต์ที่ Quote มาเป็นนามแฝงที่เก็บไว้ในฐานข้อมูลนามแฝง ซึ่งจะมีขั้นตอนดังนี้
1.Event ของ phpbb ที่จะใช้มีชื่อว่า
โค้ด: เลือกทั้งหมด
posting_modify_template_vars
โค้ด: เลือกทั้งหมด
$event['mode']
3.จะนั้นก็ประกาศ ฟังชั่นดังนี้
โค้ด: เลือกทั้งหมด
public function posting_modify_template_vars($event) {
}
โค้ด: เลือกทั้งหมด
$mode = $event['mode'];
if ($mode == 'quote') {
}
โค้ด: เลือกทั้งหมด
$poster_id = $post_data['poster_id'];
$post_id = $post_data['post_id'];
โค้ด: เลือกทั้งหมด
$sql_ary = array(
'SELECT' => '*',
'FROM' => array(
$this->table_prefix . 'm_anonymous' => 'a',
),
'WHERE' => ' post_id = ' . $post_id. ' AND a.user_id = '.$poster_id,
);
$sql = $this->db->sql_build_query('SELECT', $sql_ary);
$res = $this->db->sql_query($sql);
}
$row = $this->db->sql_fetchrow($res);
$this->db->sql_freeresult($res);
โค้ด: เลือกทั้งหมด
if ($row) {
$text = preg_replace("/\r\n|\r|\n/", '', $post_data['post_text']); #ตัด
$a = preg_match('/\[quote=(.*?)](.*?)\[\/quote]/', $text, $output_array);
$post_text_new = $output_array[2];
$message = $message_parser->message = $bbcode_utils->generate_quote(
censor_text($post_text_new), array(
'author' => $row['anonymous_code'],
'post_id' => $post_id,
'time' => $post_data['post_time'],
'user_id' => '0',
)
);
$message_parser->message .= "\n\n";
$page_data['MESSAGE'] = $message;
$event['page_data'] = $page_data;
}