diff -r e3d7322305bf -r 5e1f1e916419 punbb/include/xml.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/punbb/include/xml.php Sat Apr 05 23:56:45 2008 -0400 @@ -0,0 +1,213 @@ +$value) + { + $php_stmt_att=$php_stmt.'[$x_tag]'.$add.'[\'attributes\'][$key] = $value;'; + eval($php_stmt_att); + } + } + } + + if (isset($xml_array)) + { + // Make sure there's an array of notes (even if there is only one) + if (isset($xml_array['extension']['note'])) + { + if (!is_array(current($xml_array['extension']['note']))) + $xml_array['extension']['note'] = array($xml_array['extension']['note']); + } + else + $xml_array['extension']['note'] = array(); + + // Make sure there's an array of hooks (even if there is only one) + if (isset($xml_array['extension']['hooks']) && isset($xml_array['extension']['hooks']['hook'])) + { + if (!is_array(current($xml_array['extension']['hooks']['hook']))) + $xml_array['extension']['hooks']['hook'] = array($xml_array['extension']['hooks']['hook']); + } + } + + return isset($xml_array) ? $xml_array : array(); +} + + +// +// Validate the syntax of an extension manifest file +// +function validate_manifest($xml_array, $folder_name) +{ + global $lang_admin, $pun_config; + + $errors = array(); + + if (!isset($xml_array['extension']) || !is_array($xml_array['extension'])) + $errors[] = $lang_admin['extension root error']; + else + { + $ext = $xml_array['extension']; + if (!isset($ext['attributes']['engine'])) + $errors[] = $lang_admin['extension/engine error']; + else if ($ext['attributes']['engine'] != '1.0') + $errors[] = $lang_admin['extension/engine error2']; + if (!isset($ext['id']) || $ext['id'] == '') + $errors[] = $lang_admin['extension/id error']; + if ($ext['id'] != $folder_name) + $errors[] = $lang_admin['extension/id error2']; + if (!isset($ext['title']) || $ext['title'] == '') + $errors[] = $lang_admin['extension/title error']; + if (!isset($ext['version']) || $ext['version'] == '') + $errors[] = $lang_admin['extension/version error']; + if (!isset($ext['description']) || $ext['description'] == '') + $errors[] = $lang_admin['extension/description error']; + if (!isset($ext['author']) || $ext['author'] == '') + $errors[] = $lang_admin['extension/author error']; + if (!isset($ext['minversion']) || $ext['minversion'] == '') + $errors[] = $lang_admin['extension/minversion error']; + if (isset($ext['minversion']) && version_compare(clean_version($pun_config['o_cur_version']), clean_version($ext['minversion']), '<')) + $errors[] = sprintf($lang_admin['extension/minversion error2'], $ext['minversion']); + if (!isset($ext['maxtestedon']) || $ext['maxtestedon'] == '') + $errors[] = $lang_admin['extension/maxtestedon error']; + if (isset($ext['note'])) + { + foreach ($ext['note'] as $note) + { + if (!isset($note['content']) || $note['content'] == '') + $errors[] = $lang_admin['extension/note error']; + if (!isset($note['attributes']['type']) || $note['attributes']['type'] == '') + $errors[] = $lang_admin['extension/note error2']; + } + } + if (isset($ext['hooks']) && is_array($ext['hooks'])) + { + if (!isset($ext['hooks']['hook']) || !is_array($ext['hooks']['hook'])) + $errors[] = $lang_admin['extension/hooks/hook error']; + else + { + foreach ($ext['hooks']['hook'] as $hook) + { + if (!isset($hook['content']) || $hook['content'] == '') + $errors[] = $lang_admin['extension/hooks/hook error']; + if (!isset($hook['attributes']['id']) || $hook['attributes']['id'] == '') + $errors[] = $lang_admin['extension/hooks/hook error2']; + } + } + } + } + + return $errors; +}