Commits

christiansalazar committed ceb8b3b

FIX ISSUE #75

Comments (1)

  1. Christian Salazar repo owner

    Permite que se puedan leer valores de campos personalizados, cuando asi se ha indicado mediante $boolLoadUserFields, por defecto es false, asumiendo que se han cargado antes a los campos personalizados, por razones de optimizacion, pero, en este caso de codigo se muestra porque es necesario:

    <?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','value'=>'$data->getUserDescription(true)'),
        ),
    ));
    ?>
    

    es necesario porque se ha inicializado un DataProvider de CrugeStoredUser y por razones de optimizacion, no se han solicitado los campos personalizados para todo el array devuelto, sino solo para aquellos que van a ir en la pagina, entonces, explicitamente a esos usuarios se les cargan los campos personalizados.

    previa configuracion en config/main:

    'userDescriptionFieldsArray'=> array("firstname","lastname","licenceno"),
    

Files changed (1)

models/data/CrugeStoredUser.php

 		return null;
 	}
 
-	public function getUserDescription(){
+	public function getUserDescription($boolLoadUserFields=false){
 		$fieldNames = CrugeUtil::config()->userDescriptionFieldsArray;
 		$tmp = "";
 		if(in_array("username",$fieldNames))
 			$tmp .= ",".$this->username;
 		if(in_array("email",$fieldNames))
 			$tmp .= ",".$this->email;
-		if($fieldNames != null)
-		foreach($fieldNames as $fname)
-			if(($fname != "username") && ($fname != "email"))
-			$tmp .= ",".$this->getCustomFieldValue($fname,"nohay_".$fname);
+		if($fieldNames != null){
+			if($boolLoadUserFields == true)
+				$this->setFields(
+					CrugeFactory::get()->getICrugeFieldListModels($this));
+			foreach($fieldNames as $fname)
+			if(($fname != "username") && ($fname != "email")){
+				$tmp .= ",".$this->getCustomFieldValue($fname,"nohay_".$fname);
+			}
+		}
 		if($tmp == "")
 			$tmp = $this->getUsername();
 		return ltrim($tmp,", ");