{"id":70346,"date":"2025-10-31T03:01:00","date_gmt":"2025-10-30T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=70346"},"modified":"2025-10-30T19:18:01","modified_gmt":"2025-10-30T09:18:01","slug":"message-board-one-liners-content-filtering-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-content-filtering-tutorial\/","title":{"rendered":"Message Board One Liners Content Filtering Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Message Board One Liners Content Filtering Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/message_board_content_filtering.gif\" title=\"Message Board One Liners Content Filtering Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">Message Board One Liners Content Filtering Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Message Board One Liners Group Privacy Tutorial' href='#mbolgpt'>Message Board One Liners Group Privacy Tutorial<\/a> &#8230;<\/p>\n<ol>\n<li>group<\/li>\n<li>privacy<\/li>\n<\/ol>\n<p> &#8230; ideas are built up today with an &#8230;<\/p>\n<ol>\n<li>individualized<\/li>\n<li>content<\/li>\n<li>filtering<\/li>\n<\/ol>\n<p> &#8230; addition of functionality so that a user can provide a <font color=blue>semicolon delimited set of filtering parameters<\/font> &#8230;<\/p>\n<blockquote><p>\nName you will see on board above where a comma separated list like RJM[rmetcalfe15@gmail.com],RMet[rmetcalfe@rjmprogramming.com.au] would invite RMet to Message Board via that email address and flagging that rmetcalfe15@gmail.com would be sending the invitation<font color=blue>, whereas a semicolon separated list describes a wildcard * and ? (as well as ^ start and $ end) savvy list of Message Board filter criteria, as well as criteria like for example (of matching with <br \/>Frederick says at 30\/10\/2025 00:13 GMT &#8230; yes<br \/>) &#8230; <br \/>last 10 minutes <br \/>^Fred*yes <br \/>red?r*k*yes$<\/font>\n<\/p><\/blockquote>\n<p> &#8230; to apply to their own view of the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\">Message Board<\/a> we&#8217;ve been working on here lately.<\/p>\n<p>Again, both serverside <font size=1>(starring for the first time, for us, use of PHP&#8217;s great <a target=\"_blank\" title='PHP function fnmath information' href='https:\/\/www.php.net\/manual\/en\/function.fnmatch.php' rel=\"noopener\">fnmatch<\/a> friend to wildcard * and ? usage that we are so familiar with regarding file specification usages)<\/font> and clientside code needed to change to facilitate this, as you can peruse below &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/prepend.php---GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/prepend.php---GETME\" rel=\"noopener\">prepend.php<\/a> PHP (ie. serverside) &#8230; to help out &#8230;<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.js--GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.js--GETME\" rel=\"noopener\">talk_about_it.js<\/a> external Javascript (ie. clientside) &#8230; to help out &#8230;<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php---GETME\" rel=\"noopener\">a changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php---GETME\" rel=\"noopener\">talk_about_it.php<\/a> PHP <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\">Message Board<\/a> web application you can <a href='#mytable'>try below<\/a><\/li>\n<\/ul>\n<p> &#8230; where a bit of &#8220;colour coding depending on mode of use&#8221; enters the scene.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-content-filtering-tutorial\/' rel=\"noopener\">Message Board One Liners Content Filtering Tutorial<\/a>.<\/p-->\n<hr>\n<p id='mbolgpt'>Previous relevant <a target=\"_blank\" title='Message Board One Liners Group Privacy Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-group-privacy-tutorial\/' rel=\"noopener\">Message Board One Liners Group Privacy Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Message Board One Liners Group Privacy Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/message_board_privacy.jpg\" title=\"Message Board One Liners Group Privacy Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">Message Board One Liners Group Privacy Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Message Board One Liners Group Invitations Tutorial' href='#mbolgit'>Message Board One Liners Group Invitations Tutorial<\/a> &#8230;<\/p>\n<blockquote><p>\nGroup\n<\/p><\/blockquote>\n<p> &#8230; think, opens us up to the first opportunity to filter Message Board data &#8230;<\/p>\n<p><code><br \/>\neach group will only see the messaging from others in their group that clicked\/tapped the email\/SMS body link of relevance to them, sent by the first member of the comma separated group list, that being the originator<br \/>\n<\/code><\/p>\n<p>Under the umbrella term &#8220;privacy&#8221;, these changes improve what we can offer users in terms of &#8220;privacy&#8221; using the Message Board web application, but we think there will be more to come.<\/p>\n<p>Both serverside and clientside code needed to change to facilitate this, as you can peruse below &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/prepend.php--GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/prepend.php--GETME\" rel=\"noopener\">prepend.php<\/a> PHP (ie. serverside) &#8230; to help out &#8230;<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.js-GETME\" rel=\"noopener\">the changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.js-GETME\" rel=\"noopener\">talk_about_it.js<\/a> external Javascript (ie. clientside) &#8230; to help out &#8230;<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php--GETME\" rel=\"noopener\">a changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php--GETME\" rel=\"noopener\">talk_about_it.php<\/a> PHP <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\">Message Board<\/a> web application you can <a href='#mytable'>try below<\/a><\/li>\n<\/ul>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-group-privacy-tutorial\/' rel=\"noopener\">Message Board One Liners Group Privacy Tutorial<\/a>.<\/p-->\n<hr>\n<p id='mbolgit'>Previous relevant <a target=\"_blank\" title='Message Board One Liners Group Invitations Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-group-invitations-tutorial\/' rel=\"noopener\">Message Board One Liners Group Invitations Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Message Board One Liners Group Invitations Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it_js.gif\" title=\"Message Board One Liners Group Invitations Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">Message Board One Liners Group Invitations Tutorial<\/p><\/div>\n<p>Improving on the Message Board start we had with yesterday&#8217;s <a title='Message Board One Liners Primer Tutorial' href='#mbolpt'>Message Board One Liners Primer Tutorial<\/a>, today we introduce &#8230;<\/p>\n<ol>\n<li>the idea of a Message Board &#8230;<br \/>\n<blockquote><p>\nGroup\n<\/p><\/blockquote>\n<p> &#8230; allied to &#8230;<\/li>\n<li>how an email and\/or SMS invitation from &#8230;<br \/>\n<code><br \/>\nthe originator + the rest of the group = the group<br \/>\n<\/code>\n<\/li>\n<\/ol>\n<p> &#8230; and our &#8220;blurb&#8221; on that user related textbox <font color=blue>now reads<\/font> &#8230;<\/p>\n<blockquote><p>\nName you will see on board above <font color=blue>where a comma separated list like RJM[rmetcalfe15@gmail.com],RMet[rmetcalfe@rjmprogramming.com.au] would invite RMet to Message Board via that email address and flagging that rmetcalfe15@gmail.com would be sending the invitation<\/font>.\n<\/p><\/blockquote>\n<p>Making these optional invitations a possibility asked for extensions to the clientside of our Message Board code, and as such, we decided to write a new &#8230;<\/p>\n<ul>\n<li>&#8220;proof of concept&#8221; <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.js_GETME\" rel=\"noopener\">talk_about_it.js<\/a> external Javascript &#8230; to help out &#8230;<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php-GETME\" rel=\"noopener\">a changed<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php-GETME\" rel=\"noopener\">talk_about_it.php<\/a> PHP (ie. serverside) <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\">Message Board<\/a> web application you can <a href='#mytable'>try below<\/a><\/li>\n<\/ul>\n<p>And for the second time, we&#8217;ve made use of email and\/or SMS body sections containing multiple URLs each getting recognised because they are separated by a line feed.  That means we can, there and then, at the <i>email received by the email recipient stage<\/i>, get the recipient to set themselves up in terms of &#8230;<\/p>\n<ol>\n<li>name<\/li>\n<li>contact<\/li>\n<\/ol>\n<p> &#8230; completely, as they click\/tap the relevant email and\/or SMS <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\">Message Board<\/a> link.  If you are ahead of the curve here, no Message Board filtering of data has happened &#8230; yet?!<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-group-invitations-tutorial\/' rel=\"noopener\">Message Board One Liners Group Invitations Tutorial<\/a>.<\/p-->\n<hr>\n<p id='mbolpt'>Previous relevant <a target=\"_blank\" title='Message Board One Liners Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-primer-tutorial\/' rel=\"noopener\">Message Board One Liners Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Message Board One Liners Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.gif\" title=\"Message Board One Liners Primer Tutorial\"  style=\"float:left;\"  \/><\/a><p class=\"wp-caption-text\">Message Board One Liners Primer Tutorial<\/p><\/div>\n<p>PHP has &#8230;<\/p>\n<ul>\n<li><a target=\"_blank\" title='PHP include information' href='http:\/\/php.net\/manual\/en\/function.include.php' rel=\"noopener\">include<\/a> &#8216;.\/prepend.php&#8217;; \/\/ &#8230; and\/or &#8230;<\/li>\n<li><a target=\"_blank\" title='PHP require information' href='http:\/\/php.net\/manual\/en\/function.require.php' rel=\"noopener\">require<\/a> &#8216;.\/prepend.php&#8217;; \/\/&#8230; and\/or &#8230;<\/li>\n<li><a target=\"_blank\" title='php.ini directives' href='https:\/\/www.php.net\/manual\/en\/ini.core.php' rel=\"noopener\">php_value auto_prepend_file<\/a> &#8220;prepend.php&#8221;<br \/>\n\/\/ php.ini directive in relevant folder .htaccess &#8230; worked on our local MAMP Apache web server but not up at RJM Programming domain Apache web server<\/li>\n<\/ul>\n<p> &#8230; as ways to prepend PHP (called <i>prepend.php<\/i> into some other PHP), a design we wanted to implement for today&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php_GETME\" rel=\"noopener\">&#8220;proof of concept&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php\" rel=\"noopener\">Message Board One Liners<\/a> helped out by <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/prepend\/prepend.php_GETME\" rel=\"noopener\">prepend.php<\/a> helper, which you can also try below &#8230;<\/p>\n<table id=mytable style=width:100%;>\n<tr>\n<th colspan=2>Message Board<\/th>\n<\/tr>\n<tr>\n<th>User 1<\/th>\n<th>User 2<\/th>\n<\/tr>\n<tr>\n<td>\n<iframe src='\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php' style=\"width:100%;height:1200px;\"><\/iframe>\n<\/td>\n<td>\n<iframe src='\/\/www.rjmprogramming.com.au\/PHP\/prepend\/talk_about_it.php' style=\"width:100%;height:1200px;\"><\/iframe>\n<\/td>\n<\/tr>\n<\/table>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d70318' onclick='var dv=document.getElementById(\"d70318\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/include\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70318' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d70326' onclick='var dv=document.getElementById(\"d70326\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/external-javascript\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70326' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d70337' onclick='var dv=document.getElementById(\"d70337\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/privacy\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70337' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d70346' onclick='var dv=document.getElementById(\"d70346\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/colour-coding\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70346' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday&#8217;s Message Board One Liners Group Privacy Tutorial &#8230; group privacy &#8230; ideas are built up today with an &#8230; individualized content filtering &#8230; addition of functionality so that a user can provide a semicolon delimited set of filtering parameters &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/message-board-one-liners-content-filtering-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,29,37],"tags":[42,85,155,212,218,3374,257,5311,5309,380,409,431,432,5310,2532,629,652,1807,773,2505,932,4151,2976,997,2241,1122,1133,1159,1262,1675,1319,1345],"class_list":["post-70346","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-operating-system","category-tutorials","tag-htaccess","tag-apache","tag-body","tag-client","tag-code","tag-colour-coding","tag-content","tag-content-filtering","tag-data-filter","tag-email","tag-external-javascript","tag-filter","tag-filtering","tag-fnmatch","tag-include","tag-ip-address","tag-javascript","tag-link","tag-message-board","tag-name","tag-php","tag-prepend","tag-privacy","tag-programming","tag-require","tag-server","tag-share","tag-sms","tag-textarea","tag-textbox","tag-tutorial","tag-url"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/70346"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=70346"}],"version-history":[{"count":7,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/70346\/revisions"}],"predecessor-version":[{"id":70354,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/70346\/revisions\/70354"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=70346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=70346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=70346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}