/** * returns json array encoded list of vlans * */ public function executeJsonList(sfWebRequest $request) { $isAjax = $request->isXmlHttpRequest(); if (!$isAjax) { return $this->redirect('@homepage'); } $p_cluster_id = $this->getRequestParameter('id'); $p_level = $this->getRequestParameter('level'); if ($p_level) { if (!$p_cluster_id) { $error_msg = 'No cluster id defined.'; $error = array('success' => false, 'error' => $error_msg, 'info' => $error_msg); return $error; } if ($p_level == 'node') { $dc_c = new Criteria(); //convert node id in cluster id $dc_c->add(EtvaNodePeer::ID, $p_cluster_id); $node = EtvaNodePeer::doSelectOne($dc_c); $p_cluster_id = $node->getClusterId(); } elseif ($p_level == 'server') { $dc_c = new Criteria(); //convert server id in cluster id $dc_c->add(EtvaServerPeer::ID, $p_cluster_id, Criteria::EQUAL); $server = EtvaServerPeer::doSelectOne($dc_c); $p_cluster_id = $server->getClusterId(); } elseif ($p_level == 'cluster') { //do nothing } else { error_log('NETWORK:[ERROR] executejsonlist invalid parameters'); } } elseif (!$p_cluster_id) { $defaultCluster = EtvaClusterPeer::retrieveDefaultCluster(); $p_cluster_id = $defaultCluster->getId(); } $c = new Criteria(); $c->add(EtvaVlanPeer::CLUSTER_ID, $p_cluster_id, Criteria::EQUAL); $vlan_nodes = EtvaVlanPeer::doSelect($c); $list = array(); foreach ($vlan_nodes as $vlan) { $list[] = $vlan->toArray(BasePeer::TYPE_FIELDNAME); } $untagged_vlan = EtvaVlanPeer::retrieveUntagged($p_cluser_id); $hasUntagged = 0; if ($untagged_vlan) { $hasUntagged = 1; } $result = array('total' => count($list), 'data' => $list, 'hasUntagged' => $hasUntagged); $result = json_encode($result); if (sfConfig::get('sf_environment') == 'soap') { $soap_result = array(success => true, 'total' => count($list), 'response' => $list); return json_encode($soap_result); } $this->getResponse()->setHttpHeader('Content-type', 'application/json'); return $this->renderText($result); }