483 |
} |
} |
484 |
|
|
485 |
|
|
486 |
/** |
/** |
487 |
* \brief Désactive un utilisateur |
* \brief Désactive un utilisateur |
488 |
*/ |
* \return int <0 si ko, >0 si ok |
489 |
|
*/ |
490 |
function disable() |
function disable() |
491 |
{ |
{ |
492 |
|
$error=0; |
493 |
|
|
494 |
// Désactive utilisateur |
// Désactive utilisateur |
495 |
$sql = "UPDATE ".MAIN_DB_PREFIX."user"; |
$sql = "UPDATE ".MAIN_DB_PREFIX."user"; |
496 |
$sql.= " SET login = NULL"; |
$sql.= " SET login = NULL"; |
497 |
$sql.= " WHERE rowid = ".$this->id; |
$sql.= " WHERE rowid = ".$this->id; |
498 |
$result = $this->db->query($sql); |
$result = $this->db->query($sql); |
499 |
|
|
500 |
|
if ($result) |
501 |
|
{ |
502 |
|
// Appel des triggers |
503 |
|
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); |
504 |
|
$interface=new Interfaces($this->db); |
505 |
|
$result=$interface->run_triggers('USER_DISABLE',$this,$user,$lang,$conf); |
506 |
|
if ($result < 0) $error++; |
507 |
|
// Fin appel triggers |
508 |
|
} |
509 |
|
|
510 |
|
if ($error) |
511 |
|
{ |
512 |
|
return -$error; |
513 |
|
} |
514 |
|
else |
515 |
|
{ |
516 |
|
return 1; |
517 |
|
} |
518 |
} |
} |
519 |
|
|
520 |
|
|
521 |
/** |
/** |
522 |
* \brief Supprime complètement un utilisateur |
* \brief Supprime complètement un utilisateur |
523 |
*/ |
*/ |
|
|
|
524 |
function delete() |
function delete() |
525 |
{ |
{ |
526 |
// Supprime droits |
// Supprime droits |
546 |
} |
} |
547 |
|
|
548 |
|
|
549 |
/** |
/** |
550 |
* \brief Crée un utilisateur en base |
* \brief Crée un utilisateur en base |
551 |
* \return si erreur <0, si ok renvoie id compte créé |
* \return int si erreur <0, si ok renvoie id compte créé |
552 |
*/ |
*/ |
553 |
|
function create() |
|
function create() |
|
554 |
{ |
{ |
555 |
global $langs; |
global $langs; |
556 |
|
|
557 |
|
$this->db->begin(); |
558 |
|
|
559 |
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='".$this->login."';"; |
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='".$this->login."';"; |
560 |
$result=$this->db->query($sql); |
$resql=$this->db->query($sql); |
561 |
if ($result) |
if ($resql) |
562 |
{ |
{ |
563 |
$num = $this->db->num_rows($result); |
$num = $this->db->num_rows($resql); |
564 |
$this->db->free($result); |
$this->db->free($resql); |
565 |
|
|
566 |
if ($num) |
if ($num) |
567 |
{ |
{ |
568 |
$this->error = $langs->trans("ErrorLoginAlreadyExists"); |
$this->error = $langs->trans("ErrorLoginAlreadyExists"); |
570 |
} |
} |
571 |
else |
else |
572 |
{ |
{ |
573 |
$sql = "INSERT INTO ".MAIN_DB_PREFIX."user (datec,login,email) VALUES(now(),'$this->login','$this->email');"; |
$sql = "INSERT INTO ".MAIN_DB_PREFIX."user (datec,login) VALUES(now(),'$this->login');"; |
574 |
$result=$this->db->query($sql); |
$result=$this->db->query($sql); |
575 |
|
|
576 |
if ($result) |
if ($result) |
577 |
{ |
{ |
578 |
$table = "".MAIN_DB_PREFIX."user"; |
$table = "".MAIN_DB_PREFIX."user"; |
579 |
$this->id = $this->db->last_insert_id($table); |
$this->id = $this->db->last_insert_id($table); |
580 |
|
|
581 |
if ($this->set_default_rights() < 0) return -4; |
// Set default rights |
582 |
|
if ($this->set_default_rights() < 0) |
583 |
if ($this->update() < 0) return -3; |
{ |
584 |
|
$this->db->rollback(); |
585 |
return $this->id; |
|
586 |
|
$this->error=$this->db->error(); |
587 |
|
return -4; |
588 |
|
} |
589 |
|
|
590 |
|
// Update minor fields |
591 |
|
if ($this->update() < 0) |
592 |
|
{ |
593 |
|
$this->db->rollback(); |
594 |
|
|
595 |
|
$this->error=$this->db->error(); |
596 |
|
return -5; |
597 |
|
} |
598 |
|
|
599 |
|
// Appel des triggers |
600 |
|
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); |
601 |
|
$interface=new Interfaces($this->db); |
602 |
|
$result=$interface->run_triggers('USER_CREATE',$this,$user,$lang,$conf); |
603 |
|
if ($result < 0) $error++; |
604 |
|
// Fin appel triggers |
605 |
|
|
606 |
|
if (! $error) |
607 |
|
{ |
608 |
|
$this->db->commit(); |
609 |
|
|
610 |
|
return $this->id; |
611 |
|
} |
612 |
|
else |
613 |
|
{ |
614 |
|
$this->db->rollback(); |
615 |
|
|
616 |
|
$this->error=$interface->error; |
617 |
|
return -3; |
618 |
|
} |
619 |
} |
} |
620 |
else |
else |
621 |
{ |
{ |
622 |
dolibarr_print_error($this->db); |
$this->db->rollback(); |
623 |
|
$this->error=$this->db->error(); |
624 |
return -2; |
return -2; |
625 |
} |
} |
626 |
} |
} |
627 |
} |
} |
628 |
else |
else |
629 |
{ |
{ |
630 |
dolibarr_print_error($this->db); |
$this->db->rollback(); |
631 |
|
$this->error=$this->db->error(); |
632 |
return -1; |
return -1; |
633 |
} |
} |
634 |
} |
} |
635 |
|
|
636 |
/** |
|
637 |
* \brief Créé en base un utilisateur depuis l'objetc contact |
/** |
638 |
* \param contact Objet du contact source |
* \brief Créé en base un utilisateur depuis l'objet contact |
639 |
* |
* \param contact Objet du contact source |
640 |
*/ |
* \return int si erreur <0, si ok renvoie id compte créé |
641 |
|
*/ |
642 |
function create_from_contact($contact) |
function create_from_contact($contact) |
643 |
{ |
{ |
644 |
global $langs; |
global $langs; |
645 |
|
|
646 |
|
// Positionne paramètres |
647 |
|
$this->nom = $contact->nom; |
648 |
|
$this->prenom = $contact->prenom; |
649 |
|
|
650 |
|
$this->login = strtolower(substr($contact->prenom, 0, 3)) . strtolower(substr($contact->nom, 0, 3)); |
651 |
|
$this->admin = 0; |
652 |
|
|
653 |
|
$this->email = $contact->email; |
654 |
|
|
655 |
|
$this->db->begin(); |
656 |
|
|
657 |
|
// Crée et positionne $this->id |
658 |
|
$result=$this->create(); |
659 |
|
|
660 |
$this->nom = $contact->nom; |
if ($result > 0) |
661 |
$this->prenom = $contact->prenom; |
{ |
662 |
$this->email = $contact->email; |
$sql = "UPDATE ".MAIN_DB_PREFIX."user"; |
663 |
|
$sql.= " SET fk_socpeople=".$contact->id.", fk_societe=".$contact->societeid; |
664 |
$this->login = strtolower(substr($contact->prenom, 0, 3)) . strtolower(substr($contact->nom, 0, 3)); |
$sql.= " WHERE rowid=".$this->id; |
665 |
|
$resql=$this->db->query($sql); |
666 |
$sql = "SELECT login FROM ".MAIN_DB_PREFIX."user WHERE login ='$this->login'"; |
|
667 |
|
if ($resql) |
668 |
if ($this->db->query($sql)) |
{ |
669 |
{ |
$sql = "UPDATE ".MAIN_DB_PREFIX."socpeople"; |
670 |
$num = $this->db->num_rows(); |
$sql.= " SET fk_user = ".$this->id; |
671 |
$this->db->free(); |
$sql.= " WHERE idp = ".$contact->id; |
672 |
|
$resql=$this->db->query($sql); |
673 |
if ($num) |
|
674 |
{ |
if ($resql) |
675 |
$this->error = $langs->trans("ErrorLoginAlreadyExists"); |
{ |
676 |
return 0; |
$this->db->commit(); |
677 |
} |
return $this->id; |
678 |
else |
} |
679 |
{ |
else |
680 |
$sql = "INSERT INTO ".MAIN_DB_PREFIX."user (datec, login, fk_socpeople, fk_societe)"; |
{ |
681 |
$sql .= " VALUES (now(),'$this->login',$contact->id, $contact->societeid);"; |
$this->error=$this->db->error()." - $sql"; |
682 |
if ($this->db->query($sql)) |
dolibarr_syslog("User::create_from_contact - 20 - ".$this->error); |
683 |
{ |
|
684 |
if ($this->db->affected_rows()) |
$this->db->rollback(); |
685 |
{ |
return -2; |
686 |
$table = "".MAIN_DB_PREFIX."user"; |
} |
687 |
$this->id = $this->db->last_insert_id($table); |
} |
688 |
$this->admin = 0; |
else |
689 |
$this->update(); |
{ |
690 |
|
$this->error=$this->db->error()." - $sql"; |
691 |
$sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET fk_user = $this->id WHERE idp = $contact->id"; |
dolibarr_syslog("User::create_from_contact - 10 - ".$this->error); |
692 |
$this->db->query($sql); |
|
693 |
|
$this->db->rollback(); |
694 |
$this->set_default_rights(); |
return -1; |
695 |
|
} |
696 |
return $this->id; |
} |
697 |
} |
else |
698 |
} |
{ |
699 |
else |
// $this->error deja positionné |
700 |
{ |
dolibarr_syslog("User::create_from_contact - 0"); |
701 |
dolibarr_print_error($this->db); |
|
702 |
} |
$this->db->rollback(); |
703 |
} |
return $result; |
704 |
} |
} |
705 |
else |
|
|
{ |
|
|
dolibarr_print_error($this->db); |
|
|
} |
|
|
|
|
706 |
} |
} |
707 |
|
|
708 |
/** |
/** |
745 |
|
|
746 |
/** |
/** |
747 |
* \brief Mise à jour en base d'un utilisateur |
* \brief Mise à jour en base d'un utilisateur |
748 |
* \return <0 si echec, >=0 si ok |
* \param create 1 si update durant le create, 0 sinon |
749 |
|
* \return int <0 si echec, >=0 si ok |
750 |
*/ |
*/ |
751 |
function update() |
function update($create=0) |
752 |
{ |
{ |
753 |
global $langs; |
global $langs; |
754 |
|
|
755 |
|
$error=0; |
756 |
|
|
757 |
if (!strlen($this->code)) $this->code = $this->login; |
if (!strlen($this->code)) $this->code = $this->login; |
758 |
|
|
759 |
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET "; |
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET "; |
776 |
{ |
{ |
777 |
if ($this->db->affected_rows()) |
if ($this->db->affected_rows()) |
778 |
{ |
{ |
779 |
|
if (! $create) |
780 |
|
{ |
781 |
|
// Appel des triggers |
782 |
|
include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); |
783 |
|
$interface=new Interfaces($this->db); |
784 |
|
$result=$interface->run_triggers('USER_MODIFY',$this,$user,$lang,$conf); |
785 |
|
if ($result < 0) $error++; |
786 |
|
// Fin appel triggers |
787 |
|
} |
788 |
|
|
789 |
return 1; |
return 1; |
790 |
} |
} |
791 |
return 0; |
return 0; |