Skip to content

Commit

Permalink
Fixed issue: #08206: Add answers to the set of labels is not possible…
Browse files Browse the repository at this point in the history
… in language code for "-" eg: pt-BR.

Dev: move control to rules
Dev: Add isLanguage and isLanguageMulti in LSYii_Validators : maybe best is to Add an LSlang_Validators ?
Dev: TODO : use new rules if possible
  • Loading branch information
Shnoulle committed Oct 4, 2013
1 parent 8ea6f1d commit fcc8d98
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 27 deletions.
4 changes: 2 additions & 2 deletions application/controllers/admin/labels.php
Expand Up @@ -392,8 +392,8 @@ public function ajaxSets()
if ($lid == 0)
{
$lset = new LabelSet;
$lset->label_name = sanitize_xss_string(Yii::app()->getRequest()->getPost('laname'));
$lset->languages = sanitize_xss_string($language);
$lset->label_name = Yii::app()->getRequest()->getPost('laname');
$lset->languages = $language;
$lset->save();

$lid = getLastInsertID($lset->tableName());
Expand Down
39 changes: 39 additions & 0 deletions application/core/LSYii_Validators.php
Expand Up @@ -24,6 +24,16 @@ class LSYii_Validators extends CValidator {
* @var boolean
*/
public $isUrl=false;
/**
* Filter attribute for isLanguage
* @var boolean
*/
public $isLanguage=false;
/**
* Filter attribute for isLanguageMulti (multi language string)
* @var boolean
*/
public $isLanguageMulti=false;

public function __construct()
{
Expand All @@ -41,6 +51,14 @@ protected function validateAttribute($object,$attribute)
if ($object->$attribute== 'http://' || $object->$attribute=='https://') {$object->$attribute="";}
$object->$attribute=html_entity_decode($object->$attribute, ENT_QUOTES, "UTF-8");
}
if($this->isLanguage)
{
$object->$attribute=$this->languageFilter($object->$attribute);
}
if($this->isLanguageMulti)
{
$object->$attribute=$this->multiLanguageFilter($object->$attribute);
}
}

/**
Expand All @@ -63,4 +81,25 @@ public function xssFilter($value)
);
return $filter->purify($value);
}
/**
* Defines the customs validation rule for language string
*
* @param mixed $value
*/
public function languageFilter($value)
{
// Maybe use the array of language ?
return preg_replace('/[^a-z0-9-]/i', '', $value);
}
/**
* Defines the customs validation rule for multi language string
*
* @param mixed $value
*/
public function multiLanguageFilter($value)
{
$aValue=explode(" ",trim($value));
$aValue=array_map("sanitize_languagecode",$aValue);
return implode(" ",$aValue);
}
}
31 changes: 6 additions & 25 deletions application/helpers/admin/label_helper.php
Expand Up @@ -20,12 +20,8 @@ function updateset($lid)
$clang = Yii::app()->lang;

// Get added and deleted languagesid arrays
if ($_POST['languageids'])
$postlanguageids = sanitize_languagecodeS($_POST['languageids']);

if ($_POST['label_name'])
$postlabel_name = sanitize_labelname($_POST['label_name']);

$postlanguageids=Yii::app()->getRequest()->getPost('languageids');
$postlabel_name=Yii::app()->getRequest()->getPost('label_name');
$newlanidarray = explode(" ",trim($postlanguageids));

$oldlangidsarray = array();
Expand Down Expand Up @@ -96,16 +92,8 @@ function insertlabelset()
// $labelsoutput.= $_POST['languageids']; For debug purposes
$clang = Yii::app()->lang;


if (!empty($_POST['languageids']))
{
$postlanguageids=sanitize_languagecodeS($_POST['languageids']);
}

if (!empty($_POST['label_name']))
{
$postlabel_name=sanitize_labelname($_POST['label_name']);
}
$postlanguageids=Yii::app()->getRequest()->getPost('languageids');
$postlabel_name=Yii::app()->getRequest()->getPost('label_name');

//postlabel_name = dbQuoteAll($postlabel_name,true);
//$postlanguageids = dbQuoteAll($postlanguageids,true);
Expand All @@ -118,7 +106,7 @@ function insertlabelset()
$result=LabelSet::model()->insertRecords($data);
if (!$result)
{
safeDie("Inserting the label set failed:<br />".$query."<br />");
Yii::app()->session['flashmessage'] = $clang->gT("Inserting the label set failed.");
}
else
{
Expand Down Expand Up @@ -207,17 +195,10 @@ function modlabelsetanswers($lid)
}
else
{
$labelsoutput= "<script type=\"text/javascript\">\n<!--\n alert(\"".$clang->gT("Can't update labels because you are using duplicated codes","js")."\")\n //-->\n</script>\n";
Yii::app()->setFlashMessage($clang->gT("Can't update labels because you are using duplicated codes"),'error');
}

if ($ajax){ die(); }

if (isset($labelsoutput))
{
echo $labelsoutput;
exit();
}

}

/**
Expand Down
14 changes: 14 additions & 0 deletions application/models/LabelSet.php
Expand Up @@ -49,6 +49,20 @@ public static function model($class = __CLASS__)
{
return parent::model($class);
}
/**
* Returns this model's validation rules
*
*/
public function rules()
{
return array(
array('label_name','required'),
array('label_name','length', 'min' => 1, 'max'=>100),
array('label_name','LSYii_Validators'),
array('languages','required'),
array('languages','LSYii_Validators','isLanguageMulti'=>true),
);
}

function getAllRecords($condition=FALSE)
{
Expand Down

0 comments on commit fcc8d98

Please sign in to comment.