event->attach("beforeProcessing", Array($this, 'check_id')); } public function get_id_postfix() { return $this->id_postfix; } public function render(){ if (isset($_GET['id'])) { $_GET['id'] = str_replace($this->id_postfix, "", $_GET['id']); } $this->parse_request(); if (!isset($_GET['id'])) { $this->request->set_relation(false); } if (isset($_GET["editing"])) $this->editing=true; else if (isset($_POST["ids"])){ $this->editing=true; } else { $this->editing = false; } if ($this->editing){ $dp = new $this->names["data_class"]($this,$this->config,$this->request); $dp->process($this->config,$this->request); } else { $wrap = new SortInterface($this->request); $this->event->trigger("beforeSort",$wrap); $wrap->store(); $wrap = new FilterInterface($this->request); $this->event->trigger("beforeFilter",$wrap); $wrap->store(); if (isset($_GET['id'])) { $this->output_as_xml( $this->sql->select($this->request) ); } else { $relation_id = $this->config->relation_id['name']; $this->output_as_xml( $this->sql->get_variants($this->config->relation_id['name'], $this->request)); } } $this->end_run(); } /*! renders self as xml, starting part */ public function xml_start(){ if (isset($_GET['id'])) { return "id_postfix."'>"; } else { return ""; } } public function check_id($action) { if (isset($_GET['editing'])) { $id = $action->get_id(); $pid = $action->get_value($this->config->relation_id['name']); $pid = str_replace($this->id_postfix, "", $pid); $action->set_value($this->config->relation_id['name'], $pid); if (strpos($id, $this->id_postfix) == false) { return $action; } else { $action->error(); $action->set_response_text("This record can't be updated!"); return $action; } } else { return $action; } } } ?>