Commits

christiansalazar committed 2d2bb83

FIX ISSUE #74

Comments (1)

  1. Christian Salazar repo owner

    Permite obtener un dataProvider a partir de los usuarios que tengan un rol determinado.

    ejemplo de uso:

    <h3>Your Agents:</h3>
    <?php
    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'agents-grid',
        'dataProvider'=>Yii::app()->user->um->searchUsersByAuthItem('agent'),
        'columns'=>array(
            array('name'=>'username'),
            array('name'=>'email'),
            array('name'=>'userdescription'),    // este "magic" method esta descrito en el commit #f0a6268
        ),
    ));
    ?>
    

    leer acerca de: https://bitbucket.org/christiansalazarh/cruge/commits/ceb8b3bcfe3b69dceb07b18648181f558ffd67ec

    para saber acerca de "userdescription", leer: https://bitbucket.org/christiansalazarh/cruge/commits/f0a6268324f7ded079ab629359204ab98104e16f

    importante, revisar este issue nuevo, que permite hacer busquedas con filtros en el dataprovider entregado aqui: https://bitbucket.org/christiansalazarh/cruge/issue/77/permitir-que-um-searchusersbyauthitem

Files changed (4)

components/CrugeAuthManager.php

     /** retorna el nombre de una tabla configurandola para los prefijos definidos en el modulo
     $table: uno de {'authitem', 'authitemchild', 'authassignment'}
      */
-    protected function getTableName($table)
+    public function getTableName($table)
     {
         return CrugeUtil::getTableName($table);
     }

components/CrugeFactory.php

         return $model;
     }
 
+    public function getICrugeStoredUserModel($scenario)
+    {
+        return new CrugeStoredUser($scenario);
+    }
+
     /*  entrega la lista de campos, si se le da el usuario, va a pasar el valor del usuario
         al fieldvalue del campo.
 

components/CrugeUserManager.php

         }
     }
 
+	/**
+	  	retorna un dataprovider que contiene todos los usuarios asignados
+		directamente a un rol. (no hace busquedas recursivas)
+	 
+	 	@returns CActiveDataProvider
+	 */
+	public function searchUsersByAuthItem(
+			$authItemName, $pageSize=20, $defaultOrder=null){
+		$model = CrugeFactory::get()->getICrugeStoredUserModel('search');
+		return	$model->searchByAuthItem(
+				$authItemName, $pageSize, $defaultOrder);
+	}
+
     /*
         @returns instancia ICrugeStoredUser del usuario cuyo iduser sea el $id pasado por argumento.
 

models/data/CrugeStoredUser.php

             ),
         ));
     }
+
+
+	public function searchByAuthItem($authItemName, $pageSize=20, $defaultOrder=null){
+        $criteria = new CDbCriteria;
+		$criteria->distinct = true;
+		$authMan = new CrugeAuthManager();
+		$table_assign = $authMan->getTableName("authassignment");
+		$criteria->join = "left join ".$table_assign." ASG "
+			."on ASG.userid = t.iduser";
+		$criteria->compare("ASG.itemname",$authItemName);
+        return new CActiveDataProvider($this, array(
+            'criteria' => $criteria,
+			'pagination' => array(
+				'pageSize' => $pageSize,
+			),
+            'sort' => array(
+                'defaultOrder' => (($defaultOrder==null) ? 
+					array('username' => false) : $defaultOrder),
+            ),
+        ));
+	}
+
 }