We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 7231
    • 4,205 Posts
    I am wondering how I would go about changing the webuser list/grid in the manager to show the number of logins rather than the gender. Personally this would be much more useful, I am not sure why gender is featured in the grid, doesn’t seem very PC to me...I am guessing that this is legacy stuff from beyond.

    I am thinking that all I need to do is edit the web_user_management.static.php file. The SQL statement looks like it is written in Hawaiian (wua-wua) and I don’t really understand it. The field I need is the ’logincount’ from the ’web_user_attributes’ table. What do I need to change to include the number of logins? Or is this data already available and all I need to do is edit the grid rendering?

    $sql = "SELECT wu.id,wu.username,wua.fullname,wua.email,IF(wua.gender=1,'".$_lang['user_male']."',IF(wua.gender=2,'".$_lang['user_female']."','-')) as 'gender',IF(wua.blocked,'".$_lang['yes']."','-') as 'blocked'" .
    			"FROM ".$modx->getFullTableName("web_users")." wu ".
    			"INNER JOIN ".$modx->getFullTableName("web_user_attributes")." wua ON wua.internalKey=wu.id ".
    			($sqlQuery ? " WHERE (wu.username LIKE '$sqlQuery%') OR (wua.fullname LIKE '%$sqlQuery%') OR (wua.email LIKE '$sqlQuery%')":"")." ".
    			"ORDER BY username";


    Then we would need to edit the grid code to include the new column title.

    include_once $base_path."manager/includes/controls/datagrid.class.php";
    	$grd = new DataGrid('',$ds,$number_of_results); // set page size to 0 t show all items
    	$grd->noRecordMsg = $_lang["no_records_found"];
    	$grd->cssClass="grid";
    	$grd->columnHeaderClass="gridHeader";
    	$grd->itemClass="gridItem";
    	$grd->altItemClass="gridAltItem";
    	$grd->fields="id,username,fullname,email,gender,blocked";
    	$grd->columns=$_lang["icon"]." ,".$_lang["name"]." ,".$_lang["user_full_name"]." ,".$_lang["email"]." ,".$_lang["user_gender"]." ,".$_lang["user_block"];
    	$grd->colWidths="34,,,,40,34";
    	$grd->colAligns="center,,,,center,center";
    	$grd->colTypes="template:<a class='gridRowIcon' href='#' onclick='return showContentMenu([+id+],event);' title='".$_lang["click_to_context"]."'><img src='media/style/$manager_theme/images/icons/user.gif' width='18' height='18' /></a>||template:<a href='index.php?a=88&id=[+id+]' title='".$_lang["click_to_edit_title"]."'>[+value+]</a>";
    	if($listmode=='1') $grd->pageSize=0;
    	if($_REQUEST['op']=='reset') $grd->pageNumber = 1;


    Any clues appreciated rolleyes Thanks.
      [font=Verdana]Shane Sponagle | [wiki] Snippet Call Anatomy | MODx Developer Blog | [nettuts] Working With a Content Management Framework: MODx

      Something is happening here, but you don&#39;t know what it is.
      Do you, Mr. Jones? - [bob dylan]
      • 7231
      • 4,205 Posts
      Sometimes all it takes it to spell it out and I can even understand some Hawaiian grin

      1) add wua.logincount to the first part of the SELECT statement:
      $sql = "SELECT wu.id,wu.username,wua.fullname,wua.email,wua.logincount,IF...
      I left in the gender part of the query since I did not want to break anything...would be nice to get rid of it.
      You can simply delete this part since it is no longer needed:
      IF(wua.gender=1,'".$_lang['user_male']."',IF(wua.gender=2,'".$_lang['user_female']."','-')) as 'gender'


      2) then in the grid parameters I simply changed gender to logingount and added a string for the col header:
      	$grd->fields="id,username,fullname,email,logincount,blocked";
      	$grd->columns=$_lang["icon"]." ,".$_lang["name"]." ,".$_lang["user_full_name"]." ,".$_lang["email"]." ,Count ,".$_lang["user_block"];


      Refresh the page and presto. That was easy... rolleyes

      The final edited bit of code looks like this:
      $sql = "SELECT wu.id,wu.username,wua.fullname,wua.email,wua.logincount,IF(wua.blocked,'".$_lang['yes']."','-') as 'blocked'" .
      			"FROM ".$modx->getFullTableName("web_users")." wu ".
      			"INNER JOIN ".$modx->getFullTableName("web_user_attributes")." wua ON wua.internalKey=wu.id ".
      			($sqlQuery ? " WHERE (wu.username LIKE '$sqlQuery%') OR (wua.fullname LIKE '%$sqlQuery%') OR (wua.email LIKE '$sqlQuery%')":"")." ".
      			"ORDER BY username";
      	$ds = mysql_query($sql);
      	include_once $base_path."manager/includes/controls/datagrid.class.php";
      	$grd = new DataGrid('',$ds,$number_of_results); // set page size to 0 t show all items
      	$grd->noRecordMsg = $_lang["no_records_found"];
      	$grd->cssClass="grid";
      	$grd->columnHeaderClass="gridHeader";
      	$grd->itemClass="gridItem";
      	$grd->altItemClass="gridAltItem";
      	$grd->fields="id,username,fullname,email,logincount,blocked";
      	$grd->columns=$_lang["icon"]." ,".$_lang["name"]." ,".$_lang["user_full_name"]." ,".$_lang["email"]." ,Count ,".$_lang["user_block"];
      	$grd->colWidths="34,,,,40,34";
      	$grd->colAligns="center,,,,center,center";
      	$grd->colTypes="template:<a class='gridRowIcon' href='#' onclick='return showContentMenu([+id+],event);' title='".$_lang["click_to_context"]."'><img src='media/style/$manager_theme/images/icons/user.gif' width='18' height='18' /></a>||template:<a href='index.php?a=88&id=[+id+]' title='".$_lang["click_to_edit_title"]."'>[+value+]</a>";
      	if($listmode=='1') $grd->pageSize=0;
      	if($_REQUEST['op']=='reset') $grd->pageNumber = 1;
      	// render grid
      	echo $grd->render();
        [font=Verdana]Shane Sponagle | [wiki] Snippet Call Anatomy | MODx Developer Blog | [nettuts] Working With a Content Management Framework: MODx

        Something is happening here, but you don&#39;t know what it is.
        Do you, Mr. Jones? - [bob dylan]
        • 4385
        • 372 Posts
        THANK YOU!

        I was thinking about adding it today. I really how this gets fixed in new versions.
          DropboxUploader -- Upload files to a Dropbox account.
          DIG -- Dynamic Image Generator
          gus -- Google URL Shortener
          makeQR -- Uses google chart api to make QR codes.
          MODxTweeter -- Update your twitter status on publish.