Advertisement
johnburn

index.vb.php

Apr 17th, 2011
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 20.56 KB | None | 0 0
  1. <?php
  2.  
  3. function pluginindex( )
  4. {
  5.     global $db;
  6.     global $prefix;
  7.     global $dbforumtype;
  8.     head( );
  9.     $html = "<form action=\"index.php\" method=\"post\">";
  10.     $html .= "<table border=\"0\" cellpadding=\"3\">";
  11.     $html .= "<tr><td valign=\"top\" width=\"30%\"><b>Forum To Populate</b></td><td><select name=\"forumid\">";
  12.     $forumquery = $db->sql_query( "SELECT forumid, title, parentid, options FROM ".$prefix."forum ORDER BY forumid DESC" );
  13.     while ( list( $forumid, $forumtitle, $parentid, $op ) = $db->sql_fetchrow( $forumquery ) )
  14.     {
  15.         if ( substr( decbin( $op ), -3, 1 ) == 1 )
  16.         {
  17.             if ( $parentid != 0 )
  18.             {
  19.                 $forumtitle = getparent( $parentid, $forumtitle );
  20.             }
  21.             $html .= "<option value=\"{$forumid}\">{$forumtitle}</option>";
  22.         }
  23.     }
  24.     $html .= "</select></td></tr>";
  25.     $html .= "<tr><td><b>Topic Keywords</b></td><td><input type=\"text\" name=\"yinput\" maxlength=\"255\" size=\"25\" /> ";
  26.     $html .= "<tr><td><b>Type of Post</b></td><td><select name=\"posttype\">";
  27.     $html .= "<option value=\"resolved\" selected=\"selected\">Resolved Topics (1 or more replies)</option>";
  28.     $html .= "<option value=\"open\">Open Discussion (0 or more replies)</option>";
  29.     $html .= "<option value=\"all\">Both (Random)</option>";
  30.     $html .= "</select></td></tr>";
  31.     $html .= "</td></tr>";
  32.     $html .= "<tr><td><b>Topics To Generate</b></td><td><select name=\"maxresults\">";
  33.     $i = 1;
  34.     for ( ; $i <= 50; ++$i )
  35.     {
  36.         $html .= "<option value=\"{$i}\">{$i}</option>";
  37.     }
  38.     $html .= "</select> (Does not include topic replies)</td></tr>";
  39.     $html .= "<tr><td valign=\"top\"><b>Allow Repeated Posts</b></td><td><input type=\"checkbox\" name=\"allow_multiple_posts\" value=\"1\" /> Check this box to allow duplicate posts to be produced.</td></tr>";
  40.     $html .= "<tr><td valign=\"top\"><b>HTML Line Breaks</b></td><td><input type=\"checkbox\" name=\"htmlbr\" value=\"1\" /> Convert all new line tags (\\n\\r) to HTML (&lt;br /&gt;) tags.</td></tr>";
  41.     $html .= "<tr><td valign=\"top\"><b>Poster Usernames</b></td><td><select name=\"usernames[]\" size=\"5\" multiple=\"multiple\">";
  42.     $res = $db->sql_query( "SELECT userid, username FROM ".$prefix."user ORDER BY username ASC" );
  43.     while ( list( $uid, $uname ) = $db->sql_fetchrow( $res ) )
  44.     {
  45.         $html .= "<option value=\"{$uid}\">{$uname}</option>";
  46.     }
  47.     $html .= "</select><br /><br /><input type=\"checkbox\" name=\"autocreate\" value=\"1\" checked=\"checked\" /> Check this box to automatically create user (forum posters) accounts instead of choosing them from the list above. By checking this box, the system will not utilize any of the usernames above.</td></tr>";
  48.     $html .= "<tr><td align=\"center\" colspan=\"2\"><br /></td></tr>";
  49.     $html .= "<tr><td valign=\"top\"><b>Posts Interval:</b></td><td align=\"left\">";
  50.     $html .= "<b>From:</b> Month <select name=\"fromtimestamp[0]\">";
  51.     $i = 1;
  52.     for ( ; $i <= 12; ++$i )
  53.     {
  54.         if ( $i == date( "m" ) )
  55.         {
  56.             $sel = "selected=\"selected\"";
  57.         }
  58.         else
  59.         {
  60.             $sel = "";
  61.         }
  62.         $html .= "<option value=\"{$i}\" {$sel}>{$i}</option>";
  63.     }
  64.     $html .= "</select> ";
  65.     $html .= "Day <select name=\"fromtimestamp[1]\">";
  66.     $i = 1;
  67.     for ( ; $i <= 31; ++$i )
  68.     {
  69.         if ( $i == intval( date( "d" ) - 1 ) )
  70.         {
  71.             $sel = "selected=\"selected\"";
  72.         }
  73.         else
  74.         {
  75.             $sel = "";
  76.         }
  77.         $html .= "<option value=\"{$i}\" {$sel}>{$i}</option>";
  78.     }
  79.     $html .= "</select> ";
  80.     $html .= "Year <select name=\"fromtimestamp[2]\">";
  81.     $i = intval( date( "Y" ) + 20 );
  82.     for ( ; intval( date( "Y" ) - 20 ) <= $i; --$i )
  83.     {
  84.         if ( $i == intval( date( "Y" ) ) )
  85.         {
  86.             $sel = "selected=\"selected\"";
  87.         }
  88.         else
  89.         {
  90.             $sel = "";
  91.         }
  92.         $html .= "<option value=\"{$i}\" {$sel}>{$i}</option>";
  93.     }
  94.     $html .= "</select><br /><br />";
  95.     $html .= "<b>To:</b> Month <select name=\"totimestamp[0]\">";
  96.     $i = 1;
  97.     for ( ; $i <= 12; ++$i )
  98.     {
  99.         if ( $i == date( "m" ) )
  100.         {
  101.             $sel = "selected=\"selected\"";
  102.         }
  103.         else
  104.         {
  105.             $sel = "";
  106.         }
  107.         $html .= "<option value=\"{$i}\" {$sel}>{$i}</option>";
  108.     }
  109.     $html .= "</select> ";
  110.     $html .= "Day <select name=\"totimestamp[1]\">";
  111.     $i = 1;
  112.     for ( ; $i <= 31; ++$i )
  113.     {
  114.         if ( $i == date( "d" ) )
  115.         {
  116.             $sel = "selected=\"selected\"";
  117.         }
  118.         else
  119.         {
  120.             $sel = "";
  121.         }
  122.         $html .= "<option value=\"{$i}\" {$sel}>{$i}</option>";
  123.     }
  124.     $html .= "</select> ";
  125.     $html .= "Year <select name=\"totimestamp[2]\">";
  126.     $i = intval( date( "Y" ) + 20 );
  127.     for ( ; intval( date( "Y" ) - 20 ) <= $i; --$i )
  128.     {
  129.         if ( $i == intval( date( "Y" ) ) )
  130.         {
  131.             $sel = "selected=\"selected\"";
  132.         }
  133.         else
  134.         {
  135.             $sel = "";
  136.         }
  137.         $html .= "<option value=\"{$i}\" {$sel}>{$i}</option>";
  138.     }
  139.     $html .= "</select> ";
  140.     $html .= "</td></tr>";
  141.     $html .= "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"Generate Posts!\" /><input type=\"hidden\" name=\"function\" value=\"populate_forum\" /></td></tr></table>";
  142.     $html .= "</form>";
  143.     box2( "Welcome to Instadigi Instant Forum Content Generator. Simply fill up the form below to begin populating your selected forum(s) with posts.", "Welcome!" );
  144.     box( $html, "Populate Forum (".FORUMTYPE.")" );
  145.     foot( );
  146. }
  147.  
  148. function getparent( $parentid, $title )
  149. {
  150.     global $loader_name;
  151.     global $plugin;
  152.     global $prefix;
  153.     global $db;
  154.     global $forumdbforums;
  155.     list( $id, $cattitle, $catparentid ) = $db->sql_fetchrow( $db->sql_query( "SELECT forumid, title, parentid FROM ".$prefix."forum WHERE forumid='{$parentid}'" ) );
  156.     if ( $cattitle != "" )
  157.     {
  158.         $title = $cattitle."/".$title;
  159.     }
  160.     if ( $catparentid != 0 )
  161.     {
  162.         $title = getparent( $catparentid, $title );
  163.     }
  164.     return $title;
  165. }
  166.  
  167. function populate_forum( $forumid, $maxresults, $yinput, $ytype, $username_array, $fromtimestamp, $totimestamp, $autocreate = 0, $posttype, $allow_multiple_posts = 0, $htmlbr = 0 )
  168. {
  169.     global $loader_name;
  170.     global $plugin;
  171.     global $db;
  172.     global $prefix;
  173.     global $adminfile;
  174.     global $modulename;
  175.     global $forumdbforums;
  176.     global $forumdbposts;
  177.     global $forumdbcat;
  178.     global $xmlparser;
  179.     $starttimevars = explode( "-", strftime( "%H-%M-%S", time( ) - 20 ) );
  180.     $endtimevars = explode( "-", strftime( "%H-%M-%S", time( ) ) );
  181.     $starttime = mktime( $starttimevars[0], $starttimevars[1], $starttimevars[2], $fromtimestamp[0], $fromtimestamp[1], $fromtimestamp[2] );
  182.     $endtime = mktime( $endtimevars[0], $endtimevars[1], $endtimevars[2], $totimestamp[0], $totimestamp[1], $totimestamp[2] );
  183.     $timeinc = intval( ( $endtime - $starttime ) / $maxresults );
  184.     $ytype = 2;
  185.     if ( $yinput == "" || empty( $forumid ) || 50 < $maxresults || $endtime <= $starttime )
  186.     {
  187.         exit( header( "location: ".httpreferer( )."" ) );
  188.     }
  189.     else if ( sizeof( $username_array ) < 5 && $autocreate == 0 )
  190.     {
  191.         exit( "You should have at least 5 users to proceed." );
  192.     }
  193.     else
  194.     {
  195.         $appid = constant( "APPID" );
  196.         if ( $ytype == 1 )
  197.         {
  198.             $feedurl = "http://answers.yahooapis.com/AnswersService/V1/getByCategory?appid={$appid}&results=".intval( $maxresults )."&type=".$posttype."&sort=date_desc&region=".REGION."";
  199.             $querylink = "{$feedurl}&category_id={$yinput}";
  200.         }
  201.         else if ( $ytype == 2 )
  202.         {
  203.             $yinput = str_replace( " ", "+", $yinput );
  204.             $feedurl = "http://answers.yahooapis.com/AnswersService/V1/questionSearch?appid={$appid}&results=".intval( $maxresults )."&type=".$posttype."&sort=date_desc&region=".REGION."";
  205.             $querylink = "{$feedurl}&query={$yinput}";
  206.         }
  207.         else
  208.         {
  209.             exit( );
  210.         }
  211.         $totalquestions = 0;
  212.         $totalanswers = 0;
  213.         $xml = $xmlparser->getxmltree( $querylink );
  214.         $xmlarray_size = sizeof( $xml['RESULTSET'][0]['QUESTION'] );
  215.         head( );
  216.         if ( 0 < $xmlarray_size )
  217.         {
  218.             $i = 0;
  219.             for ( ; $i < $xmlarray_size; ++$i )
  220.             {
  221.                 $questionid = htmlspecialchars( $xml['RESULTSET'][0]['QUESTION'][$i]['ATTRIBUTES']['ID'], ENT_QUOTES );
  222.                 $subject = strip_tags( addslashes( $xml['RESULTSET'][0]['QUESTION'][$i]['SUBJECT'][0]['VALUE'] ) );
  223.                 if ( $htmlbr == 1 )
  224.                 {
  225.                     $message = nl2br( addslashes( $xml['RESULTSET'][0]['QUESTION'][$i]['CONTENT'][0]['VALUE'] ) );
  226.                 }
  227.                 else
  228.                 {
  229.                     $message = addslashes( $xml['RESULTSET'][0]['QUESTION'][$i]['CONTENT'][0]['VALUE'] );
  230.                 }
  231.                 if ( $allow_multiple_posts == 1 || $allow_multiple_posts != 1 && $db->sql_numrows( $db->sql_query( "SELECT * FROM ".$prefix."post WHERE title='{$subject}'" ) ) <= 0 )
  232.                 {
  233.                     if ( $autocreate == 1 )
  234.                     {
  235.                         $yanick = preg_replace( "/[^A-Za-z0-9_-]/i", "", $xml['RESULTSET'][0]['QUESTION'][$i]['USERNICK'][0]['VALUE'] );
  236.                         $email = $yanick."@yahoo.com";
  237.                         $uq = $db->sql_query( "SELECT user_id FROM ".$prefix."user WHERE username='{$yanick}'" );
  238.                         if ( 1 <= $db->sql_numrows( $uq ) )
  239.                         {
  240.                             list( $poster ) = $db->sql_fetchrow( $uq );
  241.                         }
  242.                         else
  243.                         {
  244.                             while ( 0 < $db->sql_numrows( $db->sql_query( "SELECT * FROM ".$prefix."user WHERE username='{$yanick}'" ) ) || $yanick == "" )
  245.                             {
  246.                                 $yanick = $yanick.randomvalue( 4, 3 );
  247.                             }
  248.                             $result = $db->sql_query( "INSERT INTO ".$prefix."user (email, username, password, joindate, passworddate, showvbcode, daysprune, reputationlevelid, salt, options, usergroupid, usertitle, lastvisit, lastactivity) VALUES ('{$email}', '{$yanick}', '".md5( $yanick.strlen( $yanick ) )."', '".$starttime."', '".strftime( "%Y-%m-%d", $starttime )."', 1, -1, 5, '".randomvalue( 3 )."', 3159, 2, 'Junior Member', ".time( ).", ".time( ).")" );
  249.                             $poster = $db->sql_nextid( );
  250.                             $uresult1 = $db->sql_query( "INSERT INTO ".$prefix."userfield (userid) VALUES ({$poster})" );
  251.                             $uresult2 = $db->sql_query( "INSERT INTO ".$prefix."usertextfield (userid) VALUES ({$poster})" );
  252.                             if ( !$result || !$uresult1 || !$uresult2 )
  253.                             {
  254.                                 exit( $db->sql_error( ) );
  255.                             }
  256.                         }
  257.                     }
  258.                     else
  259.                     {
  260.                         $randomposter_key = array_rand( $username_array, 1 );
  261.                         $poster = $username_array[$randomposter_key];
  262.                     }
  263.                     if ( $message == "" || strlen( $message ) < 1 )
  264.                     {
  265.                         $message = $subject;
  266.                     }
  267.                     $output = "<i>".htmlspecialchars( stripslashes( $message ), ENT_QUOTES )."</i><br /><br /><b>Replies:</b><br />";
  268.                     list( $poster_name ) = $db->sql_fetchrow( $db->sql_query( "SELECT username FROM ".$prefix."user WHERE userid={$poster}" ) );
  269.                     $result1 = $db->sql_query( "INSERT INTO ".$prefix."thread (title, forumid, postuserid, dateline, replycount, open, visible) VALUES ('{$subject}', '{$forumid}', '{$poster}', '{$starttime}', '0', '1', '1')" );
  270.                     $parenttopicid = $db->sql_nextid( );
  271.                     $result2 = $db->sql_query( "INSERT INTO ".$prefix."post (threadid, userid, dateline, ipaddress, title, pagetext, parentid, visible, username, allowsmilie) VALUES ('{$parenttopicid}', '{$poster}', '{$starttime}', '127.0.0.1', '{$subject}', '{$message}', '0', '1', '{$poster_name}', 1)" );
  272.                     $parentpostid = $db->sql_nextid( );
  273.                     $result3 = $db->sql_query( "UPDATE ".$prefix."thread SET lastpost='{$starttime}', postusername='{$poster_name}', lastposter='{$poster_name}', firstpostid='{$parenttopicid}', lastpostid='{$parentpostid}' WHERE threadid={$parenttopicid}" );
  274.                     $result4 = $db->sql_query( "UPDATE ".$prefix."forum SET lastposter='{$poster_name}', lastpost='{$starttime}', lastthread='{$subject}', lastpostid={$parentpostid}, lastthreadid={$parenttopicid}, threadcount=(SELECT count(threadid) FROM ".$prefix."thread WHERE forumid={$forumid}), replycount=replycount+1 WHERE forumid='{$forumid}'" );
  275.                     $result5 = $db->sql_query( "UPDATE ".$prefix."user SET lastpost='{$starttime}', lastpostid='{$parentpostid}', posts=(SELECT count(*) FROM ".$prefix."post WHERE userid={$poster} AND userid!=0) WHERE userid={$poster} AND userid!=0" );
  276.                     if ( !$result1 || !$result2 || !$result3 || !$result4 || !$result5 )
  277.                     {
  278.                         exit( "Database Error - Failed to generate post topics!" );
  279.                     }
  280.                     ++$totalquestions;
  281.                     $feedurl2 = "http://answers.yahooapis.com/AnswersService/V1/getQuestion?appid={$appid}";
  282.                     $querylink2 = "{$feedurl2}&question_id=".$questionid;
  283.                     $xml2 = $xmlparser->getxmltree( $querylink2 );
  284.                     $ansxmlsize = sizeof( $xml2['RESULTSET'][0]['QUESTION'][0]['ANSWERS'][0]['ANSWER'] );
  285.                     if ( 0 < $ansxmlsize )
  286.                     {
  287.                         $anstimeinc = intval( $timeinc / $ansxmlsize );
  288.                         $ansstarttime = intval( $starttime + $anstimeinc );
  289.                     }
  290.                     $k = 0;
  291.                     for ( ; $k < $ansxmlsize; ++$k )
  292.                     {
  293.                         if ( $htmlbr == 1 )
  294.                         {
  295.                             $answer = nl2br( addslashes( $xml2['RESULTSET'][0]['QUESTION'][0]['ANSWERS'][0]['ANSWER'][$k]['CONTENT'][0]['VALUE'] ) );
  296.                         }
  297.                         else
  298.                         {
  299.                             $answer = addslashes( $xml2['RESULTSET'][0]['QUESTION'][0]['ANSWERS'][0]['ANSWER'][$k]['CONTENT'][0]['VALUE'] );
  300.                         }
  301.                         if ( 0 < strlen( $answer ) )
  302.                         {
  303.                             if ( $autocreate == 1 )
  304.                             {
  305.                                 $ya_replier = preg_replace( "/[^A-Za-z0-9_-]/i", "", $xml2['RESULTSET'][0]['QUESTION'][0]['ANSWERS'][0]['ANSWER'][$k]['USERNICK'][0]['VALUE'] );
  306.                                 $replier_email = $ya_replier."@yahoo.com";
  307.                                 $uq = $db->sql_query( "SELECT id FROM ".$prefix."user WHERE username='{$ya_replier}'" );
  308.                                 if ( 1 <= $db->sql_numrows( $uq ) )
  309.                                 {
  310.                                     list( $reply_poster ) = $db->sql_fetchrow( $uq );
  311.                                 }
  312.                                 else
  313.                                 {
  314.                                     while ( 0 < $db->sql_numrows( $db->sql_query( "SELECT * FROM ".$prefix."user WHERE username='{$ya_replier}'" ) ) || $ya_replier == "" )
  315.                                     {
  316.                                         $ya_replier = $ya_replier.randomvalue( 4, 3 );
  317.                                     }
  318.                                     $result = $db->sql_query( "INSERT INTO ".$prefix."user (email, username, password, joindate, passworddate, showvbcode, daysprune, reputationlevelid, salt, options, usergroupid, usertitle, lastvisit, lastactivity) VALUES ('{$replier_email}', '{$ya_replier}', '".md5( $ya_replier.strlen( $ya_replier ) )."', '".$ansstarttime."', '".strftime( "%Y-%m-%d", $ansstarttime )."', 1, -1, 5, '".randomvalue( 3 )."', 3159, 2, 'Junior Member', ".time( ).", ".time( ).")" );
  319.                                     $reply_poster = $db->sql_nextid( );
  320.                                     $rresult1 = $db->sql_query( "INSERT INTO ".$prefix."userfield (userid) VALUES ({$reply_poster})" );
  321.                                     $rresult2 = $db->sql_query( "INSERT INTO ".$prefix."usertextfield (userid) VALUES ({$reply_poster})" );
  322.                                     if ( !$result || !$rresult1 || !$rresult2 )
  323.                                     {
  324.                                         exit( $db->sql_error( ) );
  325.                                     }
  326.                                 }
  327.                             }
  328.                             else
  329.                             {
  330.                                 $reply_poster_rand_key = "";
  331.                                 while ( $reply_poster_rand_key == $randomposter_key || $reply_poster_rand_key == "" )
  332.                                 {
  333.                                     $reply_poster_rand_key = array_rand( $username_array, 1 );
  334.                                 }
  335.                                 $reply_poster = $username_array[$reply_poster_rand_key];
  336.                             }
  337.                             list( $reply_poster_name ) = $db->sql_fetchrow( $db->sql_query( "SELECT username FROM ".$prefix."user WHERE userid={$reply_poster}" ) );
  338.                             $result1 = $db->sql_query( "INSERT INTO ".$prefix."post (threadid, userid, dateline, ipaddress, title, pagetext, parentid, visible, username, allowsmilie) VALUES ('{$parenttopicid}', '{$reply_poster}', '{$ansstarttime}', '127.0.0.1', '{$subject}', '{$answer}', '0', '1', '{$reply_poster_name}', 1)" );
  339.                             $lastpostid = $db->sql_nextid( );
  340.                             $result2 = $db->sql_query( "UPDATE ".$prefix."thread SET replycount=replycount+1, views=views+(".rand( 1, 5 )."), lastpost='{$ansstarttime}', postusername='{$poster_name}', lastposter='{$reply_poster_name}', lastpostid='{$lastpostid}' WHERE threadid={$parenttopicid}" );
  341.                             $result3 = $db->sql_query( "UPDATE ".$prefix."forum SET lastposter='{$reply_poster_name}', lastpost='{$ansstarttime}', lastthread='{$subject}', lastpostid={$lastpostid}, threadcount=(SELECT count(threadid) FROM ".$prefix."thread WHERE forumid={$forumid}), replycount=replycount+1 WHERE forumid='{$forumid}'" );
  342.                             $result4 = $db->sql_query( "UPDATE ".$prefix."user SET lastpost='{$ansstarttime}', lastpostid='{$lastpostid}', posts=(SELECT count(*) FROM ".$prefix."post WHERE userid={$reply_poster} AND userid!=0) WHERE userid={$reply_poster} AND userid!=0" );
  343.                             if ( !$result1 || !$result2 || !$result3 || !$result4 )
  344.                             {
  345.                                 exit( "Database Error - Failed to generate post topics!" );
  346.                             }
  347.                             $output .= "<li>".htmlspecialchars( stripslashes( $answer ), ENT_QUOTES )."</li>";
  348.                             ++$totalanswers;
  349.                             $ansstarttime = intval( $ansstarttime + $anstimeinc );
  350.                         }
  351.                     }
  352.                     $starttime = intval( $starttime + $timeinc );
  353.                     echo "<br />";
  354.                     box2( $output, "<b>{$subject}</b>" );
  355.                 }
  356.             }
  357.             box( "Topics Posted: {$totalquestions}<br />Topic Replies: {$totalanswers}<br />Total Posts: ".intval( $totalanswers + $totalquestions ), "<b>Results Summary</b>" );
  358.         }
  359.         else
  360.         {
  361.             box( "No results were found for your specified keywords. Please change your keywords and resubmit the form", "<b>Post Generation Error</b>" );
  362.         }
  363.         foot( );
  364.     }
  365. }
  366.  
  367. if ( !defined( "_INDEX_" ) )
  368. {
  369.     exit( );
  370. }
  371. set_time_limit( 0 );
  372. default :
  373.     pluginindex( );
  374.     switch ( $_REQUEST['function'] )
  375.     {
  376.     case "populate_forum" :
  377.         populate_forum( intval( $_POST['forumid'] ), intval( $_POST['maxresults'] ), $_POST['yinput'], intval( $_POST['ytype'] ), $_POST['usernames'], $_POST['fromtimestamp'], $_POST['totimestamp'], intval( $_POST['autocreate'] ), $_POST['posttype'], intval( $_POST['allow_multiple_posts'] ), intval( $_POST['htmlbr'] ) );
  378.         break;
  379.     }
  380. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement