Php Script For Membership Form Processors

FormMail is a PHP script that we provide free for anyone to use.
You may already be familiar with another FormMail script or Form Processor. If so, you can view the special features of our FormMail below or just skip this page and jump to the FormMail download forum (no need to register).You can use our PHP FormMail as a simple replacement of another FormMail script or Form Processor, or you can use its powerful new options to make your HTML forms even more useful.

</pre>
<?php
/******************************************************************************
* This file is part of Yet Another Link Directory.                            *
*                                                                             *
* Yet Another Link Directory is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or           *
* (at your option) any later version.                                         *
*                                                                             *
* Yet Another Link Directory is distributed in the hope that it will be       *
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of      *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               *
* GNU General Public License for more details.                                *
*                                                                             *
* You should have received a copy of the GNU General Public License           *
* along with Yet Another Link Directory; if not, write to the Free Software   *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA  *
******************************************************************************/


function linkCategory($id){
global $settings;

$query = 'SELECT category FROM '.$settings['links_table'].' WHERE id="'.mysql_safe($id).'"';
$result = mysql_query($query);
$row = mysql_fetch_row($result);
return $row[0];
}

function logEvent($type,$userid,$value){
global $settings;
$query = 'INSERT INTO `'.$settings['log_table'].'` (`type`,`date`,`userid`,`value`) VALUES ("'.$type.'","'.time().'","'.$userid.'","'.mysql_safe($value).'")';
mysql_query($query);
}

function categoryMenu($root,$selected='1',$incl_root=false,$excludeid='') {
global $settings;
// retrieve the left and right value of the $root node
$result = mysql_query('SELECT lft, rgt FROM '.$settings['categories_table'].
' WHERE id="'.$root.'";');
$row = mysql_fetch_array($result);

// start with an empty $right stack
$right = array();

// now, retrieve all descendants of the $root node
$result = mysql_query('SELECT id, name, lft, rgt, parent FROM '.$settings['categories_table'].
' WHERE lft BETWEEN '.$row['lft'].' AND '.
$row['rgt'].' ORDER BY lft ASC;');

if(!empty($excludeid)){
$excludearray = subCategories($excludeid);
} else {
$excludearray = array();
}

// display each row
$output = '<select name="category">';
for ($i=0;$row = mysql_fetch_array($result);$i++) {
// only check stack if there is one
if (count($right)>0) {
// check if we should remove a node from the stack
while ($right[count($right)-1]<$row['rgt']) {
array_pop($right);
}
}

if($selected == $row['id']){
$selectedtext = ' selected="selected"';
} else {
$selectedtext = '';
}

if(array_search($row['id'],$excludearray) === false){

// display indented node title
if(!(!$incl_root &amp;&amp; $row['id'] == '1')){
if(!$incl_root){
$count = count($right)-1;
} else {
$count = count($right);
}
$output .= '<option value="'.$row['id'].'"'.$selectedtext.'>'.str_repeat('&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;',$count).$row['name']."</option>\n";
}

}

$right[] = $row['rgt'];
}
$output .= '</select>';
return $output;
}

function categoryName($id){
global $settings;
$query = 'SELECT name FROM '.$settings['categories_table'].' WHERE id="'.mysql_safe($id).'"';
$result = mysql_query($query);
$row = mysql_fetch_row($result);
return $row[0];
}

function urlExists($url){
if (@fopen($url,"r")) {
return true;
} else {
return false;
}
}

function mysql_safe($var) {
if (get_magic_quotes_gpc()) {
$var = stripslashes($var);
}
$var = mysql_real_escape_string($var);
return $var;
}

function gpcStripSlashes($var){
if(get_magic_quotes_gpc()){
return stripslashes($var);
}
return $var;
}

function categoryDelete($id){
global $settings;
$query = 'DELETE FROM '.$settings['categories_table'].' WHERE id="'.mysql_safe($id).'"';
mysql_query($query);
$query = 'DELETE FROM '.$settings['links_table'].' WHERE category="'.mysql_safe($id).'"';
mysql_query($query);
}

