function delete_storylink($linkid)
{
    $logger = Logger::getLogger("generalLog");
    try {
        if (!is_numeric($linkid)) {
            return;
        }
        $query = "SELECT * FROM " . table_links . " WHERE link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        } else {
            $sql_array = mysql_fetch_object($result);
        }
        //var_dump($sql_array);
        # delete the story link
        $query = "DELETE FROM " . table_links . " WHERE link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        }
        # delete the story comments
        $query = "DELETE FROM " . table_comments . " WHERE comment_link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        }
        # delete the saved links
        $query = "DELETE FROM " . table_saved_links . " WHERE saved_link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        }
        # delete the story tags
        $query = "DELETE FROM " . table_tags . " WHERE tag_link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        }
        # delete the story trackbacks
        $query = "DELETE FROM " . table_trackbacks . " WHERE trackback_link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        }
        # delete the story votes
        $query = "DELETE FROM " . table_votes . " WHERE vote_link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        }
        # delete additional categories
        $query = "DELETE FROM " . table_additional_categories . " WHERE ac_link_id = '{$linkid}'";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        }
        $sid = $sql_array->link_title_url;
        # delete target database if local
        $query = "SELECT * FROM " . table_prefix . "sourceinfo_DB WHERE sid = {$sid}";
        if (!($result = mysql_query($query))) {
            error_page(mysql_error());
        } else {
            $sql_array = mysql_fetch_object($result);
            //var_dump($sql_array);
            if ($sql_array->is_local == 1) {
                // deleing the target db here.
                $dbHandler = DatabaseHandlerFactory::createDatabaseHandler($sql_array->driver, $sql_array->user_name, $sql_array->password, $sql_array->source_database, $sql_array->server_address, $sql_array->port, $sql_array->is_local, $sql_array->linked_server_name);
                $dbHandler->dropDatabase();
            }
            $queryEngine = new QueryEngine();
            $queryEngine->simpleQuery->dropLinkedServerIfExists($sql_array->linked_server_name);
        }
        //TODO Add some error checking
        //delete the sourceinfo which should triget casding deleting of all related info except cached queries and visualization stuff.
        $query = "DELETE FROM " . table_prefix . "sourceinfo WHERE sid = {$sid}";
        if (!($result = mysql_query($query))) {
            $logger->error("in admin delete story " . mysql_error());
            echo mysql_error();
        }
        //now the only thing left is Neo4J, need to delete node and all realtionships.
        $neo4JDAO = new Neo4JDAO();
        $neo4JDAO->deleteNodeBySid($sid);
        // module system hook
        $vars = array('link_id' => $linkid);
        check_actions('admin_story_delete', $vars);
    } catch (Exception $e) {
        $logger->error("in admin delete story " . $e->getMessage());
    }
}
<?php

require_once realpath(dirname(__FILE__)) . '/../config.php';
require_once realpath(dirname(__FILE__)) . '/../DAL/RelationshipDAO.php';
require_once realpath(dirname(__FILE__)) . '/../DAL/Neo4JDAO.php';
require_once realpath(dirname(__FILE__)) . '/../DAL/NotificationDAO.php';
if (!$current_user->authenticated) {
    die('Please login to use this function.');
}
$relId = $_POST['relId'];
$userId = $current_user->user_id;
$relationshipDAO = new RelationshipDAO();
$notificationDAO = new NotificationDAO();
$notificationDAO->addNTFtoDB($relId, "removeRelationship");
$jsonResult = new stdClass();
try {
    $relationshipDAO->deleteRelationship($relId, $userId);
    $n4jDao = new Neo4JDAO();
    $n4jDao->deleteRelationshipByRelId($relId);
    $jsonResult->isSuccessful = true;
} catch (Exception $e) {
    $jsonResult->isSuccessful = false;
}
echo json_encode($jsonResult);
 /**
  * Adds colfusion relationship between two stories. Also addes neo4j relationship and nodes if needed. And trigres backgroun computatio of datamatching ratios.
  * @param [type] $user_id     id of the user who adds new relationships.
  * @param [type] $name        name of the relationship.
  * @param [type] $description short textual description for new relationship.
  * @param [type] $from        object containing info about From dataset sid and columns of the relationships from From dataset. TODO: create a class for that object.
  * @param [type] $to          object containing info about To dataset sid and columns of the relationships from To dataset. TODO: the class class as for From should be used.
  * @param [type] $confidence  confidence value for the relationship.
  * @param [type] $comment     shor textual comment for the relationship.
  */
 public function AddRelationship($user_id, $name, $description, $from, $to, $confidence, $comment)
 {
     // Add new relationshp in to colfusion
     $relationshipDao = new RelationshipDAO();
     $rel_id = $relationshipDao->addRelationship($user_id, $name, $description, $from, $to, $confidence, $comment);
     // add newly created relationshiop to neo4j.
     $neo4JDAO = new Neo4JDAO();
     $neo4JDAO->addRelationshipByRelId($rel_id);
     // triger background execution of data matching ration calcualtion.
     $dataMatcher = new DataMatcher();
     $dataMatcher->calculateDataMatchingRatios(array($rel_id));
 }
function updateRelCostInNeo4J($relId, $dao)
{
    $avgConfidence = $dao->getRelationshipAverageConfidenceByRelId($relId);
    $n4jDao = new Neo4JDAO();
    $n4jDao->updateCostByRelId($relId, 1 - $avgConfidence);
}