/** * AJAX! * */ function AJAXHandler() { $input_filter = array('id' => array('filter' => FILTER_VALIDATE_REGEXP, 'options' => array('regexp' => '~^-?[0-9]+$~ui')), 'action' => array('filter' => FILTER_VALIDATE_REGEXP, 'options' => array('regexp' => '~^[a-zA-Z0-9\\_\\-]+$~ui'))); $_INPUT = get_filtered_input($input_filter, array(FILTER_GET_BY_LIST)); // default responce $response = 'unknown function'; switch ($_INPUT['action']) { // add/edit dialog case 'edit_elem': if (!user_allowed_to('manage news')) { terminate('Forbidden', '', 403); } // what to edit if ($_INPUT['id'] == '') { return 'bad ID'; } module_init('menu'); // get element description $q = CMS::$DB->query("select id, caption, link, page, streams, summary from `{$this->CONFIG['table']}` where id={$_INPUT['id']}"); $row = $q->fetch(PDO::FETCH_ASSOC); $row['id'] = $_INPUT['id']; $xml = array_to_xml($row, array('news-edit-data')); // add pages list $xml->documentElement->appendChild($xml->importNode(aliasCatchersAsXML(array('root' => 'page-list'))->documentElement, true)); return XSLTransform($xml->saveXML($xml->documentElement), __DIR__ . '/edit.xsl'); break; } return $response; }
/** * */ function AJAXHandler() { $input_filter = array('id' => array('filter' => FILTER_VALIDATE_REGEXP, 'options' => array('regexp' => '~^-?[0-9]+$~ui')), 'alias' => array('filter' => FILTER_VALIDATE_REGEXP, 'options' => array('regexp' => REGEXP_ALIAS)), 'action' => array('filter' => FILTER_VALIDATE_REGEXP, 'options' => array('regexp' => '~^[a-zA-Z0-9\\_\\-]+$~ui'))); $_INPUT = get_filtered_input($input_filter); switch ($_INPUT['action']) { // edit item form case 'edit_elem': // some pre-checks if (!user_allowed_to('manage menu')) { terminate('Forbidden', '', 403); } $element_id = $_INPUT['id']; $insert_mode = $element_id < 0; if ($element_id == '') { return 'bad ID'; } // ok, get XML and transform it // array will be almost empty if we are creating new element, this 2 values are just nesessary if ($insert_mode) { $row = array('id' => $element_id, 'parent_id' => 0); } else { $item_data = CMS::$DB->query("select id, caption, parent_id, page, link, alias, text, picture, style_content, style_item, class_item, hidden, title, meta from `{$this->CONFIG['table_menu']}` where id={$element_id}"); $row = $item_data->fetch(PDO::FETCH_ASSOC); } // entire record now converted to XML and will XSL-transformed $xml = array_to_xml($row, array('menu-edit-data')); $xml->documentElement->appendChild($xml->importNode(aliasCatchersAsXML(array('root' => 'page-list'))->documentElement, true)); // get menu id - either from existing row (when editing) or from input (when adding) $xml->documentElement->appendChild($xml->importNode($this->generateElemListAsXML($row['parent_id'], array($element_id))->documentElement, true)); return XSLTransform($xml->saveXML($xml->documentElement), __DIR__ . '/edit.xsl'); break; } return 'unknown function'; }