View ProjeQtOr On SourceForge.net
ProjeQtOr - Project Management Tool
Supportez nous sur Capterra
OIN - Open Invention Network
ProjeQtOr free project management software - On delete user - pending records in today table - ProjeQtOr

Prochaines Sessions

Les prochaines formations et démonstrations sont ouvertes, inscrivez-vous rapidement !

 

Démonstration de ProjeQtOr

(gratuit, sur inscription)
 

13 mai 2025 (10h30-12h)

5 juin 2025 (16h-17h30)

 
 

Planifiez avec ProjeQtOr

15 et 16 avril 2025 (9h-12h30)

14 et 15 mai 2025 (9h-12h30)

 
 

Administrez avec ProjeQtOr

23 et 24 avril (9h-12h30)

20 et 21 mai (9h-12h30)

 

 

 

On delete user - pending records in today table

More
11 Oct 2023 13:46 #1 by mkavurcic
after user deletion, 13 pending user records remain in today table; to purge those records I've introduced quick fix in deleteObject.php:

/** ===========================================================================
 * Delete the current object : call corresponding method in SqlElement Class
 */

require_once "../tool/projeqtor.php";

// Get the object class from request
if (! array_key_exists('objectClassName',$_REQUEST)) {
  throwError('className parameter not found in REQUEST');
}
$className=$_REQUEST;
if ($className=='Project') {
  Project::$_deleteProjectInProgress=true;
}

$objectId = RequestHandler::getId('objectId');

// Get the object from session(last status before change)
$fromContextMenu = RequestHandler::getBoolean('fromContextMenu');
if($fromContextMenu){
  $obj=new $className($objectId);
}else{
  $obj=SqlElement::getCurrentObject(null,null,true,false);
}
if (! is_object($obj)) {
  throwError('last saved object is not a real object');
}

// compare expected class with object class
if ($className!=get_class($obj)) {
  throwError('last save object (' . get_class($obj) . ') is not of the expected class (' . $className . ').');
}
if (array_key_exists('confirmed',$_REQUEST) ) {
  if ($_REQUEST=='true') {
      SqlElement::setDeleteConfirmed();
  }
}
Sql::beginTransaction();

$obj=new $className($obj->id); // Get the last saved version, to fetch last version for array of objects
$peName=$className.'PlanningElement';
$topItemType=null;
$topItemId=null;
// delete from database
if (property_exists($obj,$peName)) {
  PlanningElement::$_noDispatch=true;
  $topItemType=$obj->$peName->topRefType;
  $topItemId=$obj->$peName->topRefId;
}
$deleteObjectInProgress=true;
$result=$obj->delete();
$resultStatus=getLastOperationStatus($result);
if ($resultStatus=='OK' and $topItemType and $topItemId) {
  PlanningElement::$_noDispatch=false;
  PlanningElement::updateSynthesis($topItemType, $topItemId);
  $pe=SqlElement::getSingleSqlElementFromCriteria('PlanningElement', array('refType'=>$topItemType,'refId'=>$topItemId));
  $pe->renumberWbs();
}
BudgetElement::dispatchFinalize();

//mk add
if ($className=='User') {
  $idUser=$_REQUEST;
  $tod=new Today();
  $crit= array('idUser'=>$idUser);
  $rec=$tod->getSqlElementsFromCriteria($crit);
  foreach ($rec as $uid) {
      $uid->delete();
  }
}
//end mk add


// Message of correct saving
if ($resultStatus=="ERROR") {
    Sql::rollbackTransaction();
  echo '<div class="messageERROR" >' . $result . '</div>';
} else if ($resultStatus=="OK" ) {
    Sql::commitTransaction();
  echo '<div class="messageOK" >' . $result . '</div>';
  SqlElement::unsetCurrentObject();
} else  if ($resultStatus=="INVALID") {
  Sql::rollbackTransaction();
  echo '<div class="messageWARNING" >' . $result . '</div>';
} else {
    Sql::commitTransaction();
  echo '<div class="messageWARNING" >'. $result .'</div>';
}
echo '<input type="hidden" id="buttonCheckListVisibleObject" value="hidden" />';

 

Please Connexion or Create an account to join the conversation.

More
17 Oct 2023 23:27 #2 by babynus
Great idea.
Maybe could be improved as deleting a resource or a contact will also delete the user...
We'll improve this.

Babynus
Administrator of ProjeQtOr web site

Please Connexion or Create an account to join the conversation.

Moderators: babynusprotion
Time to create page: 0.030 seconds

Paramétrages de cookies

×

Cookies fonctionnels

Ce site utilise des cookies pour assurer son bon fonctionnement et ne peuvent pas être désactivés de nos systèmes. Nous ne les utilisons pas à des fins publicitaires. Si ces cookies sont bloqués, certaines parties du site ne pourront pas fonctionner.

Session

Veuillez vous connecter pour voir vos activités!

Autres cookies

Ce site web utilise un certain nombre de cookies pour gérer, par exemple, les sessions utilisateurs.