1, 'displayonline' => 2, 'displaytitle' => 4, 'displayauthor' => 8, 'displaycreateddate' => 16, 'displayupdateddate' => 32, 'displayprintarticlelink' => 64, 'displayemailarticlelink' => 128, 'displaydescription' => 256, 'displaysmilies' => 512, 'displaycomments' => 1024); // ############################### SEND ARTICLE ################################ function p2_SendEmail($articleid) { global $DB, $categoryid, $sdurl, $p2_language; $useremail = $_POST['p2_emailfrom']; $emailto = $_POST['p2_emailto']; $emailcomment = $_POST['p2_emailcomment']; // obtain emails $getemails = str_replace(',', ' ', $emailto); // get rid of commas $getemails = eregi_replace("[[:space:]]+", " ", $getemails); // get rid of extra spaces $getemails = trim($getemails); // then trim $emails = explode(" ", $getemails); // setup some vars $invalidemails = 0; // check if emails are real for($i = 0; $i < count($emails); $i++) { if(!ereg("^([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", $emails[$i])) $invalidemails = 1; } if($invalidemails == 1) $errors[] = $p2_language['invalid_email']; else { // check user email if(!ereg("^([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", $useremail)) $errors[] = $p2_language['invalid_email']; } // check if article exists/online if(!$article = $DB->query_first("SELECT * FROM " . TABLE_PREFIX . "p2_news WHERE articleid = '$articleid' AND categoryid = '$categoryid' AND (settings & 2) AND (datestart = 0 OR datestart < '" . time() . "') AND (dateend = 0 OR dateend > '" . time() . "')") ) { echo $p2_language['article_offline']; return 0; } // send email if no errors if(!isset($errors)) { // email headers $headers = "MIME-Version: 1.0\r \n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\r \n"; $headers .= "From: \"$useremail\" <$useremail>\r \n"; $headers .= "Reply-To: \"$useremail\" <$useremail>\r \n"; // email subject $subject = $article['title']; // email main message $message = $sdurl . "index.php?categoryid=" . $categoryid . "&p2_articleid=$articleid \r \n \r \n $emailcomment"; for($i = 0; $i < count($emails); $i++) { if(@mail($emails[$i], $subject, $message, $headers)) { $messagesent = 1; } } if($messagesent == 1) { echo $p2_language['email_sent'] . '
' . $article['title'] . '

' . $p2_language['go_back'] . ''; } else { echo $p2_language['email_not_sent']; } } else { foreach($errors as $key=>$value) { echo $value . '

'; } p2_EmailArticle($articleid); } } // ############################ EMAIL ARTICLE FORM ############################# function p2_EmailArticle($articleid) { global $DB, $categoryid, $inputsize, $p2_language; // check if article exists/online if(!$article = $DB->query_first("SELECT * FROM " . TABLE_PREFIX . "p2_news WHERE articleid = '$articleid' AND categoryid = '$categoryid' AND (settings & 2) AND (datestart = 0 OR datestart < '" . time() . "') AND (dateend = 0 OR dateend > '" . time() . "')") ) { echo $p2_language['article_offline']; return 0; } echo '' . $article['title'] . '

' . $p2_language['enter_recipient_email'] . '

' . $p2_language['separate_with_commas'] . '

' . $p2_language['enter_your_email'] . '


' . $p2_language['enter_comment'] . '


'; } // ######################### INSERT ARTICLE INTO DB ########################### function p2_InsertArticle() { global $DB, $categoryid, $p2_language; $author = $_POST['p2_author']; $title = $_POST['p2_title']; $description = $_POST['p2_description']; $article = $_POST['p2_article']; if(strlen($author) == 0) { $errors .= $p2_language['enter_name'] . '
'; } if(strlen($title) == 0) { $errors .= $p2_language['enter_title'] . '
'; } if(strlen($article) == 0) { $errors .= $p2_language['enter_article'] . '
'; } // if no errors insert news, else print error and show submit form if(!isset($errors)) { $DB->query("INSERT INTO " . TABLE_PREFIX . "p2_news (categoryid, settings, datecreated, author, title, description, article) VALUES ($categoryid, 1, '" . time() . "', '$author', '$title', '$description', '$article')"); echo $p2_language['article_submitted']; $getemail = $DB->query_first("SELECT value FROM " . TABLE_PREFIX . "pluginsettings WHERE pluginid = '3' AND title = 'Article Notification'"); $email = $getemail['value']; if(strlen($email) > 0) { // obtain emails $getemails = str_replace(',', ' ', $email); // get rid of commas $getemails = eregi_replace("[[:space:]]+", " ", $getemails); // get rid of extra spaces $getemails = trim($getemails); // then trim $emails = explode(" ", $getemails); $fullname = 'Article Plugin'; $subject = 'New article submitted to your website!'; $message = 'A new article has been submitted to your website.'; $headers = "MIME-Version: 1.0\r \n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\r \n"; $headers .= "From: \"$fullname\" <$email>\r \n"; $headers .= "Reply-To: \"$fullname\" <$email>\r \n"; for($i = 0; $i < count($emails); $i++) { @mail($emails[$i], $subject, $message, $headers); } } } else { echo '' . $errors . '

