public static function parse($node, $parent, $key = null) { $nodes = self::$parser->fetch("./i:by", $node); $it = new nodeListIterator($nodes); if ($it->getListLength() > 0) { foreach ($it as $n) { self::add("grouping/" . self::$parser->get($n, "ref"), self::$parser->get($n, "callback")); } } else { self::$parser->createFieldSets(); return -1; } return true; }
public static function parse($node, $parent, $key = null) { $element = self::$parser->any("datasource"); self::$parser->enumCheck("i:valueType", self::$parser->get($element, "type")); self::add("datasource/type", self::$parser->get($element, "type")); self::add("datasource/lister", self::$parser->get($element, "lister")); if (self::$parser->has($node, "className")) { self::add("datasource/className", self::$parser->get($element, "className")); } if (self::$parser->has($node, "dataLoadedHandler")) { self::add("datasource/dataLoadedHandler", self::$parser->get($element, "dataLoadedHandler")); } if (self::$parser->has($node, null, "statement")) { return true; } $class = self::$parser->get(self::$parser->getnode("class", $element)); self::add("datasource/class", $class); $element = self::$parser->getnode("method", $element); $method = self::$parser->get($element, "name"); $type = self::$parser->get($element, "type"); if ($method != '') { self::$parser->enumCheck("i:fetchType", $type); } $nodes = self::$parser->fetch("./i:param", $element); $it = new nodeListIterator($nodes); if ($method != '') { self::add("datasource/method/name", $method); self::add("datasource/method/type", $type); } if ($it->getListLength() > 0) { self::parseValues($it); $it->rewind(); $it->setMode(VALUES); } $i = 0; foreach ($it as $v) { if (substr($v, 0, 1) == "[") { $v = explode(",", preg_replace("/[\\[\\]]+/", "", $v)); } self::add("datasource/method/params/" . $i, $v); $i++; } return true; }
public static function parse($node, $parent, $key = null) { $nodes = self::$parser->fetch("./i:param", $node); foreach ($nodes as $node) { $value = self::$parser->get($node); if (strstr($value, "\n")) { self::$parser->set(null, str_replace("\n", "<br />", $value), $node); } } $it = new nodeListIterator($nodes); $tmp = self::$parser->getProcess(); $iteration = self::$parser->getIteration(); if ($parent) { $pid = self::$parser->name($parent); if ($pid == "component") { $name = self::$parser->get($parent, "name"); foreach ($tmp["parses"][$iteration]["areas"] as $aname => $area) { if (!isset($area["tabs"])) { $area["tabs"][0] = array("attributes" => array(), "components" => $area["components"]); } foreach ($area["tabs"] as $tk => $tab) { foreach ($tab["components"] as $cname => $component) { if ($name == $cname) { $area_name = $aname; $tabid = $tk; break; } } } } foreach ($nodes as $var) { $v = self::$parser->get($var); if (substr($v, 0, 1) == "[") { $v = explode(",", preg_replace("/[\\[\\]]+/", "", $v)); } if (isset($tmp["parses"][$iteration]["areas"][$area_name]["tabs"])) { self::add("areas/" . $area_name . "/tabs/" . $tabid . "/components/" . $name . "/params/" . self::$parser->get($var, "name"), $v); } else { self::add("areas/" . $area_name . "/components/" . $name . "/params/" . self::$parser->get($var, "name"), $v); } } } else { if ($pid == "area") { $name = self::$parser->get($parent, "type"); $it->setMode(VALUES); $i = 0; foreach ($it as $v) { if (substr($v, 0, 1) == "[") { $v = explode(",", preg_replace("/[\\[\\]]+/", "", $v)); } self::add("areas/" . $name . "/params/" . $i, $v); $i++; } } } } else { if ($it->getListLength() > 0) { self::parseValues($it); $it->rewind(); } $i = 0; foreach ($it as $v) { $val = self::$parser->get($v); if (!property_exists($v, "non_convertable") && substr($val, 0, 1) == "[") { $val = explode(",", preg_replace("/[\\[\\]]+/", "", $val)); } self::add("params/" . $i, $val); //Params with key also self::add("params/" . self::$parser->get($v, "name"), $val); $i++; } } return true; }
public static function parse($node, $parent, $key = null) { $type = self::$parser->get($node, "type"); $name = self::$parser->get($parent, "name"); $process = self::$parser->getProcess(); $iteration = self::$parser->getIteration(); $default = self::$parser->fetch("./i:default|./i:static", $node); $defvalue = $selected = ""; if ($default->length) { $default = $default->item(0); $kname = self::$parser->name($default, true); $children = self::$parser->fetch("./i:node", $default); if ($children->length) { parent::parseNodes($children, $defvalue, $selected); if ($selected) { self::add("fields/" . $name . "/value/" . $kname . "/selected", $selected); } } else { $defvalue = self::$parser->get($default); } self::add("fields/" . $name . "/value/" . $kname . "/value", $defvalue); } if (self::$parser->find($node, "source")) { self::add("fields/" . $name . "/value/type", "1"); self::add("fields/" . $name . "/value/class", $process["parses"][$iteration]["datasource"]["class"]); self::add("fields/" . $name . "/value/method", self::$parser->get(self::$parser->getnode("source", $node), "name")); } else { if (self::$parser->find($node, "item")) { self::add("fields/" . $name . "/value/type", "3"); $nodes = self::$parser->fetch("./i:item", $node); $it = new nodeListIterator($nodes, PAIRS); $ls = $it->getList(); $ls_arr = array(); foreach ($ls as $node) { $ls_arr[$node->getAttribute("value")] = $node->nodeValue; } $it->setList($ls); self::add("fields/" . $name . "/value/default/value", $ls_arr); //$it->setAttribute("value"); //self::add("fields/".$name."/value/items",$it); } else { if ($node) { $class = self::$parser->get(self::$parser->getnode("class", $node)); if ($class) { self::add("fields/" . $name . "/value/type", "2"); self::add("fields/" . $name . "/value/class", $class); $method = self::$parser->getnode("method", $node); if ($method) { self::add("fields/" . $name . "/value/method/name", self::$parser->get($method, "name")); $nodes = self::$parser->fetch("./i:param", $method); $it = new nodeListIterator($nodes); if ($it->getListLength() > 0) { self::parseValues($it); $it->rewind(); //$it->setMode(VALUES); } $i = 0; foreach ($it as $v) { $val = self::$parser->get($v); if (!property_exists($v, "non_convertable") && substr($val, 0, 1) == "[") { $val = explode(",", preg_replace("/[\\[\\]]+/", "", $val)); } self::add("fields/" . $name . "/value/method/params/" . $i, $val); $i++; } } } else { if ($type == 'orm') { // falling back to class defined in datasource node with guessed getter method name self::add("fields/" . $name . "/value/type", "1"); self::add("fields/" . $name . "/value/class", $process["parses"][$iteration]["datasource"]["class"]); $nameParts = explode('[', $name); $nameParts = array_reverse($nameParts); $originalName = str_replace(']', '', $nameParts[0]); $originalNameGetterMethod = 'get' . sfInflector::camelize($originalName); self::add("fields/" . $name . "/value/method", $originalNameGetterMethod); } } } } } return true; }