Answers.Body: <p>In my experience, the Membership Dashboard isn't really a great tool, and I was it was deprecated.  It's extremely inflexible (as you're seeing here) and any reports you need can be placed on the main dashboard as a dashlet.  So I would recommend a different approach.</p>
  
  <p>To answer some of your other questions - class names and file locations map to each other.  You should find the <code>CRM_Utils_Array</code> class in <code>&lt;civiroot&gt;/CRM/Utils/Array.php</code>.</p>
  
  <p>Finally, it's a bad idea to change core CiviCRM files, because they'll be overwritten on upgrade. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-26T19:20:14.420Z
Answers.Text: Thanks. I was planning on suggesting this as a change to the main CiviCRM. Do you have a suggestion for another tool I could use to write such a dashboard for our non-technical users to see membership at a glance?
Answers.UserDisplayName: Corey Burger
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-28T12:05:33.043Z
Answers.Text: With the data processor extension (https://lab.civicrm.org/extensions/dataprocessor) you can create custom reports and searches and also add them to your dashboard. For the dashboard functionality you need the master version.
Answers.UserDisplayName: Jaap Jansma - CiviCooP
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-26T17:06:46.187Z
Answers.LastActivityDate: 2019-10-26T17:06:46.187Z
Answers.UserDisplayName: Jon G - Megaphone Tech
Body: <p>I am looking at add a column for expired/grace members to the Membership Dashboard, but I am running into a roadblock on how to do it. </p>
  
  <p>I know that the DashBoard.tpl file pulls in list of new and renewed members and that DashBoard.php also needs to modified. Dashboard.php refers to CRM_Member_BAO_Membership, which comes from CRM/Member/BAO/Membership.php. There are three functions in Membership.php, getMembershipJoins, getMembershipRenewals and getMembershipStarts that pull numbers from the SQL side.</p>
  
  <p>My problems:
  1. In Membership.php there is this function:
   public static function _getActTypes() {
  which very helpfully has this as a code comment:
     * @todo document me - I seem a bit out of date....</p>
  
  <p>These functions call things from the CRM_Utils_Array, which I cannot find. Which file is that in? I am not a PHP programmer, but is this a general function call that is extended by several files?</p>
  
  <ol start="2">
  <li>Does CRM_Utils_Array::key('Membership Grace', $activityTypes); or CRM_Utils_Array::key('Membership Expired', $activityTypes); exist?
  If it doesn't, would I add such a function to Membership.php and then call it through the previously mentioned files?</li>
  </ol>
  
Tags: <civimember>
Title: Adding expired/grace membership numbers to the Membership Dashboard
ThreadText: # Adding expired/grace membership numbers to the Membership Dashboard
  
  (Asked by: username_0 on 2019-10-26)
  
  I am looking at add a column for expired/grace members to the Membership Dashboard, but I am running into a roadblock on how to do it.
  
  I know that the DashBoard.tpl file pulls in list of new and renewed members and that DashBoard.php also needs to modified. Dashboard.php refers to CRM\_Member\_BAO\_Membership, which comes from CRM/Member/BAO/Membership.php. There are three functions in Membership.php, getMembershipJoins, getMembershipRenewals and getMembershipStarts that pull numbers from the SQL side.
  
  My problems:
  1. In Membership.php there is this function:
  public static function \_getActTypes() {
  which very helpfully has this as a code comment:
  \* @todo document me - I seem a bit out of date....
  
  These functions call things from the CRM\_Utils\_Array, which I cannot find. Which file is that in? I am not a PHP programmer, but is this a general function call that is extended by several files?
  
  2. Does CRM\_Utils\_Array::key('Membership Grace', $activityTypes); or CRM\_Utils\_Array::key('Membership Expired', $activityTypes); exist?
     If it doesn't, would I add such a function to Membership.php and then call it through the previously mentioned files?
  
  **Tags:** civimember
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2019-10-26. Score: 4 | Accepted answer
  
  In my experience, the Membership Dashboard isn't really a great tool, and I was it was deprecated. It's extremely inflexible (as you're seeing here) and any reports you need can be placed on the main dashboard as a dashlet. So I would recommend a different approach.
  
  To answer some of your other questions - class names and file locations map to each other. You should find the `CRM_Utils_Array` class in `/CRM/Utils/Array.php`.
  
  Finally, it's a bad idea to change core CiviCRM files, because they'll be overwritten on upgrade.
  
  > **Comments:**
  > **username_0**: Thanks. I was planning on suggesting this as a change to the main CiviCRM. Do you have a suggestion for another tool I could use to write such a dashboard for our non-technical users to see membership at a glance?  
  > **username_2**: With the data processor extension (https://lab.civicrm.org/extensions/dataprocessor) you can create custom reports and searches and also add them to your dashboard. For the dashboard functionality you need the master version.  
  
  ---
  
  