Community Page
Traveller Blog
Login
Message Box
You are not logged in.
Notification
Members Online
NoneUser Statistics
Registered users : 38802Online : 1471
Guest : 1471
Members : 0
Online members
No members online!
Last 5 users
PUJI RAHAYU
ardee
some_1s
eldefripanai
Phides
/**
* ProtectFields Plugin:
* Denies users from changing fields. All changes by non-admins to the field are discarded and a JS warning is given to user.
* @author elesus and Beat
* @licence GNU GPL
* @email elesus@gmail.com
*/
$_PLUGINS->registerFunction( 'onBeforeUserUpdate','protectFields', 'getProtectFieldsTab' );
/**
* Protection Tab Class for handling the CB tab api
* @package Community Builder
* @author JoomlaJoe and Beat
*/
class getProtectFieldsTab extends cbTabHandler {
/**
* Constructor
*/
function getProtectFieldsTab() {
$this->cbTabHandler();
}
/**
* gets object with name, title and table corresponding to a field id
* @access private
* @param int fieldId
* @returns mixed : either object, or null if no match
*/
function getFieldInfo($protectFieldId) {
global $database;
if ($protectFieldId == "0") return null;
$query = "SELECT `name`,`table`,`title`,`type` FROM #__comprofiler_fields WHERE published=1 AND fieldid=".$protectFieldId;
$database->setQuery($query);
$protectObj = null;
$database->loadObject($protectObj);
return $protectObj;
}
/**
* Discards all changes the user makes to email field. Admins are allowed to change email addresses.
* Method is called before user data is stored in the database
* @access private
* @param object holds the core mambo user data
* @param object holds the community builder user data
* @param object holds the field information
* @return boolean true check ok no changes, FALSE error raised
*/
function checkMyFieldChanges(&$user,&$cbUser,$protectObj) {
global $database, $my, $_PLUGINS;
if ($protectObj === null) return true;
$params = $this->params;
$alertMsg = htmlspecialchars($params->get('alertMsg', '0'));
$protectFieldName = $protectObj->name;
$protectTable = $protectObj->table;
$protectTitle = $protectObj->title;
//if ($my->gid != 2) { // admins can change their profile unrestricted from the backend
if ($protectTable != "#__comprofiler") {
$query = "SELECT `".$database->getEscaped($protectFieldName)."` FROM #__users WHERE id=".$user->id." LIMIT 1";
$pObject =& $user;
} else {
$query = "SELECT `".$database->getEscaped($protectFieldName)."` FROM #__comprofiler WHERE id=".$user->id." LIMIT 1";
$pObject =& $cbUser;
}
$database->setQuery($query);
$pOriginalField = $database->loadResult(); //The field before the change was attempted
if ($pObject->$protectFieldName != $pOriginalField) {
$_PLUGINS->raiseError(0);
$_PLUGINS->_setErrorMSG(htmlspecialchars(getLangDefinition($protectTitle))." ".$alertMsg);
$pObject->$protectFieldName = $pOriginalField;
return false;
}
//}
return true;
}
/**
* generates javascript code to check and flag at browser end
* @access private
* @param object tab reflecting the tab database entry
* @param object mosUser reflecting the user being displayed
* @param object holds the field information
*/
function getEditTabJScode(&$user,$protectObj) {
if ($protectObj == null) return;
$params = $this->params;
$alertMsg = $params->get('alertMsg', '0');
$protectFieldName = $protectObj->name;
$protectTitle = $protectObj->title;
$protectValue = $user->$protectFieldName;
//Type matters ;)
$protectType = $protectObj->type;
//We need to add square brackets for accessing select, multiselect and mulitcheckbox in JS
$addBrackets = "";
if($protectType == "multiselect" || $protectType == "select" || $protectType == "multicheckbox"){$addBrackets = "[]";}
$this->_addValidationJS( "\t if (getInputValue(me['".htmlspecialchars($protectFieldName).$addBrackets."'])!=getInputDefaultValue(me['".htmlspecialchars($protectFieldName).$addBrackets."'])){\n"
."\t errorMSG += \"".html_entity_decode(getLangDefinition($protectTitle)." ".$alertMsg)."\\n\"\n"
."\t me['".htmlspecialchars($protectFieldName).$addBrackets."'].style.background = \"red\";\n"
."\t setInputValue(me['".htmlspecialchars($protectFieldName).$addBrackets."'],getInputDefaultValue(me['".htmlspecialchars($protectFieldName).$addBrackets."']));\n"
."\t iserror=1;\n"
."\t} else {\n"
."\t me['".htmlspecialchars($protectFieldName).$addBrackets."'].style.background = cbDefaultFieldBackground;\n"
."\t}\n");
// also see event: 'onBeforeUserUpdate' : must also be implemented as above to avoid changes with JS off.
}
/**
* Discards all changes the user makes to email field. Admins are allowed to change email addresses.
* Method is called before user data is stored in the database
* @param array holds the core mambo user data
* @param array holds the community builder user data
*/
function protectFields(&$user,&$cbUser) {
$params = $this->params;
$protectFieldId = $params->get('protect1', '0');
$result1 = $this->checkMyFieldChanges($user, $cbUser, $this->getFieldInfo($protectFieldId));
$protectFieldId = $params->get('protect2', '0');
$result2 = $this->checkMyFieldChanges($user, $cbUser, $this->getFieldInfo($protectFieldId));
$protectFieldId = $params->get('protect3', '0');
$result3 = $this->checkMyFieldChanges($user, $cbUser, $this->getFieldInfo($protectFieldId));
$protectFieldId = $params->get('protect4', '0');
$result4 = $this->checkMyFieldChanges($user, $cbUser, $this->getFieldInfo($protectFieldId));
return result1 && result2 && restult3 && result4;
}
/**
* Generates the HTML to display the user edit tab
* @param object tab reflecting the tab database entry
* @param object mosUser reflecting the user being displayed
* @param int 1 for front-end, 2 for back-end
* @returns mixed : either string HTML for tab content, or false if ErrorMSG generated
*/
function getEditTab($tab,$user,$ui) {
if ($ui == 2) return ""; // don't protect backend user edits.
$params = $this->params;
//Functions used in every check. So let's include them here only once.
$this->_addValidationJS( "\t // ===================================================================\n"
."\t //JavaScript functions\n"
."\t // Author: Matt Kruse \n"
."\t // WWW: http://www.mattkruse.com/\n"
."\t // ===================================================================\n"
."\t //-------------------------------------------------------------------\n"
."\t // isArray(obj)\n"
."\t // Returns true if the object is an array, else false\n"
."\t //-------------------------------------------------------------------\n"
."\t function isArray(obj){return(typeof(obj.length)==\"undefined\")?false:true;}\n"
."\t //-------------------------------------------------------------------\n"
."\t // getInputValue(input_object[,delimiter])\n"
."\t // Get the value of any form input field\n"
."\t // Multiple-select fields are returned as comma-separated values, or\n"
."\t // delmited by the optional second argument\n"
."\t // (Doesn't support input types: button,file,reset,submit)\n"
."\t //-------------------------------------------------------------------\n"
."\t function getInputValue(obj,delimiter) {\n"
."\t var use_default=(arguments.length>2)?arguments[2]:false;\n"
."\t if (isArray(obj) && (typeof(obj.type)==\"undefined\")) {\n"
."\t var values=new Array();\n"
."\t for(var i=0;i0)?obj.options[obj.selectedIndex].value:null;\n"
."\t case 'select-multiple': \n"
."\t if (obj.options==null) { return null; }\n"
."\t var values=new Array();\n"
."\t for(var i=0;i1)?arguments[1]:false;\n"
."\t if(isArray(obj)&&(typeof(obj.type)==\"undefined\")){\n"
."\t for(var i=0;iget('protect1', '0');
$this->getEditTabJScode($user, $this->getFieldInfo($protectFieldId));
$protectFieldId = $params->get('protect2', '0');
$this->getEditTabJScode($user, $this->getFieldInfo($protectFieldId));
$protectFieldId = $params->get('protect3', '0');
$this->getEditTabJScode($user, $this->getFieldInfo($protectFieldId));
$protectFieldId = $params->get('protect4', '0');
$this->getEditTabJScode($user, $this->getFieldInfo($protectFieldId));
return "";
}
} // end class getProtectFieldsTab.
?>
![]() |
|
Welcome, Guest
Please Login or Register. Lost Password? |
| RULES OF FORUM 05/05/2010 | lulut _ Topik Diskusi harus didominasi oleh topik travelling dan Kuliner sesuai dengan tujuan dari Grup ini yaitu Traveller. Diskusi harus bebas dari SARA dan Politik. Opini dalam Diskusi harus didasarkan oleh Keilmuan dan bukan atas dasar sentimen ketidaksukaan atas sebuah peristiwa atau hal-hal yang b [ ... ] |
| KANG OCON, MODERATOR TRAVELLER 03/05/2010 | lulut _ Halo AOOTB'ers  Forum travelling ini digawangi olen Sonson Nursollih alias Kang Ocon (sebutan dari para backpakers). Lulusan Diskomvis STISI Bandung ini, mulai serius dan rutin untuk jalan-jalan sejak tahun 2004, dan pada tahun yang sama menjadi moderator milis Indonesia Backpackers Club. Pada t [ ... ] |
| Other Announcement |
|
||||
|---|---|---|---|---|
| Forum | Topics | Replies | Last Post | |
|
|
Disini Anda bebas berdiskusi berbagai topik yang berkaitan dengan travelling. Informasi terkini mengenai tiket penerbangan, travel warning, membuat paspor, visa atau visa on arrival, tips bepergian atau topik seperti isu lingkungan yang berkaitan
|
3 | 11 |
by danicha.cheche | 07/02/2010 12:25
|
|
|
Semua tempat ini indah, tergantung cara kita melihat. Puluhan mungkin hingga ribuan tempat yang bisa di jelajahi, disini Anda bebas berdiskusi mengenai tempat di Indonesia untuk di diperbincangkan
|
2 | 1 |
by serigalautis | 08/17/2010 19:27
|
|
|
Dimana hotel yang murah?? seperti apa penginapan ala backpacker?? murahkah resort di pulau terpencil?? apakah aman menginap di daerah pinggiran kota?? Silahkan berdiskusi semua topik yang berkaitan dengan penginapan atau hotel di sini.
|
3 | 2 |
by kangocon | 05/12/2010 19:22
|
|
|
Lebih nyaman mana naik bus atau kereta ??, murah dengan pesawat atau melalui perjalanan darat ? Disini Anda bebas mendiskusikan apapun yang berkaitan cara pergi ke dan dari satu.
|
0 | 0 | No Posts |
|
|
Sayang rasanya kalau perjalanan Anda tanpa sebuah catatan yang bisa di kenang sebagai bagian dari liburan Anda. Tulis cerita perjalanan yang bisa menginspirasi orang untuk mengikuti perjalanan seperti yang Anda lakukan.
|
1 | 2 |
by Kang Ocon | 05/12/2010 14:47
|
|
||||
|---|---|---|---|---|
| Forum | Topics | Replies | Last Post | |
|
|
Tempat diskusi mengenai semua hal yang berkaitan dengan travelling tujuan Asia dan Australia
|
25 | 28 |
by rian_tizzy | 11/16/2010 16:20
|
|
|
Tempat diskusi mengenai semua hal yang berkaitan dengan travelling tujuan Eropa
|
4 | 2 |
by kangocon | 07/27/2010 16:45
|
|
|
Tempat diskusi mengenai semua hal yang berkaitan dengan travelling tujuan Amerika
|
1 | 2 |
by usahlara | 05/12/2010 14:11
|
|
|
Tempat diskusi mengenai semua hal yang berkaitan dengan travelling tujuan Afrika
|
0 | 0 | No Posts |
|
||||
|---|---|---|---|---|
| Forum | Topics | Replies | Last Post | |
|
|
Jalan-jalan ngga bakalan seru kalau tidak mencoba menu lokal, forum travel kuliner adalah tempat yang tepat buat Anda pengemar makanan dan minuman. Silahkan diskusi dengan topik yang berkaitan dengan wisata kuliner.
|
13 | 19 |
by kangocon | 07/20/2010 09:23
|
|
||||
|---|---|---|---|---|
| Forum | Topics | Replies | Last Post | |
|
|
Mau cari info soal peralatan travelling?? atau Anda mau tukar jual peralatan travelling Anda yang sudah tidak terpakai?? silahkan posting apa yang Anda cari atau Anda perlukan di sini.
|
2 | 3 |
by danicha.cheche | 06/04/2010 09:48
|
|
||||
|---|---|---|---|---|
| Forum | Topics | Replies | Last Post | |
|
|
Anda ingin mencari tahu tentang trip yang akan di adakan dalam waktu dekat ini?? atau Anda memerlukan informasi mengenai berbagai kegiatan seperti workshop, seminar, lomba atau apaun yang berkaitan dengan travelling disinilah tempat yang tepat untuk Anda.
|
3 | 2 |
by kangocon | 07/20/2010 06:33
|
|
|||
|---|---|---|---|
|
Members Statistics: » Total Users: 38802 » Latest Member: some_1s » User List |
|
Forum Statistics: Total Messages: 129 Total Subjects: 57 Total Sections: 5 Total Categories: 33 Today Open: 0 Yesterday Open: 0 Today Total Answer: 0 Yesterday Total Answer: 0 » View Recent Posts » More About Stats |