function categorySubs($catid){
global $settings;
$query = 'SELECT * FROM '.$settings['categories_table'].' WHERE parent="'.mysql_safe($catid).'"';
$result = mysql_query($query);
if(mysql_num_rows($result)>0){
return true;
} else {
return false;
}
}

function categoryExists($id,$name=''){
global $settings;
$query = 'SELECT * FROM '.$settings['categories_table'].' WHERE id="'.mysql_safe($id).'"';
$result = mysql_query($query);
if(mysql_num_rows($result)==0){
return false;
} else {
if(!empty($name)){
$row = mysql_fetch_array($result);
if($name == cleanUrl($row['name'])){
return true;
}
} else {
return true;
}
return false;
}
}

function linkUrlExists($url,$category=null){
global $settings;
$query = 'SELECT * FROM `'.$settings['links_table'].'` WHERE url="'.mysql_safe($url).'"';
if(!empty($category)){
$query .= ' and category="'.mysql_safe($category).'"';
}
$result = mysql_query($query);
if(mysql_num_rows($result)==0){
return false;
} else {
return true;
}
}

function validateEmail($email) {
// First, we check that there's one @ symbol, and that the lengths are right
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
return false;
}
// Split it into sections to make life easier
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!ereg("^(([A-Za-z0-9!#$%&amp;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&amp;'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
return false;
}
}
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false; // Not enough parts to domain
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
return false;
}
}
}
return true;
}

function linkUrl($id){
global $settings;
$query = 'SELECT url FROM '.$settings['links_table'].' WHERE id="'.mysql_safe($id).'"';
$result = mysql_query($query);
$row = mysql_fetch_row($result);
return $row[0];
}

function categoryPath($catid){
global $settings;

$path = array();

$query = 'SELECT lft,rgt FROM `'.$settings['categories_table'].'` WHERE id="'.mysql_safe($catid).'"';
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$lft = $row['lft'];
$rgt = $row['rgt'];

$query = 'SELECT name,id FROM `'.$settings['categories_table'].'` WHERE lft < '.$lft.' AND rgt > '.$rgt.' ORDER BY lft ASC;';
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
if($row['id'] != '1'){
switch($settings['url_type']){
case '1':
//$path .= $settings['nav_separator'].'<a href="'.$_SERVER['PHP_SELF'].'?viewcat='.$row['id'].'">'.htmlentities($row['name']).'</a>';
$path[] = array('name'=>htmlentities($row['name']),'url'=>$settings['index_file'].'?viewcat='.$row['id']);
break;
case '2':
//$path .= $settings['nav_separator'].'<a href="'.$settings['mod_rewrite_url'].$row['id'].'_'.cleanUrl($row['name']).'">'.htmlentities($row['name']).'</a>';
$path[] = array('name'=>htmlentities($row['name']),'url'=>$settings['mod_rewrite_url'].$row['id'].'_'.cleanUrl($row['name']));
}
}
}
return $path;
}

function categoryParent($catid){
global $nav, $settings;
$query = 'SELECT parent FROM '.$settings['categories_table'].' WHERE id="'.mysql_safe($catid).'"';
$result = mysql_query($query);
$row = mysql_fetch_row($result);
return $row[0];
}

function linkRemove($id){
global $nav, $settings;
$query = 'DELETE FROM '.$settings['links_table'].' WHERE id="'.mysql_safe($id).'"';
mysql_query($query);
}

function listCategories($catid){
global $settings, $template;

$query = 'SELECT * FROM '.$settings['categories_table'].' WHERE parent="'.mysql_safe($catid).'" ORDER BY `name` ASC';
$result = mysql_query($query);

while($row = mysql_fetch_array($result)){
$id[] = $row['id'];
$name[] = $row['name'];
$disp_subs[] = $row['disp_subs'];
}

//$cats = '<table width="100%" border="0"><tr><td width="50%" valign="top"><ul>';

if(mysql_num_rows($result) % 2){
$divnum = mysql_num_rows($result)+1;
} else {
$divnum = mysql_num_rows($result);
}

$template->assign('category_division',$divnum/2);

$categoryarray = array();

for($i=0; $i<mysql_num_rows($result); $i++){

switch($settings['url_type']){
case '1':
$main_link_url = $_SERVER['PHP_SELF'].'?viewcat='.$id[$i];
break;
case '2':
$main_link_url = $settings['mod_rewrite_url'].$id[$i].'_'.cleanUrl($name[$i]);
}

if($disp_subs[$i]=='true' &amp;&amp; numSubCats($id[$i]) > 0){
$query = 'SELECT * FROM '.$settings['categories_table'].' WHERE parent="'.$id[$i].'" ORDER BY `name` ASC LIMIT '.$settings['show_num_subs'];
$result2 = mysql_query($query);

for($subi=0;$subrow = mysql_fetch_array($result2); $subi++){

switch($settings['url_type']){
case '1':
$link_url = $_SERVER['PHP_SELF'].'?viewcat='.$subrow['id'];
break;
case '2':
$link_url = $settings['mod_rewrite_url'].$subrow['id'].'_'.cleanUrl($subrow['name']);
}
$subsarray[] = array('id'=>$subrow['id'],'name'=>$subrow['name'],'url'=>$link_url);

}

if(numSubCats($id[$i]) >= $settings['show_num_subs']){
$subscontinued = true;
} else {
$subscontinued = false;
}

} else {
$subscontinued = false;
$subsarray = null;
}

$categoryarray[] = array('id'=>$id[$i],'name'=>$name[$i],'url'=>$main_link_url,'subs'=>$subsarray,'continued'=>$subscontinued,'links'=>categoryLinks($id[$i]));
$subsarray = null;
}

return $categoryarray;
}

function stripslashes_array($value){
$value = is_array($value) ?
array_map('stripslashes_array', $value) :
stripslashes($value);

return $value;
}

function numSubCats($parent){
global $settings;
$query = 'SELECT * FROM '.$settings['categories_table'].' WHERE parent="'.$parent.'"';
$result = mysql_query($query);
return mysql_num_rows($result);
}

