1
0
Fork 0
This repository has been archived on 2023-11-30. You can view files and clone it, but cannot push or open issues or pull requests.
dtux__gestion_ateliers/nconnector.php

157 lines
5.7 KiB
PHP
Executable File

#!/usr/bin/php
<?php
require_once "session_init.php";
require_once "config.inc.php";
require_once "log.php";
require_once "db.class.php";
include_once "entete_dolibarr.php";
function concat ($a, $b)
{
if ( !empty($a) && !empty($b) )
{
$r = $a . " " . $b;
}else
{
$r = $a . $b;
}
return $r;
}
$status_nc='';
$flag = 0;
$data = array("displayname"=>array("value"=>"","scope"=>"contacts","verified"=>"0"),"address"=>array("value"=>"[adresse]","scope"=>"private","verified"=>"0"),"website"=>array("value"=>"","scope"=>"private","verified"=>"0"),"email"=>array("value"=>"","scope"=>"contacts","verified"=>"1"),"avatar"=>array("scope"=>"contacts","verified"=>"0"),"phone"=>array("value"=>"","scope"=>"private","verified"=>"0"),"twitter"=>array("value"=>"","scope"=>"private","verified"=>"0"));
$doldb = new db("dolibarr");
$ncdb = new db("nextcloud");
$doldb->query("SELECT login, firstname, lastname, pass_crypted, fk_adherent_type, address, email, phone_perso, phone_mobile, zip, town, fk_user_valid, datefin FROM llx_adherent");
//print_r ($ncdb);
while ($user = $doldb->result->fetch_assoc())
{
$insert = false;
if ($user["fk_user_valid"] == null) $user["fk_user_valid"] = 0;
$ncdb->query("SELECT uid FROM oc_accounts WHERE uid='" . $user["login"] . "'");
if ( $ncdb->result->num_rows != 0 )
{
// L'utilisateur existe déjà, on ne le crée pas, mais on vérifie sa validité et si il est à jour de cotisation.
$ncuser = $ncdb->result->fetch_assoc();
// vérification si l'utilisateur est à jour de cotisation
if( !empty($user['datefin']) )
{
$datefin = DateTime::createFromFormat("Y-m-d H:i:s", $user['datefin']);
$interval = new DateInterval('P0000Y02M00D');
$datefin->add($interval);
if ( $datefin->getTimestamp() <= time() )
{
// désactive l'utilisateur hors cotisation
echo "Utilisateur " . $user["login"] . " hors cotisation" .EOL;
$status = "false";
}else
{
// réactive l'utilisateur désactivé à jour de cotisation.
//echo "réactive l'utilisateur " . $user["login"] . " désactivé à jour de cotisation" . EOL;
$status = "true";
}
}
$ncdb->query("SELECT configvalue FROM oc_preferences WHERE userid='" . $user["login"] . "' AND appid='core' AND configkey='enabled'");
if ( $ncdb->result->num_rows != 0 )
{
// le validité de l'utilisateur est définie
//echo "utilisateur " . $user["login"] . " valide" . EOL;
$r = $ncdb->result->fetch_assoc();
$status_nc = $r["configvalue"] ;
}else
{
// pas de définition de la validité de l'utilisateur => par défaut utilisateur valide
//echo "utilisateur valide par défaut";
$insert = true; // insertion de la validité dans la table préférence
//$status_nc = 'true';
}
if ( $user["fk_user_valid"] == 0 || $status_nc == "false" )
{
// différence entre nexcloud et dolibarr
//echo "mise à jour du statut de => " . $user["login"] . " à " . $user["fk_user_valid"] . EOL;
//write_status( $insert, $user["login"], $user["fk_user_valid"], $ncdb );
$status = "false";
}else
{
$status ="true";
}
if ( $status_nc != $status )
{
write_status( $insert, $user['login'] , $status, $ncdb );
}
}else
{
echo $user["login"] . " n'existe pas" . EOL;
if ( empty($user["phone_mobile"]) )
{
$data["phone"]["value"] = $user["phone_perso"];
}else
{
$data["phone"]["value"] = $user["phone_mobile"];
}
$data["displayname"]["value"] = addslashes(concat(utf8_encode($user["firstname"]), utf8_encode($user["lastname"])));
$address = concat(utf8_encode($user['address']), $user["zip"]);
$data["address"]["value"] = (concat ($address, utf8_encode($user["town"])));
$data["email"]["value"] = "'" . $user["email"] . "'";
print_r($data);
if ( ($account_data = json_encode($data)) == false )
{
echo json_last_error() . EOL;
exit (0);
}
$oc_account_query = 'INSERT INTO oc_accounts (uid, data) VALUES ("' . $user["login"] . '","' . addslashes($account_data) .'")';
$oc_users_query = 'INSERT INTO oc_users (uid, displayname, password, uid_lower) VALUES ("' . $user["login"] . '","' . $user["firstname"] . ' ' . $user["lastname"] . '","1|' . $user["pass_crypted"] . '","' . strtolower($user["login"]) . '")';
if ($user["fk_adherent_type"] == 2)
{
$gid="membres";
}else if ($user["fk_adherent_type"] == 3)
{
$gid="contributeurs";
}
$oc_group_user_query = "INSERT INTO oc_group_user(uid, gid) VALUES ('" . $user["login"] . "','" . $gid . "')";
$oc_preferences_query_quota = "INSERT INTO oc_preferences(userid, appid, configkey, configvalue) VALUES ('" . $user["login"] . "', 'files', 'quota', '10 GB')";
$oc_preferences_query_email = "INSERT INTO oc_preferences(userid, appid, configkey, configvalue) VALUES ('" . $user["login"] . "', 'settings', 'email', '" . $user["email"] . "')";
//echo $account_data . EOL . $oc_account_query . EOL . $oc_users_query .EOL . $oc_group_user_query . EOL . $oc_preferences_query_quota . EOL . $oc_preferences_query_email . EOL;
$ncdb->query($oc_account_query);
$ncdb->query($oc_users_query);
$ncdb->query($oc_group_user_query);
$ncdb->query($oc_preferences_query_quota);
$ncdb->query($oc_preferences_query_email);
}
//$ncdb->result->close();
//if ($flag > 12) exit;
}
//$doldb->result->close();
llxFooter();
function write_status( $mode, $uid, $status, $db )
{
if ( $mode )
{
echo "Création du statut de" . $uid . " statut: " . $status . EOL;
$query = "INSERT INTO oc_preferences (userid, appid, configkey, configvalue) VALUES ( '" . $uid . "', 'core', 'enabled', '" . $status . "' ) ";
}else
{
echo "Modification du statut de " . $uid . " statut: " . $status . EOL;
$query = "UPDATE oc_preferences SET configvalue = '" . $status ."' WHERE userid='" . $uid . "' AND appid='core' AND configkey='enabled'" ;
}
$db->query( $query );
//echo $query;
}
?>