'; p2_SubmitArticle($author, $title, $description, $article); } } // ########################### SUBMIT ARTICLE FORM ############################ function p2_SubmitArticle($author, $title, $description, $article) { global $categoryid, $userinfo, $inputsize, $p2_language; echo '
'; if($userinfo['loggedin']) { echo ''; } else { echo ''; } echo '
' . $p2_language['author'] . '
' . $p2_language['title'] . '
' . $p2_language['description'] . '
' . $p2_language['article'] . '
'; } // ############################## DISPLAY ARTICLE ############################## function p2_DisplayArticle($article) { global $DB, $sdurl, $categoryid, $userinfo, $p2_articlebitfield, $p2_language; // check which page of the article we are on // this variable needs to be created before displaying the article becuase it's used // in the description printing area $currentpage = (isset($_GET['p2_page']) AND ereg("^[0-9]+$", $_GET['p2_page'])) ? $_GET['p2_page'] : 1; // to prevent blank lines from showing, create a variable that will determine if weed need to break $displaylinebreaks = false; // display title? if($article['settings'] & $p2_articlebitfield['displaytitle']) { echo '' . $article['title'] . ' '; $displaylinebreaks = true; } // display author? if($article['settings'] & $p2_articlebitfield['displayauthor']) { echo $p2_language['by'] . ' ' . $article['author'] . '
'; $displaylinebreaks = true; } // display published date? if($article['settings'] & $p2_articlebitfield['displaycreateddate']) { echo $p2_language['published'] . ' ' . iif($article['datestart'] != 0, DisplayDate($article['datestart']), DisplayDate($article['datecreated'])) . ''; $displaylinebreaks = true; } // display updated date? if( ($article['settings'] & $p2_articlebitfield['displayupdateddate']) AND ($article['dateupdated'] != 0) ) { echo $p2_language['updated'] . ' ' . DisplayDate($article['dateupdated']) . ''; $displaylinebreaks = true; } // display print article link? if($article['settings'] & $p2_articlebitfield['displayprintarticlelink']) { echo '
' . $p2_language['print'] . '   ' . iif(!($article['settings'] & $p2_articlebitfield['displayemailarticlelink']), '
'); $displaylinebreaks = true; } // display email article link? if($article['settings'] & $p2_articlebitfield['displayemailarticlelink']) { echo ' ' . $p2_language['email'] . '
'; $displaylinebreaks = true; } if($displaylinebreaks) { echo '
'; } // display description? if(strlen($article['description'])) { if(!isset($_GET['p2_articleid'])) { echo iif($article['settings'] & $p2_articlebitfield['displaysmilies'], AddSmilies($article['description']), $article['description']); } else if( ($article['settings'] & $p2_articlebitfield['displaydescription']) AND $currentpage == 1) { echo iif($article['settings'] & $p2_articlebitfield['displaysmilies'], AddSmilies($article['description']), $article['description']); } } // display article? if(!strlen($article['description']) OR isset($_GET['p2_articleid'])) { if(strlen($article['article'])) { // find out how many pages are in this article $articlepages = preg_split('/{(pagebreak)\s*(.*?)}/i', $article['article']); // a few more checks... if($currentpage == 0 OR $currentpage > count($articlepages)) { $currentpage = 1; } // add smilies to article? if($article['settings'] & $p2_articlebitfield['displaysmilies']) { $articlepages[$currentpage - 1] = AddSmilies($articlepages[$currentpage - 1]); } // this preg_replace code was created by shoz: phpfreaks.com/forums/index.php?showuser=14845 echo preg_replace('#(\A[\s]*]*>[\s]*|' // remove
at beginning of the string .']*>\s*(?=(?:\{pagebreak\}))|' // remove
before {pagebreak} .'(?<=(?:\{pagebreak\}))\s*]*>|' // remove
after {pagebreak} .']*>[\s]*\Z)#is', '', $articlepages[$currentpage - 1]); // remove
at end of string if(count($articlepages) > 1) { echo '

'; // display previous page link? if($currentpage > 1) { echo '' . $p2_language['previous_page'] . ' | '; } echo $p2_language['page'] . ' ' . $currentpage . ' ' . $p2_language['of'] . ' ' . count($articlepages); if(count($articlepages) > $currentpage) { echo ' | ' . $p2_language['next_page'] . ''; } echo '
'; } } } else { // display link to article echo '' . $p2_language['read_more'] . ' - '; } // display submit news link? if(in_array(2, $userinfo['pluginsubmitids'])) { echo '' . $p2_language['submit_article'] . ''; } // display user comments? if($article['settings'] & $p2_articlebitfield['displaycomments']) { echo iif(in_array(2, $userinfo['pluginsubmitids']), ' - ', '

'); // if p2_start is set, then it has already been confirmed to be an int (checked below) Comments(2, $article['articleid'], 'index.php?categoryid=' . $categoryid . iif(isset($_GET['p2_start']), '&p2_start=' . $_GET['p2_start']) . '&p2_articleid=' . $article['articleid']); } } // ############################### DISPLAY NEWS ############################### function p2_DisplayNews() { global $DB, $categoryid, $p2_articlebitfield, $p2_language; // get global article settings $getsettings = $DB->query("SELECT description, value FROM " . TABLE_PREFIX . "pluginsettings WHERE pluginid = 2"); for($i = 0; $setting = $DB->fetch_array($getsettings); $i++) { $settings[$setting['description']] = $setting['value']; } // create global settings $globalsettings = 0; $globalsettings += $settings['Display Title'] == 1 ? 4 : 0; $globalsettings += $settings['Display Author'] == 1 ? 8 : 0; $globalsettings += $settings['Display Creation Date'] == 1 ? 16 : 0; $globalsettings += $settings['Display Updated Date'] == 1 ? 32 : 0; $globalsettings += $settings['Display Print Article Link'] == 1 ? 64 : 0; $globalsettings += $settings['Display Email Article Link'] == 1 ? 128 : 0; $globalsettings += $settings['Display Description Inside Article'] == 1 ? 256 : 0; $globalsettings += $settings['Display Smilie Images'] == 1 ? 512 : 0; $globalsettings += $settings['Display User Comments'] == 1 ? 1024 : 0; unset($settings); // display specific article? if(isset($_GET['p2_articleid'])) { if($article = $DB->query_first("SELECT * FROM " . TABLE_PREFIX . "p2_news WHERE articleid = '" . $_GET['p2_articleid'] . "' AND categoryid = '$categoryid' AND (settings & 2) AND (datestart = 0 OR datestart < '" . time() . "') AND (dateend = 0 OR dateend > '" . time() . "')") ) { // use global settings for this article? if($article['settings'] & $p2_articlebitfield['useglobalsettings']) { $article['settings'] = $globalsettings; } // display the article p2_DisplayArticle($article); // update the views $DB->query("UPDATE " . TABLE_PREFIX . "p2_news SET views=views+1 WHERE articleid = '" . $_GET['p2_articleid'] . "'"); } else { echo $p2_language['article_offline']; return; } } else { // display all articles // find the limit start $start = (isset($_GET['p2_start']) AND ereg("^[0-9]+$", $_GET['p2_start'])) ? $_GET['p2_start'] : 0; // get category settings, if none then resort to default if($categorysettings = $DB->query_first("SELECT * FROM " . TABLE_PREFIX . "p2_settings WHERE categoryid = '$categoryid'")) { $limit = $categorysettings['maxarticles']; $order = $categorysettings['sorting']; $multiplepages = $categorysettings['multiplepages']; } else { $limit = 10; $order = 'articleid DESC'; $multiplepages = 1; } $getarticles = $DB->query("SELECT * FROM " . TABLE_PREFIX . "p2_news WHERE categoryid = '$categoryid' AND (settings & 2) AND (datestart = 0 OR datestart < '" . time() . "') AND (dateend = 0 OR dateend > '" . time() . "') ORDER BY " . $order . " LIMIT $start, " . ($limit + 1) . ""); $rows = $DB->get_num_rows($getarticles); for($i = 0; $i < $rows AND $i < $limit; $i++) { $article = $DB->fetch_array($getarticles); // use global settings for this article? if($article['settings'] & $p2_articlebitfield['useglobalsettings']) { $article['settings'] = $globalsettings; } // display article p2_DisplayArticle($article); // display break if( (($i + 1) < $rows) AND (($i + 1) < $limit) ) { echo '



'; } } // display multiple pages? if($multiplepages) { if($start > 0 OR $rows > $limit) { echo '



'; if($start > 0) { echo ''; } if($rows > $limit) { echo ''; } echo '
' . $p2_language['previous'] . '' . $p2_language['next'] . '
'; } } } } // ######################### START CALLING FUNCTIONS ########################## // $p2_action is created at the top of this page // first do a security check on articleid: if(isset($_GET['p2_articleid']) AND !ereg("^[0-9]+$", $_GET['p2_articleid'])) { unset($_GET['p2_articleid']); } if($p2_action == 'insertarticle' AND in_array(2, $userinfo['pluginsubmitids'])) { p2_InsertArticle(); } else if($p2_action == 'submitarticle' AND in_array(2, $userinfo['pluginsubmitids'])) { p2_SubmitArticle(NULL, NULL, NULL, NULL); } else if(isset($_GET['p2_articleid']) AND $p2_action == 'emailarticle') { p2_EmailArticle($_GET['p2_articleid']); } else if(isset($_GET['p2_articleid']) AND $p2_action == 'sendemail') { p2_SendEmail($_GET['p2_articleid']); } else { p2_DisplayNews(); } // ############################## UNSET VARIABLES ############################## unset($p2_language); ?>