The Community forums are being phased out in favor of a new Slack group.
Add your email address below to get an invitation to join the community slack group

Slack Signup
Newsletter Optin
Help Desk

sum function

Labels

This Discussion is public

Notifications

i use the follow as its say in the

add_filter('frm_before_display_content', 'dynamic_frm_stats', 10, 4);
function dynamic_frm_stats($content, $display, $show, $atts){
    if ( $display->ID == 1066 ) {//Change 1066 to the ID of your View
        $entries = $atts['entry_ids'];
        $total = 0;
        foreach($entries as $entry){
            $current_value = FrmProEntriesController::get_field_value_shortcode(array( 'field_id' => x, 'entry' => $entry ) );
            if ( $current_value ) {
                $total += $current_value;
            }
        }
        $content = str_replace('[sum_x]', $total, $content);
    }
    return $content;
}

But what happens if i want to have sum in many vies???
1066 view works perfect, but what if i make a copy of this viw and still want to have sums??

should i make a copy of the above code in the function.php file so many times as many views i have???

Yes. You will have to give each copy a different function name. I find including the view, form, or field id, depending on the function, as a good name.

Example 1:

add_filter('frm_before_display_content', 'dynamic_frm_stats_1320', 10, 4); function dynamic_frm_stats_1320($content, $display, $show, $atts){

Example 2:

add_filter('frm_before_display_content', 'dynamic_frm_stats_1100', 10, 4); function dynamic_frm_stats_1100($content, $display, $show, $atts){

Hi,

Why not use in_array test :

$view_id = $display->ID

if ( in_array( $view_id , array( 1066, 1100, 1162 ) )  )  {
// Your code ...
}

or maybe OR operator :

if ( $display->ID == 1066 ||  $display->ID == 1100 || $display->ID == 11162)  {
// Your code ...
}

I believe in economizing code and would use the in_array method as suggested by Lamiki.This will allow you to use the one small snippet for as many fields as you'd like to sum.

Dear Friends

First of all i  thank you very much

As you can understand I m not a programmer

I m accountant, and i try to make something for our office  a small app

I cannot understand  what is in_aray test, where to write this little code

what is small snippet.

What ever i learn so far i did it by myself. I try hard to understand  some terminology

I have to say thanks to all of you for your help. I already try the method  Mr Bobby Clapp

say, because i can make it.

 

Hi Guys,

I have a related issues to this snippet that i noticed over the weekend:

It works well for most view types except the Dynamic view. In list mode it all works nicely but when you go to the detail view it produces an error:

Warning: Invalid argument supplied for foreach() in /var/sites/f/YourSite.com/public_html/wp-content/plugins/MyPlugin.php/MyPlugin.php on line 102

As stated in the error message line 102 in my plugin is the start of the foreach($entries as $entry) statement.

I haven't looked into it much yet but thought i'd share the issue for others. I'll post a solution for it soon hopefully (unless anyone else already has a solution for this issue?).

Thanks

Chris

Hi guys,

The solution to the error above was actually nice and simple. See below:

foreach ( (array) $entries as $entry ){
$total += (double) FrmProStatisticsController::stats_shortcode(array('id' => 173, 'type' => 'total', 'entry_id' => $entry) );
}

Thanks

Chris

Discussion closed.