function ideaboxGetUserGroupNom($id)
{
    global $db, $langs;
    if (isset($id) && $id > 0) {
        $usergroup = new UserGroup($db);
        $usergroup->fetch($id);
        return $usergroup->nom;
    } else {
        return false;
    }
}
 public function getNameUserGroup(&$dolidb)
 {
     $usergroup = new UserGroup($dolidb);
     $usergroup->fetch($this->fk_usergroup);
     return $usergroup->id > 0 ? $usergroup->name : 'Pour tous';
 }
{
	$num = $db->num_rows($resql);
	$i = 0;

	$ldap=new Ldap();
	$ldap->connect_bind();

	while ($i < $num)
	{
		$ldap->error="";

		$obj = $db->fetch_object($resql);

		$fgroup = new UserGroup($db);
		$fgroup->id = $obj->rowid;
		$fgroup->fetch($fgroup->id);

		print $langs->trans("UpdateGroup")." rowid=".$fgroup->id." ".$fgroup->name;

		$oldobject=$fgroup;

	    $oldinfo=$oldobject->_load_ldap_info();
	    $olddn=$oldobject->_load_ldap_dn($oldinfo);

	    $info=$fgroup->_load_ldap_info();
		$dn=$fgroup->_load_ldap_dn($info);

		$result=$ldap->add($dn,$info,$user);	// Wil fail if already exists
		$result=$ldap->update($dn,$info,$user,$olddn);
		if ($result > 0)
		{
 static function getHeadForObject($tab_object, $fk_object)
 {
     global $db, $conf, $langs, $user;
     $head = array();
     if (empty($tab_object)) {
         return $head;
     }
     if ($tab_object === 'product') {
         dol_include_once('/product/class/product.class.php');
         dol_include_once('/core/lib/product.lib.php');
         $object = new Product($db);
         $object->fetch($fk_object);
         $head = product_prepare_head($object);
     } else {
         if ($tab_object === 'thirdparty') {
             dol_include_once('/societe/class/societe.class.php');
             dol_include_once('/core/lib/company.lib.php');
             $object = new Societe($db);
             $object->fetch($fk_object);
             $head = societe_prepare_head($object);
         } else {
             if ($tab_object === 'contact') {
                 dol_include_once('/contact/class/contact.class.php');
                 dol_include_once('/core/lib/contact.lib.php');
                 $object = new Contact($db);
                 $object->fetch($fk_object);
                 $head = contact_prepare_head($object);
             } else {
                 if ($tab_object === 'user') {
                     dol_include_once('/user/class/user.class.php');
                     dol_include_once('/core/lib/usergroups.lib.php');
                     $object = new User($db);
                     $object->fetch($fk_object);
                     $head = user_prepare_head($object);
                 } else {
                     if ($tab_object === 'group') {
                         dol_include_once('/user/class/usergroup.class.php');
                         dol_include_once('/lib/usergroups.lib.php');
                         $object = new UserGroup($db);
                         $object->fetch($fk_object);
                         $head = group_prepare_head($object);
                     } else {
                         if ($tab_object === 'project') {
                             dol_include_once('/projet/class/project.class.php');
                             dol_include_once('/core/lib/project.lib.php');
                             $object = new Project($db);
                             $object->fetch($fk_object);
                             $head = project_prepare_head($object);
                         }
                     }
                 }
             }
         }
     }
     return $head;
 }
Exemple #5
0
 /**
  * 	Return array of groups objects for a particular user
  *
  *	@param		int		$userid 	User id to search
  * 	@return		array     			Array of groups objects
  */
 function listGroupsForUser($userid)
 {
     global $conf, $user;
     $ret = array();
     $sql = "SELECT g.rowid, ug.entity as usergroup_entity";
     $sql .= " FROM " . MAIN_DB_PREFIX . "usergroup as g,";
     $sql .= " " . MAIN_DB_PREFIX . "usergroup_user as ug";
     $sql .= " WHERE ug.fk_usergroup = g.rowid";
     $sql .= " AND ug.fk_user = "******" AND g.entity IS NOT NULL";
     } else {
         $sql .= " AND g.entity IN (0," . $conf->entity . ")";
     }
     $sql .= " ORDER BY g.nom";
     dol_syslog(get_class($this) . "::listGroupsForUser", LOG_DEBUG);
     $result = $this->db->query($sql);
     if ($result) {
         while ($obj = $this->db->fetch_object($result)) {
             if (!array_key_exists($obj->rowid, $ret)) {
                 $newgroup = new UserGroup($this->db);
                 $newgroup->fetch($obj->rowid);
                 $ret[$obj->rowid] = $newgroup;
             }
             $ret[$obj->rowid]->usergroup_entity[] = $obj->usergroup_entity;
         }
         $this->db->free($result);
         return $ret;
     } else {
         $this->error = $this->db->lasterror();
         return -1;
     }
 }
    /**
     * @depends	testUserGroupOther
     * The depends says test is run only if previous is ok
     */
    public function testUserGroupDelete($id)
    {
    	global $conf,$user,$langs,$db;
		$conf=$this->savconf;
		$user=$this->savuser;
		$langs=$this->savlangs;
		$db=$this->savdb;

		$localobject=new UserGroup($this->savdb);
    	$result=$localobject->fetch($id);
		$result=$localobject->delete($id);

		print __METHOD__." id=".$id." result=".$result."\n";
    	$this->assertLessThan($result, 0);
    	return $result;
    }
Exemple #7
0
            $db->rollback();
            if (is_array($edituser->errors) && count($edituser->errors)) {
                $message = '<div class="error">' . join('<br>', $langs->trans($edituser->errors)) . '</div>';
            } else {
                $message = '<div class="error">' . $langs->trans($edituser->error) . '</div>';
            }
            $action = "create";
            // Go back to create page
        }
    }
}
// Action ajout groupe utilisateur
if (($action == 'addgroup' || $action == 'removegroup') && $caneditfield) {
    if ($group) {
        $editgroup = new UserGroup($db);
        $editgroup->fetch($group);
        $editgroup->oldcopy = dol_clone($editgroup);
        $edituser = new User($db);
        $edituser->fetch($id);
        if ($action == 'addgroup') {
            $edituser->SetInGroup($group, GETPOST('entity'));
        }
        if ($action == 'removegroup') {
            $edituser->RemoveFromGroup($group, GETPOST('entity'));
        }
        if ($result > 0) {
            header("Location: fiche.php?id=" . $id);
            exit;
        } else {
            $message .= $edituser->error;
        }
Exemple #8
0
$userid = GETPOST('userid', 'int');
$socid = GETPOST('socid', 'int');
// Security check
if ($user->societe_id > 0) {
    $action = '';
    $socid = $user->societe_id;
}
$nowyear = strftime("%Y", dol_now());
$year = GETPOST('year') > 0 ? GETPOST('year') : $nowyear;
//$startyear=$year-2;
$startyear = $year - 1;
$endyear = $year;
$includeuserlist = array();
if (!empty($conf->global->LEAD_GRP_USER_AFFECT)) {
    $usergroup = new UserGroup($db);
    $result = $usergroup->fetch($conf->global->LEAD_GRP_USER_AFFECT);
    if ($result < 0) {
        setEventMessage($usergroup->error, 'errors');
    }
    $includeuserlisttmp = $usergroup->listUsersForGroup();
    if (is_array($includeuserlisttmp) && count($includeuserlisttmp) > 0) {
        foreach ($includeuserlisttmp as $usertmp) {
            $includeuserlist[] = $usertmp->id;
        }
    }
}
$langs->load('lead@lead');
llxHeader('', $langs->trans('Module103111Name'));
$stats_lead = new LeadStats($db);
if (!empty($userid) && $userid != -1) {
    $stats_lead->userid = $userid;
 /**
  *      Function called when a Dolibarrr business event is done.
  *      All functions "run_trigger" are triggered if file is inside directory htdocs/core/triggers
  *
  *      @param	string		$action		Event action code
  *      @param  Object		$object     Object
  *      @param  User		$user       Object user
  *      @param  Translate	$langs      Object langs
  *      @param  conf		$conf       Object conf
  *      @return int         			<0 if KO, 0 if no triggered ran, >0 if OK
  */
 function run_trigger($action, $object, $user, $langs, $conf)
 {
     if (empty($conf->ldap->enabled)) {
         return 0;
     }
     // Module not active, we do nothing
     if (!function_exists('ldap_connect')) {
         dol_syslog("Warning, module LDAP is enabled but LDAP functions not available in this PHP", LOG_WARNING);
         return 0;
     }
     // Users
     if ($action == 'USER_CREATE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->add($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'USER_MODIFY') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             if (empty($object->oldcopy) || !is_object($object->oldcopy)) {
                 dol_syslog("Trigger " . $action . " was called by a function that did not set previously the property ->oldcopy onto object", LOG_WARNING);
                 $object->oldcopy = dol_clone($object);
             }
             $oldinfo = $object->oldcopy->_load_ldap_info();
             $olddn = $object->oldcopy->_load_ldap_dn($oldinfo);
             // Verify if entry exist
             $container = $object->oldcopy->_load_ldap_dn($oldinfo, 1);
             $search = "(" . $object->oldcopy->_load_ldap_dn($oldinfo, 2) . ")";
             $records = $ldap->search($container, $search);
             if (count($records) && $records['count'] == 0) {
                 $olddn = '';
             }
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->update($dn, $info, $user, $olddn);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'USER_NEW_PASSWORD') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             if (empty($object->oldcopy) || !is_object($object->oldcopy)) {
                 dol_syslog("Trigger " . $action . " was called by a function that did not set previously the property ->oldcopy onto object", LOG_WARNING);
                 $object->oldcopy = dol_clone($object);
             }
             $oldinfo = $object->oldcopy->_load_ldap_info();
             $olddn = $object->oldcopy->_load_ldap_dn($oldinfo);
             // Verify if entry exist
             $container = $object->oldcopy->_load_ldap_dn($oldinfo, 1);
             $search = "(" . $object->oldcopy->_load_ldap_dn($oldinfo, 2) . ")";
             $records = $ldap->search($container, $search);
             if (count($records) && $records['count'] == 0) {
                 $olddn = '';
             }
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->update($dn, $info, $user, $olddn);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'USER_ENABLEDISABLE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
     } elseif ($action == 'USER_DELETE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->delete($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'USER_SETINGROUP') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             // Must edit $object->newgroupid
             $usergroup = new UserGroup($this->db);
             if ($object->newgroupid > 0) {
                 $usergroup->fetch($object->newgroupid);
                 $oldinfo = $usergroup->_load_ldap_info();
                 $olddn = $usergroup->_load_ldap_dn($oldinfo);
                 // Verify if entry exist
                 $container = $usergroup->_load_ldap_dn($oldinfo, 1);
                 $search = "(" . $usergroup->_load_ldap_dn($oldinfo, 2) . ")";
                 $records = $ldap->search($container, $search);
                 if (count($records) && $records['count'] == 0) {
                     $olddn = '';
                 }
                 $info = $usergroup->_load_ldap_info();
                 // Contains all members, included the new one (insert already done before trigger call)
                 $dn = $usergroup->_load_ldap_dn($info);
                 $result = $ldap->update($dn, $info, $user, $olddn);
                 if ($result < 0) {
                     $this->error = "ErrorLDAP " . $ldap->error;
                 }
             }
             return $result;
         }
     } elseif ($action == 'USER_REMOVEFROMGROUP') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             // Must edit $object->newgroupid
             $usergroup = new UserGroup($this->db);
             if ($object->oldgroupid > 0) {
                 $usergroup->fetch($object->oldgroupid);
                 $oldinfo = $usergroup->_load_ldap_info();
                 $olddn = $usergroup->_load_ldap_dn($oldinfo);
                 // Verify if entry exist
                 $container = $usergroup->_load_ldap_dn($oldinfo, 1);
                 $search = "(" . $usergroup->_load_ldap_dn($oldinfo, 2) . ")";
                 $records = $ldap->search($container, $search);
                 if (count($records) && $records['count'] == 0) {
                     $olddn = '';
                 }
                 $info = $usergroup->_load_ldap_info();
                 // Contains all members, included the new one (insert already done before trigger call)
                 $dn = $usergroup->_load_ldap_dn($info);
                 $result = $ldap->update($dn, $info, $user, $olddn);
                 if ($result < 0) {
                     $this->error = "ErrorLDAP " . $ldap->error;
                 }
             }
             return $result;
         }
     } elseif ($action == 'GROUP_CREATE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             // Get a gid number for objectclass PosixGroup
             if (in_array('posixGroup', $info['objectclass'])) {
                 $info['gidNumber'] = $ldap->getNextGroupGid();
             }
             $result = $ldap->add($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'GROUP_MODIFY') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             if (empty($object->oldcopy) || !is_object($object->oldcopy)) {
                 dol_syslog("Trigger " . $action . " was called by a function that did not set previously the property ->oldcopy onto object", LOG_WARNING);
                 $object->oldcopy = dol_clone($object);
             }
             $oldinfo = $object->oldcopy->_load_ldap_info();
             $olddn = $object->oldcopy->_load_ldap_dn($oldinfo);
             // Verify if entry exist
             $container = $object->oldcopy->_load_ldap_dn($oldinfo, 1);
             $search = "(" . $object->oldcopy->_load_ldap_dn($oldinfo, 2) . ")";
             $records = $ldap->search($container, $search);
             if (count($records) && $records['count'] == 0) {
                 $olddn = '';
             }
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->update($dn, $info, $user, $olddn);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'GROUP_DELETE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && $conf->global->LDAP_SYNCHRO_ACTIVE === 'dolibarr2ldap') {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->delete($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'CONTACT_CREATE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_CONTACT_ACTIVE)) {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->add($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'CONTACT_MODIFY') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_CONTACT_ACTIVE)) {
             $ldap = new Ldap();
             $ldap->connect_bind();
             if (empty($object->oldcopy) || !is_object($object->oldcopy)) {
                 dol_syslog("Trigger " . $action . " was called by a function that did not set previously the property ->oldcopy onto object", LOG_WARNING);
                 $object->oldcopy = dol_clone($object);
             }
             $oldinfo = $object->oldcopy->_load_ldap_info();
             $olddn = $object->oldcopy->_load_ldap_dn($oldinfo);
             // Verify if entry exist
             $container = $object->oldcopy->_load_ldap_dn($oldinfo, 1);
             $search = "(" . $object->oldcopy->_load_ldap_dn($oldinfo, 2) . ")";
             $records = $ldap->search($container, $search);
             if (count($records) && $records['count'] == 0) {
                 $olddn = '';
             }
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->update($dn, $info, $user, $olddn);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'CONTACT_DELETE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_CONTACT_ACTIVE)) {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->delete($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'MEMBER_CREATE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_MEMBER_ACTIVE)) {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->add($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'MEMBER_VALIDATE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_MEMBER_ACTIVE)) {
             // If status field is setup to be synchronized
             if (!empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) {
                 $ldap = new Ldap();
                 $ldap->connect_bind();
                 $info = $object->_load_ldap_info();
                 $dn = $object->_load_ldap_dn($info);
                 $olddn = $dn;
                 // We know olddn=dn as we change only status
                 $result = $ldap->update($dn, $info, $user, $olddn);
                 if ($result < 0) {
                     $this->error = "ErrorLDAP " . $ldap->error;
                 }
                 return $result;
             }
         }
     } elseif ($action == 'MEMBER_SUBSCRIPTION') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_MEMBER_ACTIVE)) {
             // If subscriptions fields are setup to be synchronized
             if ($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE || $conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_AMOUNT || $conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_DATE || $conf->global->LDAP_FIELD_MEMBER_LASTSUBSCRIPTION_AMOUNT || $conf->global->LDAP_FIELD_MEMBER_END_LASTSUBSCRIPTION) {
                 $ldap = new Ldap();
                 $ldap->connect_bind();
                 $info = $object->_load_ldap_info();
                 $dn = $object->_load_ldap_dn($info);
                 $olddn = $dn;
                 // We know olddn=dn as we change only subscriptions
                 $result = $ldap->update($dn, $info, $user, $olddn);
                 if ($result < 0) {
                     $this->error = "ErrorLDAP " . $ldap->error;
                 }
                 return $result;
             }
         }
     } elseif ($action == 'MEMBER_MODIFY') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_MEMBER_ACTIVE)) {
             $ldap = new Ldap();
             $ldap->connect_bind();
             if (empty($object->oldcopy) || !is_object($object->oldcopy)) {
                 dol_syslog("Trigger " . $action . " was called by a function that did not set previously the property ->oldcopy onto object", LOG_WARNING);
                 $object->oldcopy = dol_clone($object);
             }
             $oldinfo = $object->oldcopy->_load_ldap_info();
             $olddn = $object->oldcopy->_load_ldap_dn($oldinfo);
             // Verify if entry exist
             $container = $object->oldcopy->_load_ldap_dn($oldinfo, 1);
             $search = "(" . $object->oldcopy->_load_ldap_dn($oldinfo, 2) . ")";
             $records = $ldap->search($container, $search);
             if (count($records) && $records['count'] == 0) {
                 $olddn = '';
             }
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->update($dn, $info, $user, $olddn);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     } elseif ($action == 'MEMBER_NEW_PASSWORD') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_MEMBER_ACTIVE)) {
             // If password field is setup to be synchronized
             if ($conf->global->LDAP_FIELD_PASSWORD || $conf->global->LDAP_FIELD_PASSWORD_CRYPTED) {
                 $ldap = new Ldap();
                 $ldap->connect_bind();
                 $info = $object->_load_ldap_info();
                 $dn = $object->_load_ldap_dn($info);
                 $olddn = $dn;
                 // We know olddn=dn as we change only password
                 $result = $ldap->update($dn, $info, $user, $olddn);
                 if ($result < 0) {
                     $this->error = "ErrorLDAP " . $ldap->error;
                 }
                 return $result;
             }
         }
     } elseif ($action == 'MEMBER_RESILIATE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_MEMBER_ACTIVE)) {
             // If status field is setup to be synchronized
             if (!empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) {
                 $ldap = new Ldap();
                 $ldap->connect_bind();
                 $info = $object->_load_ldap_info();
                 $dn = $object->_load_ldap_dn($info);
                 $olddn = $dn;
                 // We know olddn=dn as we change only status
                 $result = $ldap->update($dn, $info, $user, $olddn);
                 if ($result < 0) {
                     $this->error = "ErrorLDAP " . $ldap->error;
                 }
                 return $result;
             }
         }
     } elseif ($action == 'MEMBER_DELETE') {
         dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id);
         if (!empty($conf->global->LDAP_MEMBER_ACTIVE)) {
             $ldap = new Ldap();
             $ldap->connect_bind();
             $info = $object->_load_ldap_info();
             $dn = $object->_load_ldap_dn($info);
             $result = $ldap->delete($dn, $info, $user);
             if ($result < 0) {
                 $this->error = "ErrorLDAP " . $ldap->error;
             }
             return $result;
         }
     }
     // If not found
     /*
             else
             {
                 dol_syslog("Trigger '".$this->name."' for action '$action' was ran by ".__FILE__." but no handler found for this action.");
     			return -1;
             }
     */
     return 0;
 }
    print $langs->trans("Error") . ': ' . $langs->trans("LDAP setup for groups not defined inside Dolibarr");
    exit(-1);
}
$ldap = new Ldap();
$result = $ldap->connect_bind();
if ($result >= 0) {
    $justthese = array();
    // We disable synchro Dolibarr-LDAP
    $conf->global->LDAP_SYNCHRO_ACTIVE = 0;
    $ldaprecords = $ldap->getRecords('*', $conf->global->LDAP_GROUP_DN, $conf->global->LDAP_KEY_GROUPS, $required_fields, 0, array($conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS));
    if (is_array($ldaprecords)) {
        $db->begin();
        // Warning $ldapuser has a key in lowercase
        foreach ($ldaprecords as $key => $ldapgroup) {
            $group = new UserGroup($db);
            $group->fetch('', $ldapgroup[$conf->global->LDAP_KEY_GROUPS]);
            $group->name = $ldapgroup[$conf->global->LDAP_GROUP_FIELD_FULLNAME];
            $group->nom = $group->name;
            // For backward compatibility
            $group->note = $ldapgroup[$conf->global->LDAP_GROUP_FIELD_DESCRIPTION];
            $group->entity = $conf->entity;
            //print_r($ldapgroup);
            if ($group->id > 0) {
                // Group update
                print $langs->transnoentities("GroupUpdate") . ' # ' . $key . ': name=' . $group->name;
                $res = $group->update();
                if ($res > 0) {
                    print ' --> Updated group id=' . $group->id . ' name=' . $group->name;
                } else {
                    $error++;
                    print ' --> ' . $res . ' ' . $group->error;
$sql = "SELECT uid,rowid, title, fk_usergroup,fk_user_author FROM " . MAIN_DB_PREFIX . "qdashboard WHERE send_by_mail = '" . $frequence . "' AND fk_usergroup>0";
$Tab = $PDOdb->ExecuteAsArray($sql);
$f1 = fopen('files/convert.sh', 'w');
fputs($f1, "cd " . __DIR__ . "/files \n");
//	var_dump($sql,$Tab);
foreach ($Tab as $row) {
    $author = new User($db);
    $author->fetch($row->fk_user_author);
    //var_dump(  is_file( 'files/'.$row->uid.'.pdf'), dol_buildpath('/query/files/'.$row->uid.'.pdf') );
    if ($step == 1) {
        $url = dol_buildpath('/query/dashboard.php', 2) . '?action=run&uid=' . $row->uid;
        //echo $url;
        fputs($f1, "wkhtmltopdf --orientation Landscape " . escapeshellarg($url) . " " . $row->uid . ".pdf  \n");
    } elseif ($step == 2 && is_file(dol_buildpath('/query/files/' . $row->uid . '.pdf'))) {
        $g = new UserGroup($db);
        if ($g->fetch($row->fk_usergroup) > 0) {
            $TUser = $g->listUsersForGroup();
            foreach ($TUser as &$u) {
                if ($u->statut == 1) {
                    $mailto = $u->email;
                    if (!empty($mailto)) {
                        print "{$mailto} \n";
                        $m = new TReponseMail($author->email, $mailto, $langs->trans('Report') . ' : ' . $row->title, $langs->trans('PleaseFindYourReportHasAttachement') . " : " . dol_buildpath('/query/dashboard.php?action=run&id=' . $row->rowid, 2));
                        $m->add_piece_jointe($row->uid . '.pdf', dol_buildpath('/query/files/' . $row->uid . '.pdf'));
                        $m->send();
                    }
                }
            }
        }
        unlink(dol_buildpath('/query/files/' . $row->uid . '.pdf'));
        // suppresion du pdf après envoi par mail
	/**
	 * 	Return array of groups objects for a particular user
	 *	@param		userid    User id to search
	 * 	@return		array     Array of groups objects
	 */
	function listGroupsForUser($userid)
	{
		global $conf;

		$ret=array();

		$sql = "SELECT g.rowid, ug.entity as usergroup_entity";
		$sql.= " FROM ".MAIN_DB_PREFIX."usergroup as g,";
		$sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug";
		$sql.= " WHERE ug.fk_usergroup = g.rowid";
		$sql.= " AND ug.fk_user = "******" AND ug.entity IN (0,".$conf->entity.")";
		$sql.= " ORDER BY g.nom";

		dol_syslog("UserGroup::listGroupsForUser sql=".$sql,LOG_DEBUG);
		$result = $this->db->query($sql);
		if ($result)
		{
			while ($obj = $this->db->fetch_object($result))
			{
				$group=new UserGroup($this->db);
				$group->fetch($obj->rowid);
				$group->usergroup_entity = $obj->usergroup_entity;

				$ret[]=$group;
			}

			$this->db->free($result);

			return $ret;
		}
		else
		{
			$this->error=$this->db->lasterror();
			dol_syslog("UserGroup::listGroupsForUser ".$this->error, LOG_ERR);
			return -1;
		}
	}