Adding a team to a record through coding using after_save logic hook not working

Hi everyone,

I would like to add a team to a record through coding. I am using after_save logic hook but it is not add the team to the record. If I use before_save hook, then it’s working. I would like to use after_save hook as it is recommended by Sugar Documentation. I would appreciate if you can help. My Sugar version is Pro 7.9.20. Bellow is my coding:

sugarcrm\custom\Extension\modules\Accounts\Ext\LogicHooks\addTeam.ext.php

<?php

    $hook_array['after_save'][] = Array(
        //Processing index. For sorting the array.
        1,

        //Label. A string value to identify the hook.
        'Add Team value before_save',

        //The PHP file where your class is located.
        'custom/modules/Accounts/addTeam.php',

        //The class the method is in.
        'AddTeam_class',

        //The method to call.
        'add_team_method'
    );
?>

sugarcrm\custom\modules\Accounts\addTeam.php

<?php
    if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

    class AddTeam_class
    {
        function add_team_method($bean, $event, $arguments)
        {
            //loop prevention check
            if (!isset($bean->ignore_update_c) || $bean->ignore_update_c === false)
            {
                $bean->ignore_update_c = true;
                $module = $bean->module_dir;
                $record_id = $bean->id;

                $GLOBALS['log']->fatal(">>>> add teams executed >>>>>");

                //Retrieve the bean
                $bean = BeanFactory::getBean($module, $record_id);


                //Load the team relationship
                $bean->load_relationship('teams');

                $tl_team_id  = "a799aafc-d021-11e7-990a-00ff10f03434";
                $tcc_team_id = "b79db27c-d021-11e7-819e-00ff10f03434";
                $ft_team_id  = "d1f6ad5e-d021-11e7-a70e-00ff10f03434";

              
                //Add the teams
                $bean->teams->add(
                    array(
                        $ft_team_id,
                    )
                );
                $bean->save();
            }
        }
    }
?>

Sayfur Rahman, Francesca Shiekh, Ramana Raju SanthanaLori Arce

Parents Reply Children
  • yes, i run it in after_save logic hook.

    Here is my code:

    1. sugarcrm\custom\Extension\modules\Cases\Ext\LogicHooks

    <?php
        $hook_array['after_save'][] = Array(
            //Processing index. For sorting the array.
            1,

            //Label. A string value to identify the hook.
            'Add Team value before_save',

            //The PHP file where your class is located.
            'custom/modules/Accounts/addTeam.php',

            //The class the method is in.
            'AddTeam_class',

            //The method to call.
            'add_team_method'
        );

    ?>

    2. sugarcrm\custom\modules\Accounts

    <?php

        if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

        class AddTeam_class
        {
            function add_team_method($bean, $event, $arguments)
            {
                 //loop prevention check
                 if (!isset($bean->ignore_update_c) || $bean->ignore_update_c === false)
                 {
                      self::addTeams($bean,['d1f6ad5e-d021-11e7-a70e-00ff10f03434']);
              }

            }

            public static function addTeams($bean,$teams){
                $teams = is_array($teams) ? $teams : [$teams];
                if(!sizeof($teams)) return;
                $teamSetBean = new TeamSet();
                $oldTeams = $teamSetBean->getTeams($bean->team_set_id);
                foreach($oldTeams as $id=>$team){
                    $teams[]=$id;
                }
                $bean->load_relationship('teams');
                $bean->teams->replace($teams);
            }
        }
    ?>
  • I bet you just forgot to rebuild your sugar after you switched back to after save logic hook. On my server the same functionality works just fine, but when I now tried to switch it to the before save, I experienced the same behaviour as you... so really just run rebuild and you should be fine  Or maybe you forgot to upload the file to your server?

    also, the loop prevention check is now redundant

  • hi Karel ÄŒech, yes you are right, after rebuild, now its working as desired. Thank for you help.

  • Cool, please mark my original answer as an answer to your question, so it is clearly visible for other users