Codice PHP:
<?php
/**
* Community Builder User Plugin: plug_countryandstatefield
* @version $Id$
* @package plug_countryandstatefield
* @subpackage countrystatefield.xml
* @author Kon Angelopoulos - ANGEK DESIGN
* @copyright (C) ANGEK DESIGN - [url]http://www.angekdesign.com.au,[/url] [url]http://www.joomlaextensions.com.au[/url]
* @license Limited [url]http://www.gnu.org/licenses/old-licenses/gpl-2.0.html[/url] GNU/GPL version 2
* @final 1.0 RC
*/
/** ensure this file is being included by a parent file */
if ( ! ( defined( '_VALID_CB' ) || defined( '_JEXEC' ) || defined( '_VALID_MOS' ) ) ) { die( 'Direct Access to this location is not allowed.' ); }
global $_PLUGINS;
$_PLUGINS->loadPluginGroup( 'user', array( (int) 1 ) );
$_PLUGINS->registerUserFieldTypes( array( 'countryselect' => 'CBfield_countryselect' ) );
$_PLUGINS->registerUserFieldTypes( array( 'stateselect' => 'CBfield_stateselect' ) );
$_PLUGINS->registerUserFieldParams();
class cbCountryState_base extends cbFieldHandler {
function cbCountryState_base( ) {
parent::cbFieldHandler();
cbimport( 'language.cbteamplugins' );
}
function fieldClass( &$field, &$user, &$postdata, $reason ) {
global $_GET;
parent::fieldClass( $field, $user, $postdata, $reason ); // performs spoofcheck.
if ( $function == 'savevalue' ) {
$this->prepareFieldDataSave($field,$user,$postdata,$reason);
$user->store();
}
return null;
}
function getCountryDropdownUI( $mode, $country, &$field, $mandatory, $task, $user,$fList, $fIcon ){
global $_CB_framework, $_CB_database, $ui;
$live_site = $_CB_framework->getCfg( 'live_site' );
$oReturn = null;
$result = null;
if ($user->id){
$query = "SELECT ".$field->name." , ".$field->name."_desc FROM #__comprofiler WHERE user_id=". $user->id;
$_CB_database->setQuery($query);
$result = $_CB_database->loadObjectList();
$countryCodeName = $field->name;
$countryDescName = $field->name."_desc";
}
if ($result){
$countryLong = $result[0]->$countryDescName;
$country = $result[0]->$countryCodeName;
if ($fIcon == '1'){
$display = "<div id=\"cflag\"><img src=\"".$live_site."/components/com_comprofiler/plugin/user/plug_countryandstatefield/images/".strtolower($country).".png\" />".$countryLong."</div>";
}
else {
$display = "<div>".$countryLong."</div>";
}
}
$oReturn = "<style>.imgFlag {margin-top:2px;margin-left:5px;padding-left:20px;}</style>";
switch ( $task ){
case 'search':
//$country = null;
if ($mode == 2) return;
case 'edit':
case 'register':
$oReturn .= '
<input type="hidden" value="countrySelect" name="cs_config_country_field" id="cs_config_country_field">
<input type="hidden" value="'.$fList.'" name="showFlags" id="showFlags">
<input type="hidden" value="stateSelect" name="cs_config_state_field" id="cs_config_state_field">
<input type="hidden" value="countryDefault" name="cs_config_country_default" id="cs_config_country_default">
<input type="hidden" value="stateDefault" name="cs_config_state_default" id="cs_config_state_default">
<input type="hidden" value="'.$country.'" name="countryDefault" id="countryDefault">
<div>
<select id="countrySelect" name="'.$field->name.'" onchange="updateState(this.id)"></select>
'.$mandatory.'</div>';
break;
case 'profile':
case 'list':
$oReturn .= $display;
break;
}
return $oReturn;
}
function getStateDropdownUI( $mode, $state, &$field, $mandatory, $task, $user ){
global $_CB_framework, $_CB_database;
$live_site = $_CB_framework->getCfg( 'live_site' );
// $options = ($madatory ? "required:true, " : "");
$output = null;
$result = null;
if ($user->id){
$query = "SELECT ".$field->name." FROM #__comprofiler WHERE user_id=".$user->id. " LIMIT 1";
$_CB_database->setQuery($query);
$result = $_CB_database->loadResult();
}
if ($result){
$state = $result;
}
if ($task != 'list'){
$output = '<input type="hidden" value="'.$state.'" name="stateDefault" id="stateDefault">';
}
switch ( $task ) {
case 'search':
if ($mode == 2){
return;
}
case 'edit':
case 'register':
$output .= '<script type="text/javascript" src="'. $live_site . '/components/com_comprofiler/plugin/user/plug_countryandstatefield/js/states.js"></script>
<script type="text/javascript" src="'. $live_site . '/components/com_comprofiler/plugin/user/plug_countryandstatefield/js/countries.js"></script>
<script type="text/javascript" src="'. $live_site . '/components/com_comprofiler/plugin/user/plug_countryandstatefield/js/country_state.js"></script>';
$output .= '<div><select id="stateSelect" name="'.$field->name.'"></select>'.$mandatory.'</div><SCRIPT type="text/javascript">initCountry("'.$live_site.'"); </SCRIPT>';
break;
case 'profile':
case 'list':
$output = "<div>".$state."</div>";
break;
}
return $output;
}
}
class CBfield_stateselect extends cbCountryState_base {
function fieldClass( &$field, &$user, &$postdata, $reason ) {
parent::fieldClass( $field, $user, $postdata, $reason );
$this->prepareFieldDataSave($field,$user,$postdata,$reason);
$user->store();
return null;
}
function validate( &$field, &$user, $columnName, &$value, &$postdata, $reason ) {
$validated = parent::validate( $field, $user, $columnName, $value, $postdata, $reason );
if ($validated && ($value !=='' ) && ( $value !== null ) ) {
//$validated = preg_match('/^[A-Za-z- _\']+$/', $value);
$validated = preg_match('/^[A-Za-z-0-9 _(),:\'\x{00C0}-\x{00FF}]+$/mu', $value);
if ($validated) {
if ($field->type != 'stateselect'){
$this->_setValidationError ($field, $user, $reason, "Unauthorized Input");
$validated = false;
}
}
else {
$this->_setValidationError( $field, $user, $reason, "Input not authorized" );
}
}
return $validated;
}
function getField(&$field, &$user, $output, $reason, $list_compare_types ) {
global $_CB_framework;
$this->_loadSettings($field);
$mode = $_CB_framework->_ui;
$required = $this->_isRequired($field, $user, $reason);
switch ($output){
case 'html':
$oReturn = $this->getStateDropdownUI( $mode, $this->defState, $field, $this->_fieldIconsHtml( $field, $user, 'htmledit', $reason, 'select', '', null, '', array(), true, $required ), $reason, $user );
break;
case 'rss':
$oReturn = $this->getStateDropdownUI( $mode, $this->defState, $field, $required, $reason, $user );
break;
default:
$oReturn = $this->getStateDropdownUI( $mode, $this->defState, $field, $this->_fieldIconsHtml( $field, $user, 'htmledit', $reason, 'select', '', null, '', array(), true, $required ), $reason, $user );
break;
}
return $oReturn;
}
function _loadSettings( &$field) {
$this->defState = $field->params->get('defaultState','1');
}
}
class CBfield_countryselect extends cbCountryState_base {
function fieldClass( &$field, &$user, &$postdata, $reason ) {
parent::fieldClass( $field, $user, $postdata, $reason );
$this->prepareFieldDataSave($field,$user,$postdata,$reason);
$user->store();
return null;
}
function validate( &$field, &$user, $columnName, &$value, &$postdata, $reason ) {
$validated = parent::validate( $field, $user, $columnName, $value, $postdata, $reason );
if ($validated && ($value !=='' ) && ( $value !== null ) ) {
//$validated = preg_match('/^[A-Za-z- _\']+$/', $value);
$validated = preg_match('/^[A-Za-z-0-9 _(),:\'\x{00C0}-\x{00FF}]+$/mu', $value);
if ($validated) {
if ($field->type != 'countryselect'){
$this->_setValidationError ($field, $user, $reason, "Unauthorized Input");
$validated = false;
}
if (sizeof($value) > 2){
$this->_setValidationError ($field, $user, $reason, "Unauthorized Input");
$validated = false;
}
}
else {
$this->_setValidationError( $field, $user, $reason, "Input not authorized" );
}
}
return $validated;
}
function getField(&$field, &$user, $output, $reason, $list_compare_types ) {
global $_CB_framework;
$this->_loadSettings($field);
$required = $this->_isRequired($field, $user, $reason);
$mode = $_CB_framework->_ui;
switch ($output){
case 'html':
$oReturn = $this->getCountryDropdownUI( $mode, $this->defCountry, $field, $this->_fieldIconsHtml( $field, $user, 'htmledit', $reason, 'select', '', null, '', array(), true, $required ), $reason, $user,$this->flagList,$this->flagIcon );
break;
case 'rss':
$oReturn = $this->getCountryDropdownUI( $mode, $this->defCountry, $field, $required, $reason, $user ,$this->flagList,$this->flagIcon);
break;
default:
$oReturn = $this->getCountryDropdownUI( $mode, $this->defCountry, $field, $this->_fieldIconsHtml( $field, $user, 'htmledit', $reason, 'select', '', null, '', array(), true, $required ), $reason, $user,$this->flagList,$this->flagIcon );
break;
}
return $oReturn;
}
function _loadSettings( &$field) {
$this->defCountry = $field->params->get('defaultCountry','1');
$this->flagList = $field->params->get('flagList','1');
$this->flagIcon = $field->params->get('flagIcon','1');
}
}
?>
Sarebbe questo