Skip to content

Commit

Permalink
Improved - support IP v6
Browse files Browse the repository at this point in the history
Fixed - issue with list autocomplete on tomSelect Layout

(cherry picked from commit d3f77e33b85fabd78dea0b006e311eb02cd14ee4)
  • Loading branch information
andiamine committed Jan 19, 2025
1 parent b12d17e commit dfa2885
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 38 deletions.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(11)","null":"NO","default":0},{"name":"record_id","type":"int(11)","null":"NO","default":0},{"name":"section_id","type":"int(11)","null":"NO","default":0},{"name":"type_id","type":"int(11)","null":"NO","default":0},{"name":"comment_id","type":"int(11)","null":"YES","default":0},{"name":"field_id","type":"int(11)","null":"YES","default":0},{"name":"event","type":"tinyint(3)","null":"NO","default":0},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"ip","type":"varchar(16)","null":"NO","default":"Not detected"},{"name":"params","type":"text","null":"YES","default":null}],"primary":"id","keys":{"idx_record":{"type":"KEY","fields":"`record_id`"},"idx_section":{"type":"KEY","fields":"`section_id`"},"idx_type":{"type":"KEY","fields":"`type_id`"}},"engine":"MyISAM"}
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(11)","null":"NO","default":0},{"name":"record_id","type":"int(11)","null":"NO","default":0},{"name":"section_id","type":"int(11)","null":"NO","default":0},{"name":"type_id","type":"int(11)","null":"NO","default":0},{"name":"comment_id","type":"int(11)","null":"YES","default":0},{"name":"field_id","type":"int(11)","null":"YES","default":0},{"name":"event","type":"tinyint(3)","null":"NO","default":0},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"ip","type":"varchar(40)","null":"NO","default":"Not detected"},{"name":"params","type":"text","null":"YES","default":null}],"primary":"id","keys":{"idx_record":{"type":"KEY","fields":"`record_id`"},"idx_section":{"type":"KEY","fields":"`section_id`"},"idx_type":{"type":"KEY","fields":"`type_id`"}},"engine":"MyISAM"}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(11)","null":"NO","default":0},{"name":"record_id","type":"int(11)","null":"NO","default":0},{"name":"type_id","type":"int(11)","null":"NO","default":0},{"name":"username","type":"varchar(255)","null":"NO","default":""},{"name":"ctime","type":"datetime","null":"YES","default":"0000-00-00 00:00:00"},{"name":"version","type":"int(10)","null":"NO","default":0},{"name":"record_serial","type":"longtext","null":"NO","default":null},{"name":"values_serial","type":"longtext","null":"NO","default":null},{"name":"category_serial","type":"longtext","null":"NO","default":null},{"name":"tags_serial","type":"longtext","null":"YES","default":null},{"name":"ip","type":"varchar(20)","null":"NO","default":""}],"primary":"id","keys":{"idx_rec":{"type":"KEY","fields":"`record_id`"}},"engine":"MyISAM"}
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(11)","null":"NO","default":0},{"name":"record_id","type":"int(11)","null":"NO","default":0},{"name":"type_id","type":"int(11)","null":"NO","default":0},{"name":"username","type":"varchar(255)","null":"NO","default":""},{"name":"ctime","type":"datetime","null":"YES","default":"0000-00-00 00:00:00"},{"name":"version","type":"int(10)","null":"NO","default":0},{"name":"record_serial","type":"longtext","null":"NO","default":null},{"name":"values_serial","type":"longtext","null":"NO","default":null},{"name":"category_serial","type":"longtext","null":"NO","default":null},{"name":"tags_serial","type":"longtext","null":"YES","default":null},{"name":"ip","type":"varchar(40)","null":"NO","default":""}],"primary":"id","keys":{"idx_rec":{"type":"KEY","fields":"`record_id`"}},"engine":"MyISAM"}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"record_id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(10)","null":"NO","default":0},{"name":"comment","type":"text","null":"YES","default":null},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"published","type":"tinyint(1)","null":"NO","default":0},{"name":"email","type":"varchar(200)","null":"NO","default":""},{"name":"name","type":"varchar(50)","null":"NO","default":""},{"name":"langs","type":"varchar(10)","null":"NO","default":"en-GB"},{"name":"access","type":"tinyint(1)","null":"NO","default":0},{"name":"rate","type":"int(11)","null":"NO","default":0},{"name":"parent_id","type":"int(10)","null":"NO","default":0},{"name":"root_id","type":"int(11)","null":"NO","default":0},{"name":"level","type":"tinyint(3)","null":"NO","default":0},{"name":"hide","type":"tinyint(1)","null":"NO","default":0},{"name":"params","type":"text","null":"YES","default":null},{"name":"attachment","type":"text","null":"YES","default":null},{"name":"attach_hit","type":"int(10)","null":"NO","default":0},{"name":"ip","type":"varchar(16)","null":"NO","default":""},{"name":"lft","type":"int(11)","null":"NO","default":0},{"name":"rgt","type":"int(11)","null":"NO","default":0},{"name":"section_id","type":"int(11)","null":"NO","default":0},{"name":"private","type":"tinyint(1)","null":"NO","default":0},{"name":"rate_num","type":"int(11)","null":"NO","default":0},{"name":"type_id","type":"int(11)","null":"NO","default":0}],"primary":"id","keys":{"idx_publish":{"type":"KEY","fields":"`published`"},"idx_record":{"type":"KEY","fields":"`record_id`"},"idx_user":{"type":"KEY","fields":"`user_id`"},"idx_section":{"type":"KEY","fields":"`section_id`"},"idx_lr":{"type":"KEY","fields":"`lft`,`rgt`"},"idx_access":{"type":"KEY","fields":"`access`"}},"engine":"MyISAM"}
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"record_id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(10)","null":"NO","default":0},{"name":"comment","type":"text","null":"YES","default":null},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"published","type":"tinyint(1)","null":"NO","default":0},{"name":"email","type":"varchar(200)","null":"NO","default":""},{"name":"name","type":"varchar(50)","null":"NO","default":""},{"name":"langs","type":"varchar(10)","null":"NO","default":"en-GB"},{"name":"access","type":"tinyint(1)","null":"NO","default":0},{"name":"rate","type":"int(11)","null":"NO","default":0},{"name":"parent_id","type":"int(10)","null":"NO","default":0},{"name":"root_id","type":"int(11)","null":"NO","default":0},{"name":"level","type":"tinyint(3)","null":"NO","default":0},{"name":"hide","type":"tinyint(1)","null":"NO","default":0},{"name":"params","type":"text","null":"YES","default":null},{"name":"attachment","type":"text","null":"YES","default":null},{"name":"attach_hit","type":"int(10)","null":"NO","default":0},{"name":"ip","type":"varchar(40)","null":"NO","default":""},{"name":"lft","type":"int(11)","null":"NO","default":0},{"name":"rgt","type":"int(11)","null":"NO","default":0},{"name":"section_id","type":"int(11)","null":"NO","default":0},{"name":"private","type":"tinyint(1)","null":"NO","default":0},{"name":"rate_num","type":"int(11)","null":"NO","default":0},{"name":"type_id","type":"int(11)","null":"NO","default":0}],"primary":"id","keys":{"idx_publish":{"type":"KEY","fields":"`published`"},"idx_record":{"type":"KEY","fields":"`record_id`"},"idx_user":{"type":"KEY","fields":"`user_id`"},"idx_section":{"type":"KEY","fields":"`section_id`"},"idx_lr":{"type":"KEY","fields":"`lft`,`rgt`"},"idx_access":{"type":"KEY","fields":"`access`"}},"engine":"MyISAM"}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"filename","type":"varchar(55)","null":"NO","default":""},{"name":"realname","type":"varchar(255)","null":"NO","default":""},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"saved","type":"tinyint(1)","null":"NO","default":0},{"name":"params","type":"text","null":"YES","default":null},{"name":"section_id","type":"int(11)","null":"YES","default":0},{"name":"record_id","type":"int(11)","null":"YES","default":0},{"name":"type_id","type":"int(11)","null":"YES","default":0},{"name":"field_id","type":"int(11)","null":"YES","default":0},{"name":"user_id","type":"int(11)","null":"NO","default":0},{"name":"ext","type":"varchar(10)","null":"NO","default":""},{"name":"fullpath","type":"text","null":"YES","default":null},{"name":"hits","type":"int(11)","null":"NO","default":0},{"name":"size","type":"int(11)","null":"NO","default":0},{"name":"ip","type":"varchar(20)","null":"NO","default":"Not detected"},{"name":"width","type":"int(11)","null":"YES","default":0},{"name":"height","type":"int(11)","null":"YES","default":0},{"name":"rating","type":"double","null":"YES","default":null},{"name":"rating_nums","type":"int(11)","null":"YES","default":0},{"name":"comments","type":"text","null":"YES","default":null},{"name":"comment_num","type":"int(11)","null":"YES","default":0},{"name":"title","type":"text","null":"YES","default":null},{"name":"description","type":"text","null":"YES","default":null},{"name":"views","type":"int(11)","null":"YES","default":0},{"name":"default","type":"tinyint(3)","null":"NO","default":0}],"primary":"id","keys":{"idx_name":{"type":"KEY","fields":"`filename`"},"idx_record":{"type":"KEY","fields":"`record_id`"}},"engine":"MyISAM"}
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"filename","type":"varchar(55)","null":"NO","default":""},{"name":"realname","type":"varchar(255)","null":"NO","default":""},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"saved","type":"tinyint(1)","null":"NO","default":0},{"name":"params","type":"text","null":"YES","default":null},{"name":"section_id","type":"int(11)","null":"YES","default":0},{"name":"record_id","type":"int(11)","null":"YES","default":0},{"name":"type_id","type":"int(11)","null":"YES","default":0},{"name":"field_id","type":"int(11)","null":"YES","default":0},{"name":"user_id","type":"int(11)","null":"NO","default":0},{"name":"ext","type":"varchar(10)","null":"NO","default":""},{"name":"fullpath","type":"text","null":"YES","default":null},{"name":"hits","type":"int(11)","null":"NO","default":0},{"name":"size","type":"int(11)","null":"NO","default":0},{"name":"ip","type":"varchar(40)","null":"NO","default":"Not detected"},{"name":"width","type":"int(11)","null":"YES","default":0},{"name":"height","type":"int(11)","null":"YES","default":0},{"name":"rating","type":"double","null":"YES","default":null},{"name":"rating_nums","type":"int(11)","null":"YES","default":0},{"name":"comments","type":"text","null":"YES","default":null},{"name":"comment_num","type":"int(11)","null":"YES","default":0},{"name":"title","type":"text","null":"YES","default":null},{"name":"description","type":"text","null":"YES","default":null},{"name":"views","type":"int(11)","null":"YES","default":0},{"name":"default","type":"tinyint(3)","null":"NO","default":0}],"primary":"id","keys":{"idx_name":{"type":"KEY","fields":"`filename`"},"idx_record":{"type":"KEY","fields":"`record_id`"}},"engine":"MyISAM"}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"record_id","type":"int(10)","null":"NO","default":0},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"user_id","type":"int(10)","null":"NO","default":0},{"name":"ip","type":"varchar(16)","null":"NO","default":""},{"name":"section_id","type":"int(11)","null":"YES","default":0}],"primary":"id","keys":{"idx_record":{"type":"KEY","fields":"`record_id`"},"idex_user":{"type":"KEY","fields":"`section_id`,`user_id`"}},"engine":"MyISAM"}
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"record_id","type":"int(10)","null":"NO","default":0},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"user_id","type":"int(10)","null":"NO","default":0},{"name":"ip","type":"varchar(40)","null":"NO","default":""},{"name":"section_id","type":"int(11)","null":"YES","default":0}],"primary":"id","keys":{"idx_record":{"type":"KEY","fields":"`record_id`"},"idex_user":{"type":"KEY","fields":"`section_id`,`user_id`"}},"engine":"MyISAM"}
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@
},
{
"name": "ip",
"type": "varchar(20)",
"type": "varchar(40)",
"null": "NO",
"default": ""
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(10)","null":"NO","default":0},{"name":"ref_id","type":"int(10)","null":"NO","default":0},{"name":"vote","type":"int(10)","null":"NO","default":0},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"ip","type":"varchar(16)","null":"NO","default":""},{"name":"ref_type","type":"varchar(25)","null":"NO","default":""},{"name":"section_id","type":"int(11)","null":"YES","default":0},{"name":"idx","type":"int(11)","null":"YES","default":0}],"primary":"id","keys":{"record":{"type":"KEY","fields":"`ref_id`"},"user":{"type":"KEY","fields":"`user_id`"}},"engine":"MyISAM"}
{"fields":[{"name":"id","type":"int(10)","null":"NO","default":0},{"name":"user_id","type":"int(10)","null":"NO","default":0},{"name":"ref_id","type":"int(10)","null":"NO","default":0},{"name":"vote","type":"int(10)","null":"NO","default":0},{"name":"ctime","type":"datetime","null":"YES","default":null},{"name":"ip","type":"varchar(40)","null":"NO","default":""},{"name":"ref_type","type":"varchar(25)","null":"NO","default":""},{"name":"section_id","type":"int(11)","null":"YES","default":0},{"name":"idx","type":"int(11)","null":"YES","default":0}],"primary":"id","keys":{"record":{"type":"KEY","fields":"`ref_id`"},"user":{"type":"KEY","fields":"`user_id`"}},"engine":"MyISAM"}
6 changes: 4 additions & 2 deletions components/com_joomcck/fields/email/tmpl/output/default.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

use Joomcck\Layout\Helpers\Layout;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;

defined('_JEXEC') or die();
Expand All @@ -24,9 +25,10 @@
if ($params->get('params.qr_code', 0))
{
$width = $this->params->get('params.qr_width', 60);
$src = 'http://chart.apis.google.com/chart?chs=' . $width . 'x' . $width . '&cht=qr&chld=L|0&chl=' . $this->value;

echo \Joomla\CMS\HTML\HTMLHelper::image($src, \Joomla\CMS\Language\Text::_('E_QRCODE'), array('class' => 'qr-image', 'width' => $width, 'height' => $width, 'align' => 'absmiddle'));
$src = 'https://chart.apis.google.com/chart?chs=' . $width . 'x' . $width . '&cht=qr&chld=L|0&chl=' . $this->value;

echo "<img class='qr-image' height='$width' width='$width' src='$src' alt='". Text::_('E_QRCODE')."' />";
}

echo $fvalue;
Expand Down
75 changes: 47 additions & 28 deletions components/com_joomcck/fields/listautocomplete/listautocomplete.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* a component for Joomla! 1.7 - 2.5 CMS (http://www.joomla.org)
* Author Website: https://www.joomcoder.com/
* @copyright Copyright (C) 2012 joomcoder (https://www.joomcoder.com). All rights reserved.
* @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
* @license GNU/GPL http://www.gnu.org/copyleft/gpl.html
*/

use Joomla\Utilities\ArrayHelper;
Expand All @@ -18,40 +18,53 @@ class JFormFieldCListautocomplete extends CFormFieldSelectable
public function getInput()
{

$options['only_suggestions'] = $this->params->get('params.only_values', 0);
$options['suggestion_limit'] = $this->params->get('params.max_result', 10);
$options['limit'] = $this->params->get('params.max_items', 10);
$options['only_suggestions'] = $this->params->get('params.only_values', 0);
$options['suggestion_limit'] = $this->params->get('params.max_result', 10);
$options['limit'] = $this->params->get('params.max_items', 10);

$out = [];
if($this->params->get('params.sql_source')){
$options['suggestion_url'] = "index.php?option=com_joomcck&task=ajax.field_call&tmpl=component&field_id={$this->id}&func=onGetSqlValues&field=listautocomplete";
} else {
$list = explode("\n", str_replace("\r", "", $this->params->get('params.values', '')));
$list = array_values($list);
$out = $this->_getPillValues($list,1);
$out = [];
if ($this->params->get('params.sql_source'))
{
$options['suggestion_url'] = "index.php?option=com_joomcck&task=ajax.field_call&tmpl=component&field_id={$this->id}&func=onGetSqlValues&field=listautocomplete";
}
else
{
$list = explode("\n", str_replace("\r", "", $this->params->get('params.values', '')));
$list = array_values($list);
$out = $this->_getPillValues($list, 1);


}
}


if($this->isnew && $this->params->get('params.default_val'))
if ($this->isnew && $this->params->get('params.default_val',''))
{
$this->value[] = $this->params->get('params.default_val');
}
}


// we use here tomselect layout
$this->inputvalue = \Joomla\CMS\HTML\HTMLHelper::_('mrelements.pills', "jform[fields][{$this->id}]", "field_" . $this->id, $this->value, $out, $options,$this->params);
$this->inputvalue = \Joomla\CMS\HTML\HTMLHelper::_(
'mrelements.pills',
"jform[fields][{$this->id}]",
"field_" . $this->id,
$out,
$this->value,
$options,
$this->params
);

return $this->_display_input();
}

public function onJSValidate()
{
$js = "\n\t\tvar lac{$this->id} = jQuery('[name^=\"jform\\\\[fields\\\\]\\\\[$this->id\\\\]\"]').val();";
if($this->required)
if ($this->required)
{
$js .= "\n\t\tif(!lac{$this->id}){hfid.push({$this->id}); isValid = false; errorText.push('".addslashes(\Joomla\CMS\Language\Text::sprintf("CFIELDREQUIRED", $this->label))."');}";
$js .= "\n\t\tif(!lac{$this->id}){hfid.push({$this->id}); isValid = false; errorText.push('" . addslashes(\Joomla\CMS\Language\Text::sprintf("CFIELDREQUIRED", $this->label)) . "');}";
}

return $js;
}

Expand All @@ -60,7 +73,8 @@ public function validateField($value, $record, $type, $section)
if ($this->params->get('params.max_items', 0) && (is_array($value) && count($value) > $this->params->get('params.max_items')))
{
$this->setError(\Joomla\CMS\Language\Text::sprintf("L_ITEMSLIMITMSG", $this->label));
return FALSE;

return false;
}

return parent::validateField($value, $record, $type, $section);
Expand All @@ -70,35 +84,39 @@ public function onGetSqlValues($post)
{
if ($this->params->get('params.sql_source'))
{
$db = \Joomla\CMS\Factory::getDbo();
$db = \Joomla\CMS\Factory::getDbo();
$user = \Joomla\CMS\Factory::getApplication()->getIdentity();
$sql = $this->params->get('params.sql', "SELECT 1 AS id, 'No sql query entered' AS text");
$sql = str_replace('[USER_ID]', $user->get('id', 0), $sql);
$sql = $this->params->get('params.sql', "SELECT 1 AS id, 'No sql query entered' AS text");
$sql = str_replace('[USER_ID]', $user->get('id', 0), $sql);
$db->setQuery($sql);
$out = $db->loadObjectList();
}
else
{
$list = explode("\n", str_replace("\r", "", $this->params->get('params.values', '')));
$list = array_values($list);
$out = $this->_getPillValues($list);
$list = array_values($list);
$out = $this->_getPillValues($list);
}

// adapt to autocomplete
if(is_array($out)){
if (is_array($out))
{

$autoCompleteResult = [];

foreach ($out as $item){
foreach ($out as $item)
{

if(is_array($item)){
if (is_array($item))
{
$autoCompleteResult[] = ['id' => $item['id'], 'text' => $item['title']];
}else{
}
else
{
$autoCompleteResult[] = ['id' => $item, 'text' => $item];
}



}

return $autoCompleteResult;
Expand All @@ -117,6 +135,7 @@ public function onImport($value, $params, $record = null)
{
$values = explode($params->get('field.' . $this->id . '.separator', ','), $value);
ArrayHelper::clean_r($values);

return $values;
}

Expand Down
4 changes: 3 additions & 1 deletion components/com_joomcck/layouts/core/fields/tomSelect.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,16 @@
$wa->useScript('com_joomcck.tom-select');
$wa->useStyle('com_joomcck.tom-select');

// tansform to js json format
$list = json_encode($list);

$list = str_replace(['"id":','"text":'],['id:','text:'],$list);


if(empty($default) && !empty($list)){
$default = $list;
}else{
$default = json_encode($default);
$default = str_replace(['"id":','"text":'],['id:','text:'],$default);
}

$fieldId = (int) rand(1,2000);
Expand Down

0 comments on commit dfa2885

Please sign in to comment.