From cf3827d52a4f50800f94922bf249e069f307dc2d Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Thu, 20 May 2004 03:38:42 +0000 Subject: [PATCH] Poll stuff. --- doc/basics.html | 72 ++++---- doc/mxml.html | 281 ++++++++++++++++++++++++++++- doc/mxml.pdf | Bin 621473 -> 638607 bytes www/data/mxml.sql | 91 +++++++++- www/images/graph.gif | Bin 0 -> 44 bytes www/index.php | 31 ++-- www/phplib/common.php | 6 +- www/phplib/globals.php | 5 +- www/phplib/html.php | 49 ++---- www/phplib/poll.php | 114 ++++++++++++ www/poll.php | 388 +++++++++++++++++++++++++++++++++++++++++ 11 files changed, 944 insertions(+), 93 deletions(-) create mode 100644 www/images/graph.gif create mode 100644 www/phplib/poll.php create mode 100644 www/poll.php diff --git a/doc/basics.html b/doc/basics.html index df65b45..6ce6b98 100644 --- a/doc/basics.html +++ b/doc/basics.html @@ -36,22 +36,22 @@ for your installation:

Every piece of information in an XML file (elements, text, numbers) is stored in memory in "nodes". Nodes are defined by the mxml_node_t +href='#mxml_node_t'>mxml_node_t structure. The type member +href='#mxml_type_t'>type member defines the node type (element, integer, opaque, real, or text) which determines which value you want to look at in the value union.

+href='#mxml_value_t'>value union.

New nodes can be created using the mxmlNewElement(), +href='#mxmlNewElement'>mxmlNewElement(), mxmlNewInteger(), +href='#mxmlNewInteger'>mxmlNewInteger(), mxmlNewOpaque(), -mxmlNewReal(), +href='#mxmlNewOpaque'>mxmlNewOpaque(), +mxmlNewReal(), and mxmlNewText() +href='#mxmlNewText'>mxmlNewText() functions. Only elements can have child nodes, and the top node must be an element, usually "?xml".

@@ -98,7 +98,7 @@ like the following in memory:

to the first child node.

Once you are done with the XML data, use the mxmlDelete() +href='#mxmlDelete'>mxmlDelete() function to recursively free the memory that is used for a particular node or the entire tree:

@@ -109,15 +109,15 @@ particular node or the entire tree:

Loading and Saving XML Files

You load an XML file using the mxmlLoadFile() +href='#mxmlLoadFile'>mxmlLoadFile() function:

     FILE *fp;
-    mxml_node_t *tree;
+    mxml_node_t *tree;
 
     fp = fopen("filename.xml", "r");
-    tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
+    tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
     fclose(fp);
 
@@ -131,15 +131,15 @@ attribute values to determine the proper value type to return. The default value type is MXML_TEXT if no callback is used.

Similarly, you save an XML file using the mxmlSaveFile() +href='#mxmlSaveFile'>mxmlSaveFile() function:

     FILE *fp;
-    mxml_node_t *tree;
+    mxml_node_t *tree;
 
     fp = fopen("filename.xml", "w");
-    mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
+    mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
     fclose(fp);
 
@@ -154,49 +154,49 @@ whitespace should be added and the string to insert (spaces, tabs, carriage returns, and newlines) otherwise.

The mxmlLoadString(), +href='#mxmlLoadString'>mxmlLoadString(), mxmlSaveAllocString(), +href='#mxmlSaveAllocString'>mxmlSaveAllocString(), and mxmlSaveString() +href='#mxmlSaveString'>mxmlSaveString() functions load XML node trees from and save XML node trees to strings:

     char buffer[8192];
     char *ptr;
-    mxml_node_t *tree;
+    mxml_node_t *tree;
 
     ...
-    tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);
+    tree = mxmlLoadString(NULL, buffer, MXML_NO_CALLBACK);
 
     ...