function cleanUrl($text)
{
$text=strtolower($text);
$code_entities_match = array(' ','--','&amp;quot;','!','@','#','$','%','^','&amp;','*','(',')','_','+','{','}','|',':','"','<','>','?','[',']','\',';',"'",',','.','/','*','+','~','`','=');
$code_entities_replace = array('-','-','','','','','','','','','','','','','','','','','','','','','','','','');
$text = str_replace($code_entities_match, $code_entities_replace, $text);
return $text;
}

function search($search){
global $settings;

$search = mysql_safe($search);

$search=ltrim($search);
$search=rtrim($search);

$split = explode("
",$search); //Breaking the string to array of words

$q = '';

while(list($key,$value) = each($split)){
if($value != ' ' and strlen($value) > 0){
$q .= "
CONCAT(`url`,`name`,`description`) LIKE '%{$value}%' or ";
}
}

// remove the last "
or"
$q = substr($q,0,(strLen($q)-3));

$query = 'SELECT * FROM '.$settings['links_table'].' WHERE `approved`="
true" and '.$q;
$result = mysql_query($query);

while($row = mysql_fetch_array($result)){

if($settings['jump_links']){
$url = $_SERVER['PHP_SELF'].'?jump='.$row['id'];
} else {
$url = $urls[$i];
}

$row['url'] = htmlentities($row['url']);
$row['name'] = htmlentities($row['name']);
$row['description'] = htmlentities($row['description']);

$categoryname = categoryName($row['category']);

switch($settings['url_type']){
case '1':
$caturl = $settings['index_file'].'?viewcat='.$row['category'];
break;
case '2':
$caturl = $settings['mod_rewrite_url'].$row['category'].'_'.cleanUrl($categoryname);
}

/*$links .= "
<li><a href=\"{$url}\" target=\"_blank\"><b>{$row['name']}</b></a> - {$row['description']}<br />
<small><strong>URL: </strong><font color=\"999999\">{$row['url']}</font><br />Found in: <a href=\"{$_SERVER['PHP_SELF']}?viewcat={$row['category']}\">{$categoryname}</a></small>
</li>"
;*/

$links[] = array('id'=>$row['id'],'name'=>$row['name'],'description'=>$row['description'],'url'=>$row['url'],'linkurl'=>$url,'category'=>$categoryname,'categoryurl'=>$caturl);

}

if(!empty($links)){
return $links;
} else {
return null;
}
}

function listUnapprovedLinks(){
global $settings;

$query = 'SELECT * FROM '.$settings['links_table'].' WHERE approved="false" ORDER BY date ASC';
$result = mysql_query($query);

$links = '<ul>';

$category = null;

while($row = mysql_fetch_array($result)){
$id = $row['id'];
$name = htmlentities($row['name']);
$url = htmlentities($row['url']);
$urlenc = urlencode($row['url']);
$urlenc2 = urlencode($urlenc);
$description = htmlentities($row['description']);
$date = $row['date'];

$categorypath = categoryPath($row['category']);
for($i=0; $i<count($categorypath);$i++){
$category .= '/'.$categorypath[$i]['name'];
}

$category .= '/'.categoryName($row['category']);

$links .= "<li><a href=\"{$url}\" target=\"_blank\"><b>{$name}</b></a> - {$description}<br />
<small>Category: {$category}<br /><strong>URL: </strong><font color=\"999999\">{$url}</font></small><br />
<a href=\"{$_SERVER['PHP_SELF']}?approve={$id}&amp;url={$urlenc}\">[approve]</a> <a href=\"javascript:reject_link('{$id}','{$urlenc2}')\">[reject]</a> <a href=\"edit.php?id={$id}&amp;ref=approve\">[edit]</a>
</li>"
;
}

$links .= '</ul>';
return $links;
}

function numUnapprovedLinks(){
global $settings;
$query = 'SELECT id FROM '.$settings['links_table'].' WHERE approved="false"';
$result = mysql_query($query);
return mysql_num_rows($result);
}

function listLinks($catid=''){
global $settings, $is_administrator;

if($settings['list_type']=='1'){
$query = 'SELECT * FROM '.$settings['links_table'].' WHERE category="'.mysql_safe($catid).'" and approved="true" ORDER BY clicks DESC';
} elseif($settings['list_type']=='2'){
$query = 'SELECT * FROM '.$settings['links_table'].' WHERE category="'.mysql_safe($catid).'" and approved="true" ORDER BY name ASC';
} else {
$query = 'SELECT * FROM '.$settings['links_table'].' WHERE category="'.mysql_safe($catid).'" and approved="true" ORDER BY date DESC';
}
$result = mysql_query($query);

if(mysql_num_rows($result)>0){
while($row = mysql_fetch_array($result)){
if($settings['jump_links']){
$url = $_SERVER['PHP_SELF'].'?jump='.$row['id'];
} else {
$url = $row['url'];
}

$row['url'] = $row['url'];
$row['name'] = $row['name'];
$row['description'] = $row['description'];

$links[] = array('id'=>$row['id'],'linkurl'=>$url,'url'=>$row['url'],'name'=>$row['name'],'description'=>$row['description']);
}
} else {
$links = null;
}

return $links;
}

// check for subcategories
function subCat($parent){
global $settings;
$query = 'SELECT id FROM '.$settings['categories_table'].' WHERE parent="'.mysql_safe($parent).'"';
$result = mysql_query($query);
if(mysql_num_rows($result)==0){
return false;
} else {
return true;
}
}

function hasLinks($catid){
if(categoryLinks($catid)==0){
return false;
} else {
return true;
}
}

function countLinks($id){
global $settings;
$query = 'SELECT * FROM '.$settings['links_table'].' WHERE category="'.$id.'" and approved="true"';
$result = mysql_query($query);
return mysql_num_rows($result);
}

function recursiveCountLinks($id){
$subcats = subCategories($id);
$count = 0;
foreach($subcats as $key=>$subid){
$count += countLinks($subid);
}
return $count;
}

// # of links in a category
function categoryLinks($id){
global $settings;

if($settings['count_refresh_time']>0){
$query = 'SELECT link_count,count_last_upd FROM '.$settings['categories_table'].' WHERE id="'.$id.'"';
$result = mysql_query($query) or die('Query failed. '.mysql_error());
$row = mysql_fetch_array($result);

if((time()-$row['count_last_upd'])/60 > $settings['count_refresh_time']){
// update the time for that field
if($settings['recursive_counts']){
$count = recursiveCountLinks($id);
} else {
$count = countLinks($id);
}
$query = 'UPDATE '.$settings['categories_table'].' SET link_count="'.$count.'", count_last_upd="'.time().'" WHERE id="'.$id.'"';
mysql_query($query);
return $count;
} else {
return $row['link_count'];
}
} else {
if($settings['recursive_counts']){
return recursiveCountLinks($id);
} else {
return countLinks($id);
}
}
}

function printError($error){
global $settings;
include($settings['template_header']);
print $error;
include($settings['template_footer']);
exit;
}

function rebuildTree($parent, $left) {
global $settings;
// the right value of this node is the left value + 1
$right = $left+1;

// get all children of this node
$result = mysql_query('SELECT id FROM '.$settings['categories_table'].
' WHERE parent="'.$parent.'" ORDER BY `name`;');
while ($row = mysql_fetch_array($result)) {
// recursive execution of this function for each
// child of this node
// $right is the current right value, which is
// incremented by the rebuild_tree function
$right = rebuildTree($row['id'], $right);
}

// we've got the left value, and now that we've processed
// the children of this node we also know the right value
mysql_query('UPDATE '.$settings['categories_table'].' SET lft='.$left.', rgt='.
$right.' WHERE id="'.$parent.'";');

// return the right value of this node + 1
return $right+1;
}

function subCategories($root){
global $settings;
// retrieve the left and right value of the $root node
$result = mysql_query('SELECT lft, rgt FROM '.$settings['categories_table'].
' WHERE id="'.$root.'"');
$row = mysql_fetch_array($result);

// now, retrieve all descendants of the $root node
$query = 'SELECT id, name, lft, rgt FROM '.$settings['categories_table'].
' WHERE lft BETWEEN '.$row['lft'].' AND '.
$row['rgt'].' ORDER BY lft ASC';
$result = mysql_query($query);

// display each row
$output = '';
for ($i=0;$row = mysql_fetch_array($result);$i++) {
$output[] = $row['id'];
}
return $output;
}

function displayTree($root,$call='categories') {
global $settings;
// retrieve the left and right value of the $root node
$result = mysql_query('SELECT lft, rgt FROM '.$settings['categories_table'].
' WHERE id="'.$root.'"');
$row = mysql_fetch_array($result);

// start with an empty $right stack
$right = array();

// now, retrieve all descendants of the $root node
$query = 'SELECT id, name, lft, rgt FROM '.$settings['categories_table'].
' WHERE lft BETWEEN '.$row['lft'].' AND '.
$row['rgt'].' ORDER BY lft ASC';
$result = mysql_query($query);

// display each row
$output = 'root<br />';
for ($i=0;$row = mysql_fetch_array($result);$i++) {
// only check stack if there is one
if (count($right)>0) {
// check if we should remove a node from the stack
while ($right[count($right)-1]<$row['rgt']) {
array_pop($right);
}
}

// display indented node title
if($row['id'] != '1'){
if($call == 'categories'){
$catname = urlencode(urlencode($row['name']));
$output .= str_repeat('&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;',count($right)).'|__ '.$row['name']." <a href=\"javascript:delete_category('{$row['id']}','{$catname}')\">[X]</a> <a href=\"edit.php?catid={$row['id']}&amp;ref=cats\">[Edit]</a> <a href=\"{$_SERVER['PHP_SELF']}?newsubparent={$row['id']}\">[+]</a> <a href=\"{$_SERVER['PHP_SELF']}?move={$row['id']}\">[Move]</a><br />\n";
} elseif($call == 'newlink'){
$output .= str_repeat('&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;',count($right)).'|__ '.$row['name']." <a href=\"{$_SERVER['PHP_SELF']}?cat={$row['id']}\">[+]</a><br />\n";
}
}

$right[] = $row['rgt'];
}
return $output;
}
?>

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>