Ejemplo n.º 1
0
function findObjectParentCandidates($object_id)
{
    $object = spotEntity('object', $object_id);
    $args = array($object['objtype_id'], $object_id, $object_id);
    $query = "SELECT O.id, O.name, O.objtype_id FROM Object O ";
    $query .= "LEFT JOIN ObjectParentCompat OPC ON O.objtype_id = OPC.parent_objtype_id ";
    $query .= "WHERE OPC.child_objtype_id = ? ";
    $query .= "AND O.id != ? ";
    // exclude existing parents
    $query .= "AND O.id NOT IN (SELECT parent_entity_id FROM EntityLink WHERE parent_entity_type = 'object' AND child_entity_type = 'object' AND child_entity_id = ?) ";
    if ($object['objtype_id'] == 1504 || $object['objtype_id'] == 1507) {
        array_push($args, $object['objtype_id'], $object_id, $object_id);
        $query .= "AND OPC.parent_objtype_id != 4 ";
        $query .= "UNION ";
        $query .= "SELECT O.id, O.name, O.objtype_id FROM Object O  ";
        $query .= "LEFT JOIN ObjectParentCompat OPC ON O.objtype_id = OPC.parent_objtype_id ";
        $query .= "LEFT JOIN AttributeValue AV ON O.id = AV.object_id ";
        $query .= "WHERE OPC.child_objtype_id = ? ";
        $query .= "AND (O.objtype_id = 4 AND AV.attr_id = 26 AND AV.uint_value = 1501) ";
        $query .= "AND O.id != ? ";
        // exclude existing parents
        $query .= "AND O.id NOT IN (SELECT parent_entity_id FROM EntityLink WHERE parent_entity_type = 'object' AND child_entity_type = 'object' AND child_entity_id = ?) ";
    }
    $query .= "ORDER BY 2";
    $result = usePreparedSelectBlade($query, $args);
    $ret = array();
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        $ret[$row['id']] = empty($row['name']) ? sprintf("[%s] - object %d", decodeObjectType($row['objtype_id']), $row['id']) : $row['name'];
    }
    return $ret;
}
Ejemplo n.º 2
0
function renderCell($cell)
{
    $override = callHook('getRenderedCell', $cell);
    if (isset($override)) {
        echo $override;
        return;
    }
    switch ($cell['realm']) {
        case 'user':
            echo "<table class='slbcell vscell'><tr><td rowspan=3 width='5%'>";
            printImageHREF('USER');
            echo '</td><td>' . mkA(stringForTD($cell['user_name']), 'user', $cell['user_id']) . '</td></tr>';
            if (strlen($cell['user_realname'])) {
                echo "<tr><td><strong>" . stringForTD($cell['user_realname']) . "</strong></td></tr>";
            } else {
                echo "<tr><td class=sparenetwork>no name</td></tr>";
            }
            echo '<td>';
            if (!isset($cell['etags'])) {
                $cell['etags'] = getExplicitTagsOnly(loadEntityTags('user', $cell['user_id']));
            }
            echo count($cell['etags']) ? "<small>" . serializeTags($cell['etags']) . "</small>" : '&nbsp;';
            echo "</td></tr></table>";
            break;
        case 'file':
            echo "<table class='slbcell vscell'><tr><td rowspan=3 width='5%'>";
            switch ($cell['type']) {
                case 'text/plain':
                    printImageHREF('text file');
                    break;
                case 'image/jpeg':
                case 'image/png':
                case 'image/gif':
                    printImageHREF('image file');
                    break;
                default:
                    printImageHREF('empty file');
                    break;
            }
            echo "</td><td>";
            echo mkA('<strong>' . stringForTD($cell['name']) . '</strong>', 'file', $cell['id']);
            echo "</td><td rowspan=3 valign=top>";
            if (isset($cell['links']) and count($cell['links'])) {
                printf("<small>%s</small>", serializeFileLinks($cell['links']));
            }
            echo "</td></tr><tr><td>";
            echo count($cell['etags']) ? "<small>" . serializeTags($cell['etags']) . "</small>" : '&nbsp;';
            echo '</td></tr><tr><td>';
            if (isolatedPermission('file', 'download', $cell)) {
                // FIXME: reuse renderFileDownloader()
                echo "<a href='?module=download&file_id={$cell['id']}'>";
                printImageHREF('download', 'Download file');
                echo '</a>&nbsp;';
            }
            echo formatFileSize($cell['size']);
            echo "</td></tr></table>";
            break;
        case 'ipv4vs':
        case 'ipvs':
        case 'ipv4rspool':
            renderSLBEntityCell($cell);
            break;
        case 'ipv4net':
        case 'ipv6net':
            echo "<table class='slbcell vscell'><tr><td rowspan=3 width='5%'>";
            printImageHREF('NET');
            echo '</td><td>' . mkA("{$cell['ip']}/{$cell['mask']}", $cell['realm'], $cell['id']);
            echo getRenderedIPNetCapacity($cell);
            echo '</td></tr>';
            echo "<tr><td>";
            if (strlen($cell['name'])) {
                echo "<strong>" . stringForTD($cell['name']) . "</strong>";
            } else {
                echo "<span class=sparenetwork>no name</span>";
            }
            // render VLAN
            renderNetVLAN($cell);
            echo "</td></tr>";
            echo '<tr><td>';
            echo count($cell['etags']) ? "<small>" . serializeTags($cell['etags']) . "</small>" : '&nbsp;';
            echo "</td></tr></table>";
            break;
        case 'rack':
            echo "<table class='slbcell vscell'><tr><td rowspan=3 width='5%'>";
            $thumbwidth = getRackImageWidth();
            $thumbheight = getRackImageHeight($cell['height']);
            $img = "<img border=0 width={$thumbwidth} height={$thumbheight} title='{$cell['height']} units' " . "src='?module=image&img=minirack&rack_id={$cell['id']}'>";
            echo mkA($img, 'rack', $cell['id']);
            echo "</td><td>";
            echo mkA('<strong>' . stringForTD($cell['name']) . '</strong>', 'rack', $cell['id']);
            echo "</td></tr><tr><td>";
            echo stringForTD($cell['comment']);
            echo "</td></tr><tr><td>";
            echo count($cell['etags']) ? "<small>" . serializeTags($cell['etags']) . "</small>" : '&nbsp;';
            echo "</td></tr></table>";
            break;
        case 'location':
            echo "<table class='slbcell vscell'><tr><td rowspan=3 width='5%'>";
            printImageHREF('LOCATION');
            echo "</td><td>";
            echo mkA('<strong>' . stringForTD($cell['name']) . '</strong>', 'location', $cell['id']);
            echo "</td></tr><tr><td>";
            echo stringForTD($cell['comment']);
            echo "</td></tr><tr><td>";
            echo count($cell['etags']) ? "<small>" . serializeTags($cell['etags']) . "</small>" : '&nbsp;';
            echo "</td></tr></table>";
            break;
        case 'object':
            echo "<table class='slbcell vscell'><tr><td rowspan=2 width='5%'>";
            printImageHREF('OBJECT');
            echo '</td><td>';
            echo mkA('<strong>' . stringForLabel($cell['dname']) . '</strong>', 'object', $cell['id']);
            echo "<br /><small>" . stringForLabel(decodeObjectType($cell['objtype_id'])) . "</small></td></tr>";
            echo '<tr><td>', count($cell['etags']) ? "<small>" . serializeTags($cell['etags']) . "</small>" : '&nbsp;';
            echo "</td></tr></table>";
            break;
        default:
            throw new InvalidArgException('realm', $cell['realm']);
    }
}
Ejemplo n.º 3
0
function renderEditAttrMapForm()
{
    function printNewItemTR($attrMap)
    {
        printOpFormIntro('add');
        echo '<tr><td colspan=2 class=tdleft>';
        echo '<select name=attr_id tabindex=100>';
        $shortType['uint'] = 'U';
        $shortType['float'] = 'F';
        $shortType['string'] = 'S';
        $shortType['dict'] = 'D';
        $shortType['date'] = 'T';
        foreach ($attrMap as $attr) {
            echo "<option value={$attr['id']}>[" . $shortType[$attr['type']] . "] {$attr['name']}</option>";
        }
        echo "</select></td><td class=tdleft>";
        printImageHREF('add', '', TRUE);
        echo ' ';
        $objtypes = readChapter(CHAP_OBJTYPE, 'o');
        printNiftySelect(cookOptgroups($objtypes), array('name' => 'objtype_id', 'tabindex' => 101));
        echo ' <select name=chapter_no tabindex=102><option value=0>-- dictionary chapter for [D] attributes --</option>';
        foreach (getChapterList() as $chapter) {
            if ($chapter['sticky'] != 'yes') {
                echo "<option value='{$chapter['id']}'>{$chapter['name']}</option>";
            }
        }
        echo '</select></td></tr></form>';
    }
    global $attrtypes, $nextorder;
    $order = 'odd';
    $attrMap = getAttrMap();
    startPortlet('Attribute map');
    echo "<table class=cooltable border=0 cellpadding=5 cellspacing=0 align=center>";
    echo '<tr><th class=tdleft>Attribute name</th><th class=tdleft>Attribute type</th><th class=tdleft>Applies to</th></tr>';
    if (getConfigVar('ADDNEW_AT_TOP') == 'yes') {
        printNewItemTR($attrMap);
    }
    foreach ($attrMap as $attr) {
        if (!count($attr['application'])) {
            continue;
        }
        echo "<tr class=row_{$order}><td class=tdleft>{$attr['name']}</td>";
        echo "<td class=tdleft>" . $attrtypes[$attr['type']] . "</td><td colspan=2 class=tdleft>";
        foreach ($attr['application'] as $app) {
            if ($app['sticky'] == 'yes') {
                printImageHREF('nodelete', 'system mapping');
            } elseif ($app['refcnt']) {
                printImageHREF('nodelete', $app['refcnt'] . ' value(s) stored for objects');
            } else {
                echo getOpLink(array('op' => 'del', 'attr_id' => $attr['id'], 'objtype_id' => $app['objtype_id']), '', 'delete', 'Remove mapping');
            }
            echo ' ';
            if ($attr['type'] == 'dict') {
                echo decodeObjectType($app['objtype_id'], 'o') . " (values from '{$app['chapter_name']}')<br>";
            } else {
                echo decodeObjectType($app['objtype_id'], 'o') . '<br>';
            }
        }
        echo "</td></tr>";
        $order = $nextorder[$order];
    }
    if (getConfigVar('ADDNEW_AT_TOP') != 'yes') {
        printNewItemTR($attrMap);
    }
    echo "</table>\n";
    finishPortlet();
}
Ejemplo n.º 4
0
function setDisplayedName(&$cell)
{
    if ($cell['realm'] == 'object') {
        if ($cell['name'] != '') {
            $cell['dname'] = $cell['name'];
        } else {
            $cell['dname'] = '[' . decodeObjectType($cell['objtype_id'], 'o') . ']';
        }
    } elseif ($cell['realm'] == 'ipv4vs') {
        if ($cell['proto'] == 'MARK') {
            $cell['dname'] = "fwmark: " . implode('', unpack('N', substr($cell['vip_bin'], 0, 4)));
        } else {
            $cell['dname'] = $cell['vip'] . ':' . $cell['vport'] . '/' . $cell['proto'];
        }
    }
}