/**
  * @param AJXP_Node $oldNode
  * @param AJXP_Node $newNode
  * @param bool $copy
  * @param string $targetNotif
  * @return AJXP_Notification
  */
 public function generateNotificationFromChangeHook(AJXP_Node $oldNode = null, AJXP_Node $newNode = null, $copy = false, $targetNotif = "new")
 {
     $type = "";
     $primaryNode = null;
     $secondNode = null;
     $notif = new AJXP_Notification();
     if ($oldNode == null) {
         if ($targetNotif == "old") {
             return false;
         }
         $type = AJXP_NOTIF_NODE_ADD;
         $primaryNode = $newNode;
     } else {
         if ($newNode == null) {
             if ($targetNotif == "new") {
                 return false;
             }
             $type = AJXP_NOTIF_NODE_DEL;
             $primaryNode = $oldNode;
         } else {
             if ($oldNode->getUrl() == $newNode->getUrl()) {
                 $type = AJXP_NOTIF_NODE_CHANGE;
                 $primaryNode = $newNode;
             } else {
                 if (dirname($oldNode->getPath()) == dirname($newNode->getPath())) {
                     $type = AJXP_NOTIF_NODE_RENAME;
                     $primaryNode = $newNode;
                     $secondNode = $oldNode;
                 } else {
                     if ($targetNotif == "new") {
                         $type = $copy ? AJXP_NOTIF_NODE_COPY_FROM : AJXP_NOTIF_NODE_MOVE_FROM;
                         $primaryNode = $newNode;
                         $secondNode = $oldNode;
                     } else {
                         if ($targetNotif == "old") {
                             $type = $copy ? AJXP_NOTIF_NODE_COPY_TO : AJXP_NOTIF_NODE_MOVE_TO;
                             $primaryNode = $oldNode;
                             $secondNode = $newNode;
                         } else {
                             if ($targetNotif == "unify") {
                                 $type = $copy ? AJXP_NOTIF_NODE_COPY : AJXP_NOTIF_NODE_MOVE;
                                 $primaryNode = $newNode;
                                 $secondNode = $oldNode;
                             }
                         }
                     }
                 }
             }
         }
     }
     $notif->setNode($primaryNode);
     $notif->setAction($type);
     if ($secondNode != null) {
         $notif->setSecondaryNode($secondNode);
     }
     return $notif;
 }