Skip to content

Commit

Permalink
Fixed bug - participant search not working properly, updated db calls…
Browse files Browse the repository at this point in the history
… and methods

git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_yii@12351 b72ed6b6-b9f8-46b5-92b4-906544132732
  • Loading branch information
jcleeland committed Feb 5, 2012
1 parent 90193c2 commit 9ec623c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 17 deletions.
11 changes: 7 additions & 4 deletions application/controllers/admin/participantsaction.php
Expand Up @@ -773,8 +773,13 @@ function exporttocsv()

function getParticipantsResults_json()
{
///admin/participants/getParticipantsResults_json/search/email||contain||com
//First entry is field to search, second method, third value, seperated by double pipe "||"
$page = Yii::app()->request->getPost('page');
$limit = Yii::app()->request->getPost('rows');
$page=($page) ? $page : 1;
$limit=($limit) ? $limit : 25;

$attid = ParticipantAttributeNames::getAttributeVisibleID();
$participantfields = array('participant_id', 'can_edit', 'firstname', 'lastname', 'email', 'blacklisted', 'surveys', 'language', 'owner_uid');

Expand All @@ -785,11 +790,10 @@ function getParticipantsResults_json()
$searchcondition = urldecode($searchcondition);
$finalcondition = array();
$condition = explode("||", $searchcondition);
$aData = new Object();
$aData = new stdClass();
$aData->page = $page;
if (count($condition) == 3)
{

$records = Participants::getParticipantsSearch($condition, $page, $limit);
$aData->records = count(Participants::getParticipantsSearch($condition, 0, 0));
$aData->total = ceil($aData->records / $limit);
Expand All @@ -800,7 +804,6 @@ function getParticipantsResults_json()
$aData->records = count(Participants::getParticipantsSearchMultiple($condition, 0, 0));
$aData->total = ceil($aData->records / $limit);
}

$i = 0;
foreach ($records as $row => $value)
{
Expand Down Expand Up @@ -850,7 +853,7 @@ function subval_sort($a, $subkey, $order)
$sortedarray = subval_sort($sortablearray, $indexsort, Yii::app()->request->getPost('sord'));
$i = 0;
$count = count($sortedarray[0]);
$aData = new Object();
$aData = new stdClass();
foreach ($sortedarray as $key => $value)
{
$aData->rows[$i]['id'] = $value[0];
Expand Down
33 changes: 20 additions & 13 deletions application/models/Participants.php
Expand Up @@ -390,7 +390,7 @@ function getParticipantsSearch($condition, $page, $limit)
}
else
{
$command = Yii::app()->db->createCommand()->where(array('like', Yii::app()->db->quoteValue($condition[0]), Yii::app()->db->quoteValue($condition[2])))->select('*')->from('{{participants}}');
$command = Yii::app()->db->createCommand()->where(array('like', $condition[0], $condition[2]))->select('*')->from('{{participants}}');
if ($page == 0 && $limit == 0)
{
$data = $command->queryAll();
Expand Down Expand Up @@ -676,6 +676,8 @@ function getParticipantsSearch($condition, $page, $limit)

function getParticipantsSearchMultiple($condition, $page, $limit)
{
//http://localhost/limesurvey_yii/admin/participants/getParticipantsResults_json/search/email||contains||gov||and||firstname||contains||AL
//First contains fieldname, second contains method, third contains value, fourth contains BOOLEAN SQL and, or
$i = 0;
$j = 1;
$tobedonelater = array();
Expand Down Expand Up @@ -704,20 +706,23 @@ function getParticipantsSearchMultiple($condition, $page, $limit)
}
else if ($condition[1] == 'contains')
{
$condition[2]="%".$condition[2]."%";
if (is_numeric($condition[0]))
{
$newsub = $j;
$arr = Yii::app()->db->createCommand('SELECT {{participant_attribute}}.participant_id FROM {{participant_attribute}} WHERE {{participant_attribute}}.attribute_id = :condition_0 AND {{participant_attribute}}.value LIKE :condition_2')->bindParam(":condition_0", $condition[0], PDO::PARAM_INT)->bindParam(":condition_2", "%".$condition[2]."%", PDO::PARAM_STR)->queryAll();

//$arr = Yii::app()->db->createCommand('SELECT {{participant_attribute}}.participant_id FROM {{participant_attribute}} WHERE {{participant_attribute}}.attribute_id = :condition_0 AND {{participant_attribute}}.value LIKE :condition_2')->bindParam(":condition_0", $condition[0], PDO::PARAM_INT)->bindParam(":condition_2", "%".$condition[2]."%", PDO::PARAM_STR)->queryAll();
$arr = Yii::app()->db->createCommand('SELECT {{participant_attribute}}.participant_id FROM {{participant_attribute}} WHERE {{participant_attribute}}.attribute_id = '.$condition[0].' AND {{participant_attribute}}.value LIKE '.$condition[2])->queryAll();


$command->addInCondition('participant_id', $arr);
$j++;
}
else
{
$command->addCondition(':condition_0 LIKE :condition_2')->bindParam(":condition_0", $condition[0], PDO::PARAM_STR)->bindParam(":condition_2", "%".$condition[2]."%", PDO::PARAM_STR);
}
//BUG: bindParam does not exist as a method
//$command->addCondition(':condition_0 LIKE :condition_2')->bindParam(":condition_0", $condition[0], PDO::PARAM_STR)->bindParam(":condition_2", "%".$condition[2]."%", PDO::PARAM_STR);
$command->addCondition($condition[0] . ' LIKE "'. $condition[2].'"');
}
}
else if ($condition[1] == 'notequal')
{
Expand Down Expand Up @@ -784,7 +789,7 @@ function getParticipantsSearchMultiple($condition, $page, $limit)
}
}
}
else if ($condition[$i] != '')
else if ($condition[$i] != '') //This section deals with subsequent filter conditions that have boolean joiner
{
if ($condition[$i + 2] == 'equal')
{
Expand Down Expand Up @@ -823,8 +828,8 @@ function getParticipantsSearchMultiple($condition, $page, $limit)
if ($condition[$i] == 'and')
{
$newsub = $j;
$arr = Yii::app()->db->createCommand('SELECT {{participant_attribute}}.participant_id FROM {{participant_attribute}} WHERE {{participant_attribute}}.attribute_id = :condition_p1 AND {{participant_attribute}}.value LIKE :condition_p3')->bindParam(":condition_p1", $condition[$i + 1], PDO::PARAM_INT)->bindParam(":condition_p3", "%".$condition[$i + 3]."%", PDO::PARAM_STR)->queryAll();

//$arr = Yii::app()->db->createCommand('SELECT {{participant_attribute}}.participant_id FROM {{participant_attribute}} WHERE {{participant_attribute}}.attribute_id = :condition_p1 AND {{participant_attribute}}.value LIKE :condition_p3')->bindParam(":condition_p1", $condition[$i + 1], PDO::PARAM_INT)->bindParam(":condition_p3", "%".$condition[$i + 3]."%", PDO::PARAM_STR)->queryAll();
$arr = Yii::app()->db->createComment('SELECT {{participant_attribute}}.participant_id FROM {{participant_attribute}} WHERE {{participant_attribute}}.attribute_id = '.$condition[$i+1].' AND {{participant_attribute}}.value LIKE "%'.$condition[$i+3].'%"')->queryAll();

$command->addInCondition('participant_id', $arr);
$j++;
Expand All @@ -839,13 +844,14 @@ function getParticipantsSearchMultiple($condition, $page, $limit)
{
if ($condition[$i] == 'and')
{

$command->addCondition(':condition_p1 LIKE :condition_p3')->bindParam(":condition_p1", $condition[$i + 1], PDO::PARAM_STR)->bindParam(":condition_p3", "%".$condition[$i + 3]."%", PDO::PARAM_STR);
//$command->addCondition(':condition_p1 LIKE :condition_p3')->bindParam(":condition_p1", $condition[$i + 1], PDO::PARAM_STR)->bindParam(":condition_p3", "%".$condition[$i + 3]."%", PDO::PARAM_STR);
$command->addCondition($condition[$i+1].' LIKE "%'.$condition[$i+3].'%"');
}
else
{
$command->addCondition(':condition_p1 LIKE :condition_p3', 'OR')->bindParam(":condition_p1", $condition[$i + 1], PDO::PARAM_STR)->bindParam(":condition_p3", "%".$condition[$i + 3]."%", PDO::PARAM_STR);
}
//$command->addCondition(':condition_p1 LIKE :condition_p3', 'OR')->bindParam(":condition_p1", $condition[$i + 1], PDO::PARAM_STR)->bindParam(":condition_p3", "%".$condition[$i + 3]."%", PDO::PARAM_STR);
$command->addCondition($condition[$i+1].' LIKE "%'.$condition[$i+3].'%"', 'OR');
}
}
}
else if ($condition[$i + 2] == 'notequal')
Expand Down Expand Up @@ -982,7 +988,8 @@ function getParticipantsSearchMultiple($condition, $page, $limit)
$i = $i + 4;
}
}
if ($page == 0 && $limit == 0)
//print_r($command); die();
if ($page == 0 && $limit == 0)
{
$arr = Participants::model()->findAll($command);
$data = array();
Expand Down

0 comments on commit 9ec623c

Please sign in to comment.