Ejemplo n.º 1
0
function db_save_application($name, $hostid, $applicationid = null, $templateid = 0)
{
    if (!is_string($name)) {
        error('Incorrect parameters for "db_save_application"');
        return false;
    }
    $host = get_host_by_hostid($hostid);
    $hostids = array();
    $db_hosts = get_hosts_by_templateid($host['hostid']);
    while ($db_host = DBfetch($db_hosts)) {
        $hostids[] = $db_host['hostid'];
    }
    $sql = 'SELECT applicationid
			FROM applications
			WHERE name=' . zbx_dbstr($name) . '
				AND ' . DBcondition('hostid', $hostids);
    $lower_app = DBfetch(DBselect($sql));
    if ($lower_app) {
        error(S_APPLICATION . SPACE . "'{$name}'" . SPACE . S_ALREADY_EXISTS_IN_LINKED_HOSTS_SMALL);
        return false;
    }
    $sql = 'SELECT applicationid
			FROM applications
			WHERE name=' . zbx_dbstr($name) . '
				AND hostid=' . $hostid;
    if (!is_null($applicationid)) {
        $sql .= ' AND applicationid<>' . $applicationid;
    }
    $db_app = DBfetch(DBselect($sql));
    if ($db_app && $templateid == 0) {
        error(S_APPLICATION . SPACE . "'{$name}'" . SPACE . S_ALREADY_EXISTS_SMALL);
        return false;
    }
    if ($db_app && !is_null($applicationid)) {
        // delete old application with same name
        delete_application($db_app['applicationid']);
    }
    if ($db_app && is_null($applicationid)) {
        // if found application with same name update them, adding not needed
        $applicationid = $db_app['applicationid'];
    }
    if (is_null($applicationid)) {
        $applicationid_new = get_dbid('applications', 'applicationid');
        $sql = 'INSERT INTO applications (applicationid, name, hostid, templateid) ' . " VALUES ({$applicationid_new}, " . zbx_dbstr($name) . ", {$hostid}, {$templateid})";
        if ($result = DBexecute($sql)) {
            info(S_ADDED_NEW_APPLICATION . SPACE . $host['host'] . ':' . $name);
        }
    } else {
        $old_app = get_application_by_applicationid($applicationid);
        $result = DBexecute('UPDATE applications SET name=' . zbx_dbstr($name) . ', hostid=' . $hostid . ', templateid=' . $templateid . ' WHERE applicationid=' . $applicationid);
        if ($result) {
            info(S_UPDATED_APPLICATION . SPACE . $host['host'] . ':' . $old_app['name']);
        }
    }
    if (!$result) {
        return $result;
    }
    if (is_null($applicationid)) {
        // create application for childs
        $applicationid = $applicationid_new;
        $db_childs = get_hosts_by_templateid($hostid);
        while ($db_child = DBfetch($db_childs)) {
            // recursion
            $result = add_application($name, $db_child['hostid'], $applicationid);
            if (!$result) {
                break;
            }
        }
    } else {
        $db_applications = get_applications_by_templateid($applicationid);
        while ($db_app = DBfetch($db_applications)) {
            // recursion
            $result = update_application($db_app['applicationid'], $name, $db_app['hostid'], $applicationid);
            if (!$result) {
                break;
            }
        }
    }
    if ($result) {
        return $applicationid;
    }
    if ($templateid == 0) {
        delete_application($applicationid);
    }
    return false;
}
Ejemplo n.º 2
0
function db_save_application($name, $hostid, $applicationid = null, $templateid = 0)
{
    if (!is_string($name)) {
        error("Incorrect parameters for 'db_save_application'");
        return false;
    }
    if (is_null($applicationid)) {
        $result = DBselect('SELECT * FROM applications WHERE name=' . zbx_dbstr($name) . ' AND hostid=' . $hostid);
    } else {
        $result = DBselect('SELECT * ' . ' FROM applications ' . ' WHERE name=' . zbx_dbstr($name) . ' AND hostid=' . $hostid . ' AND applicationid<>' . $applicationid);
    }
    $db_app = DBfetch($result);
    if ($db_app && $templateid == 0) {
        error('Application "' . $name . '" already exists');
        return false;
    }
    if ($db_app && $applicationid != null) {
        // delete old application with same name
        delete_application($db_app["applicationid"]);
    }
    if ($db_app && $applicationid == null) {
        // if found application with same name update them, adding not needed
        $applicationid = $db_app["applicationid"];
    }
    $host = get_host_by_hostid($hostid);
    if (is_null($applicationid)) {
        $applicationid_new = get_dbid('applications', 'applicationid');
        $sql = 'INSERT INTO applications (applicationid,name,hostid,templateid) ' . " VALUES ({$applicationid_new}," . zbx_dbstr($name) . ",{$hostid},{$templateid})";
        if ($result = DBexecute($sql)) {
            info("Added new application " . $host["host"] . ":{$name}");
        }
    } else {
        $old_app = get_application_by_applicationid($applicationid);
        if ($result = DBexecute('UPDATE applications ' . ' SET name=' . zbx_dbstr($name) . ',hostid=' . $hostid . ',templateid=' . $templateid . ' WHERE applicationid=' . $applicationid)) {
            info("Updated application " . $host["host"] . ":" . $old_app["name"]);
        }
    }
    if (!$result) {
        return $result;
    }
    if (is_null($applicationid)) {
        // create application for childs
        $applicationid = $applicationid_new;
        $db_childs = get_hosts_by_templateid($hostid);
        while ($db_child = DBfetch($db_childs)) {
            // recursion
            $result = add_application($name, $db_child["hostid"], $applicationid);
            if (!$result) {
                break;
            }
        }
    } else {
        $db_applications = get_applications_by_templateid($applicationid);
        while ($db_app = DBfetch($db_applications)) {
            // recursion
            $result = update_application($db_app["applicationid"], $name, $db_app["hostid"], $applicationid);
            if (!$result) {
                break;
            }
        }
    }
    if ($result) {
        return $applicationid;
    }
    if ($templateid == 0) {
        delete_application($applicationid);
    }
    return false;
}