-    mxmlSaveString(tree, buffer, sizeof(buffer), MXML_NO_CALLBACK);
+    mxmlSaveString(tree, buffer, sizeof(buffer), MXML_NO_CALLBACK);
 
     ...
-    ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
+    ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
 

Finding and Iterating Nodes

The mxmlWalkPrev() +href='#mxmlWalkPrev'>mxmlWalkPrev() and mxmlWalkNext()functions +href='#mxmlWalkNext'>mxmlWalkNext()functions can be used to iterate through the XML node tree:

-    mxml_node_t *node = mxmlWalkPrev(current, tree, MXML_DESCEND);
+    mxml_node_t *node = mxmlWalkPrev(current, tree, MXML_DESCEND);
 
-    mxml_node_t *node = mxmlWalkNext(current, tree, MXML_DESCEND);
+    mxml_node_t *node = mxmlWalkNext(current, tree, MXML_DESCEND);
 

In addition, you can find a named element/node using the mxmlFindElement() +href='#mxmlFindElement'>mxmlFindElement() function:

-    mxml_node_t *node = mxmlFindElement(tree, tree, "name", "attr",
+    mxml_node_t *node = mxmlFindElement(tree, tree, "name", "attr",
                                 	"value", MXML_DESCEND);
 
@@ -206,30 +206,30 @@ e.g.:

     /* Find the first "a" element */
-    node = mxmlFindElement(tree, tree, "a", NULL, NULL, MXML_DESCEND);
+    node = mxmlFindElement(tree, tree, "a", NULL, NULL, MXML_DESCEND);
 
     /* Find the first "a" element with "href" attribute */
-    node = mxmlFindElement(tree, tree, "a", "href", NULL, MXML_DESCEND);
+    node = mxmlFindElement(tree, tree, "a", "href", NULL, MXML_DESCEND);
 
     /* Find the first "a" element with "href" to a URL */
-    node = mxmlFindElement(tree, tree, "a", "href",
+    node = mxmlFindElement(tree, tree, "a", "href",
                 	   "http://www.easysw.com/~mike/mxml/", MXML_DESCEND);
 
     /* Find the first element with a "src" attribute*/
-    node = mxmlFindElement(tree, tree, NULL, "src", NULL, MXML_DESCEND);
+    node = mxmlFindElement(tree, tree, NULL, "src", NULL, MXML_DESCEND);
 
     /* Find the first element with a "src" = "foo.jpg" */
-    node = mxmlFindElement(tree, tree, NULL, "src", "foo.jpg", MXML_DESCEND);
+    node = mxmlFindElement(tree, tree, NULL, "src", "foo.jpg", MXML_DESCEND);
 

You can also iterate with the same function:

-    mxml_node_t *node;
+    mxml_node_t *node;
 
-    for (node = mxmlFindElement(tree, tree, "name", NULL, NULL, MXML_DESCEND);
+    for (node = mxmlFindElement(tree, tree, "name", NULL, NULL, MXML_DESCEND);
          node != NULL;
-         node = mxmlFindElement(node, tree, "name", NULL, NULL, MXML_DESCEND))
+         node = mxmlFindElement(node, tree, "name", NULL, NULL, MXML_DESCEND))
     {
       ... do something ...
     }
diff --git a/doc/mxml.html b/doc/mxml.html
index b57f856..d9dce2f 100644
--- a/doc/mxml.html
+++ b/doc/mxml.html
@@ -23,7 +23,7 @@ PRE { font-family: monospace }
 Michael Sweet
Copyright 2003-2004
-
+

Table of Contents



Introduction @@ -101,9 +101,16 @@ Copyright 2003-2004
  • mxmlDelete()
  • mxmlElementGetAttr()
  • mxmlElementSetAttr()
  • +
  • mxmlEntityAddCallback()
  • mxmlEntityGetName()
  • mxmlEntityGetValue()
  • +
  • mxmlEntityRemoveCallback()
  • mxmlFindElement()
  • +
  • mxmlIndexDelete()
  • +
  • mxmlIndexEnum()
  • +
  • mxmlIndexFind()
  • +
  • mxmlIndexNew()
  • +
  • mxmlIndexReset()
  • mxmlLoadFile()
  • mxmlLoadString()
  • mxmlNewElement()
  • @@ -129,6 +136,7 @@ Copyright 2003-2004
  • Structures
  • -
    +

    3 - More Mini-XML Programming Techniques

    This chapter shows additional ways to use the Mini-XML library in @@ -602,7 +615,7 @@ mxmlSaveString() functions load XML node trees from and save

    Changing Node Values

    Formatted Text

    Indexing

    -
    +

    4 - Using the mxmldoc Utility

    This chapter describes how to use the mxmldoc(1) utility that comes with Mini-XML to automatically generate documentation for @@ -957,7 +970,7 @@ align="bottom"> Listing 4-1, XML Schema File "mxmldoc.xsd" (con't)< -


    +

    A - GNU Library General Public License

    Version 2, June 1991 @@ -1333,11 +1346,22 @@ align="bottom"> Listing 4-1, XML Schema File "mxmldoc.xsd" (con't)< SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

    -
    +

    B - Release Notes

    Changes in Mini-XML 2.0

    • New programmers manual.
    • +
    • Added UTF-16 support (input only; all output is UTF-8)
    • +
    • Added index functions to build a searchable index of XML nodes.
    • +
    • Added character entity callback interface to support additional + character entities beyond those defined in the XHTML specification.
    • +
    • Added support for XHTML character entities.
    • +
    • The mxmldoc utility now produces XML output which conforms to an + updated XML schema, described in the file "doc/mxmldoc.xsd".
    • +
    • Changed the whitespace callback interface to return strings instead + of a single character, allowing for greater control over the formatting + of XML files written using Mini-XML. THIS CHANGE WILL REQUIRE CHANGES + TO YOUR 1.x CODE IF YOU USE WHITESPACE CALLBACKS.
    • The mxmldoc utility now produces XML output which conforms to an updated XML schema, described in the file "doc/mxmldoc.xsd".
    • Changed the whitespace callback interface to return strings instead @@ -1456,7 +1480,7 @@ align="bottom"> Listing 4-1, XML Schema File "mxmldoc.xsd" (con't)<
      • Initial public release.
      -
      +

      C - Library Reference

      Contents

      @@ -1498,9 +1523,18 @@ align="bottom"> Listing 4-1, XML Schema File "mxmldoc.xsd" (con't)<
    • mxmlDelete()
    • mxmlElementGetAttr()
    • mxmlElementSetAttr()
    • +
    • mxmlEntityAddCallback() +
    • mxmlEntityGetName()
    • mxmlEntityGetValue()
    • +
    • mxmlEntityRemoveCallback() +
    • mxmlFindElement()
    • +
    • mxmlIndexDelete()
    • +
    • mxmlIndexEnum()
    • +
    • mxmlIndexFind()
    • +
    • mxmlIndexNew()
    • +
    • mxmlIndexReset()
    • mxmlLoadFile()
    • mxmlLoadString()
    • mxmlNewElement()
    • @@ -1638,6 +1672,29 @@ mxmlElementSetAttr(

      Returns

      Nothing.

      + +

      mxmlEntityAddCallback()

      +
      +

      Description

      +

      Add a callback to convert entities to Unicode.

      +

      Syntax

      +
      +void
      +mxmlEntityAddCallback(
      +    int (*cb)(const char *name));
      +
      +

      Arguments

      +

      + + + + + +
      NameDescription
      (*cb)(const char *name)Callback function to + add
      +

      Returns

      +

      Nothing.

      +

      mxmlEntityGetName()


      @@ -1685,6 +1742,29 @@ mxmlEntityGetValue(

      Returns

      Character value or -1 on error

      + +

      mxmlEntityRemoveCallback()

      +
      +

      Description

      +

      Remove a callback.

      +

      Syntax

      +
      +void
      +mxmlEntityRemoveCallback(
      +    int (*cb)(const char *name));
      +
      +

      Arguments

      +

      + + + + + +
      NameDescription
      (*cb)(const char *name)Callback function to + remove
      +

      Returns

      +

      Nothing.

      +

      mxmlFindElement()


      @@ -1726,6 +1806,134 @@ mxmlFindElement(

      Returns

      Element node or NULL

      + +

      mxmlIndexDelete()

      +
      +

      Description

      +

      Delete an index.

      +

      Syntax

      +
      +void
      +mxmlIndexDelete(
      +    mxml_index_t * ind);
      +
      +

      Arguments

      +

      + + + + + +
      NameDescription
      indIndex to delete
      +

      Returns

      +

      Nothing.

      + + +

      mxmlIndexEnum()

      +
      +

      Description

      +

      Return the next node in the index. Nodes are returned in the sorted + order of the index.

      +

      Syntax

      +
      +mxml_node_t *
      +mxmlIndexEnum(
      +    mxml_index_t * ind);
      +
      +

      Arguments

      +

      + + + + + +
      NameDescription
      indIndex to enumerate
      +

      Returns

      +

      Next node or NULL if there is none

      + + +

      mxmlIndexFind()

      +
      +

      Description

      +

      Find the next matching node. You should call mxmlIndexReset() prior + to using this function for the first time with a particular set of + "element" and "value" strings. Passing NULL for both "element" and + "value" is equivalent to calling mxmlIndexEnum().

      +

      Syntax

      +
      +mxml_node_t *
      +mxmlIndexFind(
      +    mxml_index_t * ind,
      +    const char * element,
      +    const char * value);
      +
      +

      Arguments

      +

      + + + + + + + +
      NameDescription
      indIndex to search
      elementElement name to find, if any
      valueAttribute value, if any
      +

      Returns

      +

      Node or NULL if none found

      + + +

      mxmlIndexNew()

      +
      +

      Description

      +

      Create a new index. The index will contain all nodes that contain the + named element and/or attribute. If both "element" and "attr" are NULL, + then the index will contain a sorted list of the elements in the node + tree. Nodes are sorted by element name and optionally by attribute + value if the "attr" argument is not NULL.

      +

      Syntax

      +
      +mxml_index_t *
      +mxmlIndexNew(
      +    mxml_node_t * node,
      +    const char * element,
      +    const char * attr);
      +
      +

      Arguments

      +

      + + + + + + + +
      NameDescription
      nodeXML node tree
      elementElement to index or NULL for all
      attrAttribute to index or NULL for none
      +

      Returns

      +

      New index

      + + +

      mxmlIndexReset()

      +
      +

      Description

      +

      Reset the enumeration/find pointer in the index and return the first + node in the index. This function should be called prior to using + mxmlIndexEnum() or mxmlIndexFind() for the first time.

      +

      Syntax

      +
      +mxml_node_t *
      +mxmlIndexReset(
      +    mxml_index_t * ind);
      +
      +

      Arguments

      +

      + + + + + +
      NameDescription
      indIndex to reset
      +

      Returns

      +

      First node or NULL if there is none

      +

      mxmlLoadFile()


      @@ -2327,6 +2535,7 @@ mxmlWalkPrev(

      Structures

    + +

    mxml_index_t

    +
    +

    Description

    +

    An XML node index.

    +

    Definition

    +
    +typedef struct mxml_index_s mxml_index_t;
    +
    +

    mxml_node_t


    @@ -2541,5 +2790,19 @@ union mxml_value_u realReal number textText fragment + + +

    Variables

    + + + +

    num_callbacks

    +
    +

    Definition

    +
    +static int num_callbacks = 1;
    +
    diff --git a/doc/mxml.pdf b/doc/mxml.pdf index a3bb527cb2601156a530eed0b9bc61da2efa53f2..04fe7967446cffbf268b2cefeb50d596bd9925dd 100644 GIT binary patch delta 74397 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', '195c416888c3151df53ae9f38c67afcc', 100, 1084823565, 'mike', 1084823565, 'mike'); + -- --- End of "$Id: mxml.sql,v 1.3 2004/05/17 21:00:42 mike Exp $". +-- Table structure for table 'vote' +-- +-- This table is used to track ratings, poll votes, etc. that are made on +-- the links and poll pages. +-- + +CREATE TABLE vote ( + type_id_ip VARCHAR(255) PRIMARY KEY -- type_id_ip +); + +-- +-- End of "$Id: mxml.sql,v 1.4 2004/05/20 03:38:42 mike Exp $". -- diff --git a/www/images/graph.gif b/www/images/graph.gif new file mode 100644 index 0000000000000000000000000000000000000000..de9568b05ec1f9f68e3ba5005c678005b968028c GIT binary patch literal 44 scmZ?wbh9u|WMtrB_{hMppMjyCf#E+G=`a8RNZgT$wTEQ}dmw`~0Lb_V9RL6T literal 0 HcmV?d00001 diff --git a/www/index.php b/www/index.php index b6eb8ab..6e8cabc 100644 --- a/www/index.php +++ b/www/index.php @@ -1,12 +1,13 @@ Mini-XML Home Page"); print("

    \n" - .""); +html_end_row(); +html_end_table(); html_start_table(array("Quick Info"), "100%", "100%"); html_start_row(); print(""); html_end_row(); html_end_table(); print("" - ."\n" html_footer(); // -// End of "$Id: index.php,v 1.4 2004/05/19 21:17:47 mike Exp $". +// End of "$Id: index.php,v 1.5 2004/05/20 03:38:42 mike Exp $". // ?> diff --git a/www/phplib/common.php b/www/phplib/common.php index b390193..87f3d81 100644 --- a/www/phplib/common.php +++ b/www/phplib/common.php @@ -1,6 +1,6 @@ \n"; } + else + $ftext .= "\n"; $col = 0; break; @@ -671,6 +673,6 @@ validate_email($email) // I - Email address // -// End of "$Id: common.php,v 1.10 2004/05/20 02:04:45 mike Exp $". +// End of "$Id: common.php,v 1.11 2004/05/20 03:38:42 mike Exp $". // ?> diff --git a/www/phplib/globals.php b/www/phplib/globals.php index fa4d293..33311ce 100644 --- a/www/phplib/globals.php +++ b/www/phplib/globals.php @@ -1,6 +1,6 @@ diff --git a/www/phplib/html.php b/www/phplib/html.php index 38cd535..07c41ad 100644 --- a/www/phplib/html.php +++ b/www/phplib/html.php @@ -1,6 +1,6 @@ "); - $add_html_cols = 0; // Add to html_cols after display if colspan is used. $html_row = 0; - $html_cols = sizeof($headings); + $html_cols = count($headings); reset($headings); - for ($i = 0; $i < $html_cols; $i ++) + for ($i = 0; $i < count($headings); $i ++) { // // Headings can be in the following forms: @@ -262,58 +262,45 @@ html_start_table($headings, // I - Array of heading strings // "xxxxxxxx:aa" -- Heading with align. // "xxxxxxxx::cc" -- Heading with a colspan. // "xxxxxxxx:::ww" -- Heading with a width. - // "xxxxxxxx:cc:ww" -- Heading with colspan and width. + // "xxxxxxxx::cc:ww" -- Heading with colspan and width. // "xxxxxxxx:aa:cc:ww" -- Heading with align, colspan and width. // // etc, etc. // - $s_header = ""; + $s_header = ""; $s_colspan = ""; - $s_width = ""; - $s_align = ""; + $s_width = ""; + $s_align = ""; - if (strstr( $headings[$i], ":" )) + if (strstr($headings[$i], ":")) { - $data = explode( ":", $headings[$i] ); - + $data = explode(":", $headings[$i]); $s_header = $data[0]; - if (ISSET($data[1])) - { - $align = $data[1]; - $s_align = "align=$align"; - } + if ($data[1] != "") + $s_align = "align=$data[1]"; - if ($data[2] > 0) + if ($data[2] > 1) { - $colspan = $data[2]; - $s_colspan = "colspan=$colspan"; - if ($colspan > 1) - $add_html_cols += ($colspan - 1); + $s_colspan = "colspan=$data[2]"; + + if ($data[2] > 1) + $html_cols += $data[2] - 1; } if ($data[3] > 0) - { - $width = $data[3]; - $s_width = "width=$width%"; - } + $s_width = "width=$data[3]%"; } else $s_header = $headings[$i]; if (strlen($s_header)) - { print(""); - } else - { print(""); - } } - $html_cols += $add_html_cols; - print("\n"); diff --git a/www/phplib/poll.php b/www/phplib/poll.php new file mode 100644 index 0000000..e2cedb7 --- /dev/null +++ b/www/phplib/poll.php @@ -0,0 +1,114 @@ +" + ."$question\n"); + + if ($row['poll_type'] == $POLL_TYPE_PICKONE) + print("(please pick one)\n"); + else + print("(pick all that apply)\n"); + + for ($i = 0; $i < 10; $i ++) + { + $answer = htmlspecialchars($row["answer$i"]); + + if ($answer != "") + { + if ($row['poll_type'] == $POLL_TYPE_PICKONE) + print("
    $answer\n"); + } + } + + $votes = $row['votes']; + if ($votes == 1) + $votes .= " vote"; + else + $votes .= " votes"; + + $ccount = count_comments("poll.php_r$id"); + if ($ccount == 1) + $ccount .= " comment"; + else + $ccount .= " comments"; + + print("
    \n" + ."[ Results ]\n"); + print("
    ($votes, $ccount)

    \n"); + } + + db_free($result); +} + + +// +// End of "$Id: poll.php,v 1.1 2004/05/20 03:38:42 mike Exp $". +// +?> diff --git a/www/poll.php b/www/poll.php new file mode 100644 index 0000000..f001055 --- /dev/null +++ b/www/poll.php @@ -0,0 +1,388 @@ + 0) +{ + $op = $argv[0][0]; + $argv[0][0] = ' '; + $poll = (int)$argv[0]; +} +else if ($LOGIN_LEVEL >= AUTH_DEVEL) + $op = 'l'; +else + $op = 'c'; + +if ($poll == 0 && $op != 'u' && $op != 'n') + $poll = get_recent_poll(); + +// Do it! +switch ($op) +{ + case 'c' : // Show a poll + html_header("Poll #$poll"); + print("

    Poll #$poll

    \n"); + show_poll($poll); + html_footer(); + break; + + case 'l' : // List all polls + html_header("Polls"); + + if ($LOGIN_LEVEL > AUTH_USER) + { + // Show all polls and allow poll creation... + $result = db_query("SELECT * FROM poll ORDER BY id DESC"); + + html_start_links(1); + html_link("Add New Poll", "$PHP_SELF?n"); + html_end_links(1); + } + else + { + // Only show published polls... + $result = db_query("SELECT * FROM poll WHERE is_published = 1 " + ."ORDER BY id DESC"); + } + + print("

    Polls

    \n"); + + html_start_table(array("ID", "Question::2")); + + while ($row = db_next($result)) + { + $id = $row['id']; + $votes = $row['votes']; + $question = htmlspecialchars($row['question']); + $ccount = count_comments("poll.php_r$id"); + + if ($ccount == 1) + $ccount .= " comment"; + else + $ccount .= " comments"; + + html_start_row(); + print("" + .""); + html_end_row(); + } + + html_end_table(); + + db_free($result); + + html_footer(); + break; + + case 'r' : // Show results + html_header("Poll #$poll"); + + html_start_links(1); + html_link("Show All Polls", "$PHP_SELF?l"); + html_link("Show Comments", "#_USER_COMMENTS"); + html_link("Submit Comment", "comment.php?r0+ppoll.php_r$poll"); + html_end_links(1); + + print("

    Poll #$poll

    \n"); + + $result = db_query("SELECT * FROM poll WHERE id = $poll"); + $row = db_next($result); + + $votes = $row['votes']; + + for ($max_count = 0, $i = 0; $i < 10; $i ++) + { + if ($row["count$i"] > $max_count) + $max_count = $row["count$i"]; + } + + if ($votes == 0) + print("

    No votes for this poll yet...

    \n"); + else + { + $question = htmlspecialchars($row['question']); + + print("
    "); + ."
    "); + +html_start_table(array("Current Poll [ " + ."Show All ]")); +html_start_row(); +print(""); +show_poll(get_recent_poll()); +print("" - ."

    Stable Release: v1.3, " - ."December 21, 2003
    " - ."Developer Release: v2.0rc1, " - ."May 20, 2004

    \n" + ."

    " + ."Stable Release: v1.3
    " + ."Developer Release: v2.0rc1

    \n" ."

    Mini-XML is a small XML parsing library that you can use to " ."read XML and XML-like data files in your application without " ."requiring large non-standard libraries. Mini-XML only requires " ."an ANSI C compatible compiler (GCC works, as do most vendors' " ."ANSI C compilers) and a 'make' program.

    \n" - ."

    Mini-XML provides the following functionality:

    \n" + ."
    \n" ."
        " - ."

    Recent Articles [ View All" + ."

    " + ."

    Recent Articles [ Show All" ." ]

    \n"); $result = db_query("SELECT * FROM article WHERE is_published = 1 " @@ -88,6 +97,6 @@ print("
    $s_header " ."
    #$row[id]$question"); + if (!$row['is_published']) + print(" private"); + print("Vote | " + ."Results"); + + if ($LOGIN_LEVEL > AUTH_USER) + print(" | Edit"); + + print(" ($votes total votes, $ccount)
    \n"); + print("\n"); + + for ($i = 0; $i < 10; $i ++) + { + if ($row["answer$i"] != "") + { + $percent = (int)(100 * $row["count$i"] / $votes); + $size = (int)(300 * $row["count$i"] / $max_count); + $answer = htmlspecialchars($row["answer$i"]); + $count = $row["count$i"]; + + print("\n"); + } + } + + print("\n"); + print("
    $question
    $answer" + ." $count / $percent%
    $votes total votes.
    \n"); + } + + print("


    \n" + ."

    User Comments

    \n"); + html_start_links(); + html_link("Submit Comment", "comment.php?r0+ppoll.php_r$poll"); + html_end_links(); + + show_comments("poll.php_r$poll"); + + db_free($result); + + html_footer(); + break; + + case 'v' : // Vote on a poll + $answers = ""; + + if ($REQUEST_METHOD == "POST") + { + if (array_key_exists("ANSWER", $_POST)) + { + $answer = (int)$_POST["ANSWER"]; + $answers = ",count$answer=count$answer+1"; + } + else + { + for ($i = 0; $i < 10; $i ++) + { + if (array_key_exists("ANSWER$i", $_POST)) + $answers .= ",count$i=count$i+1"; + } + } + } + + if ($answers != "") + { + if (!db_query("INSERT INTO vote VALUES('poll_${poll}_${REMOTE_ADDR}')") + && $LOGIN_LEVEL < AUTH_DEVEL) + { + html_header("Poll Error"); + print("

    Poll Error

    \n"); + print("

    Sorry, it appears that you or someone else using your IP " + ."address has already voted for " + ."poll #$poll.\n"); + html_footer(); + } + else + { + db_query("UPDATE poll SET votes=votes+1$answers WHERE id = $poll"); + + header("Location: $PHP_SELF?r$poll"); + } + } + else + { + header("Location: $PHP_SELF?c$poll"); + } + break; + + case 'n' : // New poll + case 'e' : // Edit poll + if (!$LOGIN_USER) + { + header("Location:$PHP_SELF?r$poll"); + break; + } + + if ($poll) + { + html_header("Poll #$poll"); + + print("

    Poll #$poll

    \n"); + + $result = db_query("SELECT * FROM poll WHERE id = $poll"); + $row = db_next($result); + + $question = htmlspecialchars($row['question']); + $poll_type = $row['poll_type']; + + for ($i = 0; $i < 10; $i ++) + { + if ($row["answer$i"]) + $answer[$i] = htmlspecialchars($row["answer$i"], ENT_QUOTES); + else + $answer[$i] = ""; + } + + $is_published = $row['is_published']; + + db_free($result); + } + else + { + html_header("New Poll"); + + print("

    New Poll

    \n"); + + $question = ""; + $poll_type = $POLL_TYPE_PICKONE; + $answer[0] = ""; + $answer[1] = ""; + $answer[2] = ""; + $answer[3] = ""; + $answer[4] = ""; + $answer[5] = ""; + $answer[6] = ""; + $answer[7] = ""; + $answer[8] = ""; + $answer[9] = ""; + $is_published = 0; + } + + print("
    \n"); + print("
    \n" + ."\n"); + + print("\n"); + + print("\n"); + + for ($i = 0; $i < 10; $i ++) + { + $number = $i + 1; + + print("\n"); + } + + if ($poll) + print("\n"); + else + print("\n"); + + print("
    Question:" + ."
    Type:" + ."
    Published:"); + select_is_published($is_published); + print("
    Answer #$number" + ."
    \n"); + print("
    \n"); + + html_footer(); + break; + + case 'u' : // Update poll + header("Location:$PHP_SELF?l"); + + if ($LOGIN_LEVEL < AUTH_DEVEL) + break; + + $is_published = (int)$_POST["IS_PUBLISHED"]; + $question = db_escape($_POST["QUESTION"]); + $poll_type = (int)$_POST["POLLTYPE"]; + $answer0 = db_escape($_POST["ANSWER0"]); + $answer1 = db_escape($_POST["ANSWER1"]); + $answer2 = db_escape($_POST["ANSWER2"]); + $answer3 = db_escape($_POST["ANSWER3"]); + $answer4 = db_escape($_POST["ANSWER4"]); + $answer5 = db_escape($_POST["ANSWER5"]); + $answer6 = db_escape($_POST["ANSWER6"]); + $answer7 = db_escape($_POST["ANSWER7"]); + $answer8 = db_escape($_POST["ANSWER8"]); + $answer9 = db_escape($_POST["ANSWER9"]); + $date = time(); + + if ($poll) + { + // Update an existing poll... + db_query("UPDATE poll SET " + ."question='$question'," + ."is_published=$is_published," + ."poll_type=$poll_type," + ."answer0='$answer0'," + ."answer1='$answer1'," + ."answer2='$answer2'," + ."answer3='$answer3'," + ."answer4='$answer4'," + ."answer5='$answer5'," + ."answer6='$answer6'," + ."answer7='$answer7'," + ."answer8='$answer8'," + ."answer9='$answer9'," + ."modify_date=$date," + ."modify_user='$LOGIN_USER' " + ."WHERE id = $poll"); + } + else + { + // Create a new poll... + db_query("INSERT INTO poll VALUES(NULL," + ."$is_published," + ."$poll_type," + ."'$question'," + ."'$answer0',0," + ."'$answer1',0," + ."'$answer2',0," + ."'$answer3',0," + ."'$answer4',0," + ."'$answer5',0," + ."'$answer6',0," + ."'$answer7',0," + ."'$answer8',0," + ."'$answer9',0," + ."0," + ."$date,'$LOGIN_USER'," + ."$date,'$LOGIN_USER')"); + } + break; +} + +db_close(); + +// +// End of "$Id: poll.php,v 1.1 2004/05/20 03:38:42 mike Exp $". +// +?>