Skip to content

Commit

Permalink
Dev: use relation to get survey permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
LouisGac committed May 17, 2016
1 parent a099156 commit 9debd7d
Showing 1 changed file with 27 additions and 8 deletions.
35 changes: 27 additions & 8 deletions application/models/Survey.php
Expand Up @@ -141,6 +141,12 @@ public function relations()
{
$alias = $this->getTableAlias();
return array(

//permissions.entity_id=t.sid AND permissions.permission='survey' AND permissions.entity='survey' AND permissions.uid=:userid )
// $criteria->join .= "LEFT JOIN {{permissions}} AS permissions ON ( permissions.entity_id=t.sid AND permissions.permission='survey' AND permissions.entity='survey' AND permissions.uid=:userid ) ";
// $criteria->condition = 'permissions.read_p=1 or owner_id=:userid';

'permissions' => array(self::HAS_MANY, 'Permission', array( 'entity_id'=> 'sid' ), 'together' => true ), //
'languagesettings' => array(self::HAS_MANY, 'SurveyLanguageSetting', 'surveyls_survey_id', 'index' => 'surveyls_language'),
'defaultlanguage' => array(self::BELONGS_TO, 'SurveyLanguageSetting', array('language' => 'surveyls_language', 'sid' => 'surveyls_survey_id'), 'together' => true),
'owner' => array(self::BELONGS_TO, 'User', 'owner_id'),
Expand Down Expand Up @@ -932,20 +938,33 @@ public function search()
);

$criteria = new CDbCriteria;
if (!in_array(Yii::app()->db->getDriverName(), array('mssql', 'sqlsrv', 'dblib')))
{
// Only do eager loading if not using MSSQL because there is a bug in Yii regarding this
$criteria->with=array('defaultlanguage','owner');
}
$criteria->together = true;


// Permission
if(!Permission::model()->hasGlobalPermission("surveys",'read'))
{
$criteria->join .= "LEFT JOIN {{permissions}} AS permissions ON ( permissions.entity_id=t.sid AND permissions.entity='survey' AND permissions.uid=:userid ) ";
$criteria->condition = 'permissions.read_p=1 or owner_id=:userid2';
$criteria->params=(array(':userid'=>Yii::app()->user->id,':userid2'=>Yii::app()->user->id ));

/*
$criteria->join .= "LEFT JOIN {{permissions}} AS permissions ON ( permissions.entity_id=t.sid AND permissions.permission='survey' AND permissions.entity='survey' AND permissions.uid=:userid ) ";
$criteria->condition = 'permissions.read_p=1 or owner_id=:userid';
$criteria->params=(array(':userid'=>Yii::app()->user->id ));
*/
$criteria->with='permissions';

//$criteria->addCondition('t1_c6=1');
//$criteria->compare('permissions.uid',Yii::app()->user->id);
$criteria->addCondition("permissions.permission='survey' AND permissions.entity='survey' AND permissions.uid='".Yii::app()->user->id."'");
}


if (!in_array(Yii::app()->db->getDriverName(), array('mssql', 'sqlsrv', 'dblib')))
{
// Only do eager loading if not using MSSQL because there is a bug in Yii regarding this
// $criteria->with=array('defaultlanguage','owner');
}


// Search filter
$criteria2 = new CDbCriteria;
$sid_reference = (Yii::app()->db->getDriverName() == 'pgsql' ?' t.sid::varchar' : 't.sid');
Expand Down

0 comments on commit 9debd7d

Please sign in to comment.