/**
* 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.
?>
rain coat..
(1 viewing) (1) Guest
 | | |
|
TOPIC: rain coat..
|
|
|
|
rain coat.. 1 Year, 9 Months ago
|
Karma: 0
|
|
berhubu cuaca yang ga pernah menentu
ada yang bisa kasih review ga soal jas hujan
mis: mulai dari harga,jenis bahan yg di gunakan, toko yang menjual dll.
soalnya pernah beli beberapa kali
belum nemu yang cukup handal untuk menangkis
air yang masuk kedalam tubuh
thx yah
|
|
|
|
Last Edit: 2010/05/14 18:11 By adamhadziq.
|
|
|
|
Re:rain coat.. 1 Year, 9 Months ago
|
Karma: 0
|
|
wah mas momod temen saya ada yang tau persis tuh kbetulan jualan jg, nanti deh coba saya suruh masuk sisni biar bisa jelasin lebih detil
|
|
|
|
|
|
|
|
Re:rain coat.. 1 Year, 9 Months ago
|
Karma: 0
|
|
wah om momod...
kebetulan saya pernah beli raincoat dan sampai sekarang masih saya pakai. saya beli di salah satu FO didaerah bogor dengan harga murah meriah 50rb saja dengan merek naga mas.
menurut saya, setelah saya pakai raincoat tsb, tidak tembus air sama sekali. karena bagian resletingnya dilapisi oleh plastik lagi, sehingga air nggak bisa masuk kesela2 resleting.
mungkin info saya bisa berguna....
|
|
|
|
|
|
|
|
Re:rain coat.. 1 Year, 9 Months ago
|
Karma: 0
|
kalo saya pake jas hujan yang bocor...
udah mahal bocor pula... capee deehh

|
|
|
|
|
|
|
|
Re:rain coat.. 1 Year, 8 Months ago
|
Karma: 0
|
|
botack vedder wrote:
wah om momod...
kebetulan saya pernah beli raincoat dan sampai sekarang masih saya pakai. saya beli di salah satu FO didaerah bogor dengan harga murah meriah 50rb saja dengan merek naga mas.
menurut saya, setelah saya pakai raincoat tsb, tidak tembus air sama sekali. karena bagian resletingnya dilapisi oleh plastik lagi, sehingga air nggak bisa masuk kesela2 resleting.
mungkin info saya bisa berguna....
boleh tau gak bro, belinya di FO mana, krn murah tuh dan bagus jg kualitasnya hehehe
|
|
|
|
|
|
|
|
Re:rain coat.. 1 Year, 8 Months ago
|
Karma: 0
|
|
korbantabraklari wrote:
botack vedder wrote:
wah om momod...
kebetulan saya pernah beli raincoat dan sampai sekarang masih saya pakai. saya beli di salah satu FO didaerah bogor dengan harga murah meriah 50rb saja dengan merek naga mas.
menurut saya, setelah saya pakai raincoat tsb, tidak tembus air sama sekali. karena bagian resletingnya dilapisi oleh plastik lagi, sehingga air nggak bisa masuk kesela2 resleting.
mungkin info saya bisa berguna....
boleh tau gak bro, belinya di FO mana, krn murah tuh dan bagus jg kualitasnya hehehe
FO di bogor bro....kebetulan lagi iseng2 jalan2 kebogor nemu deh tuh raincoat.
|
|
|
|
|
|
 | | |