/** * @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; }