Example #1
0
      $display['msg'] .= display_err_msg($l_no_group_added);
    }
  } else {
    $display['msg'] .= display_warn_msg($err['msg']);
  }
  $display['detail'] = dis_group_consult($params, $obm['uid']);

} elseif ($action == 'group_del') {
///////////////////////////////////////////////////////////////////////////////
  if (check_group_update_rights($params)) {
    if ($params['group_nb'] > 0) {
      $nb = run_query_group_group_delete($params);
      // Set update state only if updated group is public
      $g = get_group_info($params['group_id']);
      if ($g['privacy'] == 0) {
	set_update_state();
      }
      $display['msg'] .= display_ok_msg("$nb $l_group_removed");
    } else {
      $display['msg'] .= display_err_msg($l_no_group_deleted);
    }
  } else {
    $display['msg'] .= display_warn_msg($err['msg']);
  }
  $display['detail'] = dis_group_consult($params, $obm['uid']);

} else if ($action == 'display') {
///////////////////////////////////////////////////////////////////////////////
  $prefs = get_display_pref($obm['uid'], 'group', 1);
  $prefs_u = get_display_pref($obm['uid'], 'group_user', 1);
  $display['detail'] = dis_group_display_pref($prefs, $prefs_u);
Example #2
0
 /**
  * Force synchronization of external repositories, such as the OBM LDAP directory,
  * with new informations provides by LemonLDAP.
  * User data are synchronized, like groups and user password.
  * @param $user_id
  * @param $domain_id
  * @param $username Login of the user
  */
 protected function syncExternalData ($user_id, $domain_id, $username)
 {
   global $obm, $entities;
   //
   // $entities is defined into the file package.inc.php, from
   // this LemonLDAP library. It is temporary.
   //
   if (!$this->isEnabled())
   {
     return false;
   }
   //
   // Fixe parameters.
   //
   $params['domain_id'] = $domain_id;
   $params['update_type'] = 'incremental';
   $params['realm'] = 'domain';
   $backup['uid'] = $obm['uid'];
   $obm['uid'] = $user_id;
   //
   // Launch external update. This could take few seconds.
   //
   set_update_lock();
   set_update_state($domain_id);
   store_update_data($params);
   exec_tools_update_update($params);
   remove_update_lock();
   $obm['uid'] = $backup['uid'];
   unset($backup);
 }
Example #3
0
  /**
   * Update group information.
   * @param $group_name A group name.
   * @param $domain_id A valid domain identifier.
   * @param $user_id A valid user identifier.
   * @param $group_id The corresponding group identifier.
   * @param $group_data Associative array of group data, included group_id.
   * @return int The group identifier updated.
   */
  function updateGroup($group_name, $group_id, $group_data, $user_id, $domain_id)
  {
    global $obm, $perm;

    $succeed = false;

    $params_db = $this->getGroupDataFromId($group_id, $domain_id);
    foreach ($params_db as $key => $value)
    {
      if (array_key_exists($key, $group_data))
        $params_db[$key] = $group_data[$key];
    }
    $params_db = $this->_setDefaultGroupData($params_db, $domain_id, $user_id);
    $params_db['action'] = DEFAULT_OBM_MODTYPE_UPDATE;

    $backup['obm_uid'] = $obm['uid'];
    $backup['obm_domain_id'] = $obm['domain_id'];
    $backup['globals_module'] = $GLOBALS['module'];
    $backup['perm'] = $perm;
    $obm['domain_id'] = $domain_id;
    $obm['uid'] = $params_db[$this->_sqlMap['group_usercreate']];
    $GLOBALS['module'] = 'group';
    $perm = new LemonLDAP_Perm();

    if (check_group_data_form($params_db)
        && run_query_group_update($params_db))
    {
      set_update_state();
      $succeed = $group_id;
      $this->_updated = true;
    }

    $obm['uid'] = $backup['obm_uid'];
    $obm['domain_id'] = $backup['obm_domain_id'];
    $GLOBALS['module'] = $backup['globals_module'];
    $perm = $backup['perm'];
    unset($backup);

    return $succeed;
  }
Example #4
0
  if(!exec_tools_cancel_update($params)) {
    echo "({error:1,message:'".phpStringToJsString($GLOBALS['l_cant_undo_'.$params['state'].'_'.$params['entity']])."'})";
  } else {
    echo "({error:0,message:'".phpStringToJsString($GLOBALS['l_undo_success'])."'})";
  }
  die();
  
} elseif ($action == 'update_detail') {
///////////////////////////////////////////////////////////////////////////////
  $display['detail'] = dis_tools_update_detail();

} elseif ($action == 'update_update') {
///////////////////////////////////////////////////////////////////////////////
  if (check_tools_update_context_ok($params)) {
    set_update_lock();
    set_update_state($params['domain_id']);
    store_update_data($params);
    run_query_tools_init_progress();
    $res = exec_tools_update_update($params);
    if ($res === 0) {
      $display['msg'] .= display_ok_msg($l_upd_running);
      $display['detail'] = dis_tools_update_detail();
      remove_update_lock();
    } else {
      $display['msg'] .= display_err_msg("$l_upd_error ($res)");
      remove_update_lock();
      $display['detail'] = dis_tools_update_detail();
    }
  } else {
    // Si le contexte ne permet pas une modification de configuration
    $display['msg'] .= display_warn_msg($err['msg']);
Example #5
0
  private static function storeCoords($contact) {
    global $cdg_sql;

    $id = sql_parse_id($contact->__get('entity_id'));
    $obm_q = new DB_OBM;
  
    $query = "DELETE FROM Phone WHERE phone_entity_id = $id";
    display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(phone)');
    $obm_q->query($query);
    if(is_array($contact->phone)) {
      $cpt = array();
      foreach($contact->phone as $phone) {
        if(trim($phone['number']) != '' ) {
          if(is_array($phone['label'])) {
            array_pop($phone['label']);
            $phone['label'] = implode(';',$phone['label']); 
          } else {
            $phone['label'] = str_replace('_', ';', $phone['label']);
          }
          $cpt[$phone['label']]++;
          $query = "INSERT INTO Phone (phone_entity_id, phone_number, phone_label) VALUES ($id, '$phone[number]', '$phone[label];X-OBM-Ref".$cpt[$phone['label']]."')";
          display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(phone)');
          $obm_q->query($query);
        }
      }
    }
  
    $query = "DELETE FROM Address WHERE address_entity_id = $id";
    display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(address)');
    $obm_q->query($query);
    if(is_array($contact->address)) {
      $cpt = array();
      foreach($contact->address as $address) {
        if(trim($address['country_iso3166']) == 'none') $address['country_iso3166'] = '';
        if(trim($address['country_iso3166']) == '' &&  trim($address['country']) != '') {
          $address['country_iso3166'] = self::getCountryIso3166($address['country']);
        }
        if(trim($address['street']) != '' || trim($address['country_iso3166']) != '' 
          || trim($address['zipcode']) != '' || trim($address['expresspostal']) != '') {
          if(is_array($address['label'])) {
            array_pop($address['label']);
            $address['label'] = implode(';',$address['label']); 
          } else {
            $address['label'] = str_replace('_', ';', $address['label']);
          }          
          $cpt[$address['label']]++;
          $query = "INSERT INTO Address (
            address_entity_id,
            address_street,
            address_zipcode,
            address_town,
            address_expresspostal,
            address_country,
            address_label
          ) VALUES (
            $id, 
            '".addslashes($address[street])."',
            '".addslashes($address[zipcode])."',
            '".addslashes($address[town])."',
            '".addslashes($address[expresspostal])."',
            '$address[country_iso3166]',
            '$address[label];X-OBM-Ref".$cpt[$address['label']]."'
          )";
          display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(address)');
          $obm_q->query($query);
        }
      }
    }
  
    $query = "DELETE FROM Website WHERE website_entity_id = $id";
    display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(website)');
    $obm_q->query($query);
  
    if(is_array($contact->website)) {
      $cpt = array();
      foreach($contact->website as $website) {
        if(trim($website['url']) != '' ) {
          if(is_array($website['label'])) {
            array_pop($website['label']);
            $website['label'] = implode(';',$website['label']); 
          } else {
            $website['label'] = str_replace('_', ';', $website['label']);
          }              
          $cpt[$website['label']]++;
          $query = "INSERT INTO Website (website_entity_id, website_url, website_label) VALUES ($id, '".addslashes($website[url])."', '$website[label];X-OBM-Ref".$cpt[$website['label']]."')";
          display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(website)');
          $obm_q->query($query);
        }
      }
    }
  
    $query = "DELETE FROM IM WHERE im_entity_id = $id";
    display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(IM)');
    $obm_q->query($query);
  
    if(is_array($contact->im)) {
      $cpt = array();
      foreach($contact->im as $im) {
        if(trim($im['address']) != '' ) {
          $cpt[$im['protocol']]++;          
          $query = "INSERT INTO IM (im_entity_id, im_address, im_protocol, im_label) VALUES ($id, '".addslashes($im[address])."', '$im[protocol]', '$im[protocol];X-OBM-Ref".$cpt[$im['protocol']]."')";
          display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(IM)');
          $obm_q->query($query);
        }
      }
    }

    $query = "DELETE FROM Email WHERE email_entity_id = $id";
    display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(Email)');
    $obm_q->query($query);
    if($obm_q->affected_rows() > 0) $updateGroup = true;
  
    if(is_array($contact->email)) {
      $cpt = array();
      foreach($contact->email as $email) {
        $updateGroup = true;
        if(trim($email['address']) != '' ) {
          if(is_array($email['label'])) {
            array_pop($email['label']);
            $email['label'] = implode(';',$email['label']); 
          } else {
            $email['label'] = str_replace('_', ';', $email['label']);
          }                
          $cpt[$email['label']]++;
          $query = "INSERT INTO Email (email_entity_id, email_address, email_label) VALUES ($id, '".trim($email['address'])."', '$email[label];X-OBM-Ref".$cpt[$email['label']]."')";
          display_debug_msg($query, $cdg_sql, 'OBM_Contact::storeCoords(Email)');
          $obm_q->query($query);
        }
      }
    }
    if($updateGroup) {
      $obm_q->query("UPDATE UGroup SET group_timeupdate = NOW() WHERE group_id IN (SELECT group_id FROM _contactgroup WHERE contact_id = ".$contact->id.")");
      set_update_state();
    }    
  }