<?
// Your agreement with TNuG gives you a limited license to access and use this library.
// You may access the library for your own private or business use. 
// You may not reproduce, copy, or redistribute, whole or in part, any of the library that constitutes the TNuG's library functions without written permission.

// Object Template
// Version 0.2.7

// Version 0.2.7 - Rearranged PagNav, Add RPP, and fixed some var declarations
//               - Fixed <tr> in display
// Version 0.2.6 - Fixed Next/Prev Error -Neuro.
//		 - Add new paging nav - Neuro.
// Version 0.2.5 - prepended message to search_header and search_footer - Neuro.
//               - Also changed message_view to use public group - Neuro.
//		 - removed $id from ins - Neuro.
// 		 - Fixed form cache error - Neuro.
//		 - Smore search syntax - Neuro.
// Version 0.2.4 - Added default HIDNIM for IDs to make methods work - Neuro.

// Interface Override
$finish['ins'] = "message_board($id);";
$finish['upd'] = "message_board($id);";
$finish['del'] = "message_board();";
// Authwrapper Override
// $security['method'] = array('users' => "''",'groups' => "''");

if (empty($subid)) {
$subid=$ses->get_var($aut_sid,'subid');
} else {
$ses->set_var($aut_sid,'subid',$subid);
}

function getmessageform($messageid,$action,$name,$params="",$memberof=0) {
  global $conn,$SYND,$filename,$subid,$NeuroOekakiUserid;
  if (empty($messageid)) {
    if ($memberof) {
      $res=sqlexec("select * from messages where messageid=$memberof");
      $row2=sqlgetrow($res);
      $row['subject']='Re:'.$row2['subject'];
      $row['message']='> '.eregi_replace("\n","\n> ",$row2['message'])."\n";
    }
    $row['userid']=$NeuroOekakiUserid;
    $row['siteid']='NROK'; //getsiteidfromdomain();
    $row['subid']=$subid;
  } else {
    $sql="select * from messages where messageid=$messageid";
    $result=sqlexec($sql,$conn,0);
    $row=sqlgetrow($result);
    $memberof=$row['memberof'];
  }
  $form=new form(geturl("$filename?obj=message&id=" . $messageid . "&action=" .$action . $params) ,"POST",1,1,1);
  $form->conn=$conn;  
  $form->setgroup(array('public'));  
  $form->addcontrol('HIDNUM','messageid',$row['messageid']);
  $form->addcontrol('HIDNUM','memberof',$memberof);
  $form->addcontrol('HIDNUM','userid',$row['userid']);
  list($uname,$em)=getnfo($row['userid']);
  $form->addcontrol('HTML','',$uname,"Username:");
  
$form->addcontrol('text','subject',$row['subject'],'Subject:','[[:alnum:]]+');
#   if (useringroup(array('anonyous'))) {
#    $form->addcontrol('text','email',$row['email'],'Your Email:');
    $form->addcontrol('html','',$em,'Your Email:');
#  } else {
#    $form->addcontrol('hidden','email',getadminemail());
#  }
  $form->addcontrol('textarea','message',$row['message'],'Please enter your message:','',' rows=10 cols=64'); 

  if ( $action == 'ins' || $action == 'upd') 
    $row['post'] = date("Y-m-d H:i:s");

  $form->addcontrol('hidden','post',$row['post']);
  $form->addcontrol('hidden','siteid',$row['siteid']);  
  $form->addcontrol('hidden','subid',$row['subid']);  
  $form->addcontrol("SUBMIT","submit",$name);
  return $form;
}

function show_messages($mid,$lv,$exp=0) {
if (useringroup(array('site_admin','administrator'))) { $admin=1; };
$res=sqlexec("select * from messages where memberof=".$mid);
if (sqlgetnumrows($res)) {
echo '<ul>';
while($row=sqlgetrow($res)) {
echo '<li>';
#echo '<tr>';
#echo '<td>';
#for($i=0; $i<=$lv; $i++) {
#echo "-";
#}
#echo '<img src="text.gif"></td>';
#echo '<td>';
if ($exp) {
message_view($row['messageid']);
echo '<a href="'.geturl("interface.php3?obj=message&action=new&id=".$row['messageid']).'">Reply</a>';
} else {
echo '<a href="'.geturl("interface.php3?obj=message&action=board&id=".$row['messageid']).'">'.$row['subject'].'</a>';
}
    if ( $admin ) { 
echo ' | [<a 
href="'.geturl("interface.php3?obj=message&action=remove&id=".$row['messageid']).'">Delete</a>] 
| ['; 
echo '<a 
href="'.geturl("interface.php3?obj=message&action=edit&id=".$row['messageid']).'">Edit</a>] | '; 
if ($row['sticky']) {
  echo '[<a 
href="'.geturl("interface.php3?obj=message&action=sticky&set=0&id=".$row['messageid']).'">Set 
unsticky</a>]'; } else {
  echo '[<a 
href="'.geturl("interface.php3?obj=message&action=sticky&set=1&id=".$row['messageid']).'">Set 
sticky</a>]'; }
};

#echo '</td>';
#    echo '<td>'.$row['post'].'</td>';
#    echo '<td>'.$row['email'].'</td>';
#echo '</tr>';
#echo "\n";
show_messages($row['messageid'],$lv++,$exp);
}
echo '</ul>';
}
}

function getnumreplies($id=0,$last='',$uid='') {
$siteid='NROK'; //getsiteidfromdomain();
$sql="select messageid, UNIX_TIMESTAMP(post) as last, userid from messages 
where memberof=$id and siteid='$siteid'";
$c=0;
$res=sqlexec($sql);
while($row=sqlgetrow($res)) {
$c++;
if ($last<$row['last']) { $last=$row['last']; $uid=$row['userid']; }
list($nc,$last,$uid)=getnumreplies($row['messageid'],$last,$uid);
$c+=$nc;
}
return array($c,$last,$uid);
}

function message_board($id=0) {
global $expand,$subid;
if (empty($expand)) { $expand=0; }
if (useringroup(array('site_admin','administrator'))) { $admin=1; };
if( $id !=0 ) {
  message_view($id);
}
$siteid='NROK'; //getsiteidfromdomain();
$id=(int)$id;
$sql="select *,UNIX_TIMESTAMP(post) as last from messages where memberof=$id and siteid='$siteid'";
if ($subid) {
$sql.=" and subid='$subid'";
}
$sql.=" order by sticky desc, post desc";
$result = sqlexec($sql);
if ( sqlgetnumrows($result) == 0) {
  if ($id!=0) {
  echo "<font size=+1>No Replies in this topic</font><P>\n";
  }
}
if ($id!=0) {
if ($admin) {
echo '<a
href="'.geturl('interface.php3?obj=message&action=edit&id='.$id).'">Edit Post</a><br>';
}
echo '<a
href="'.geturl('interface.php3?obj=message&action=new&id='.$id).'">Reply</a><br>';
echo "Current Replies:<br>\n";
} else {
echo '<a
href="'.geturl('interface.php3?obj=message&action=new&id='.$id).'">Post</a><br>';
echo "Current Posts:<br>\n";
}

#  echo "<table border=0 cellspacing=1 width=90%>";
#  echo "<tr><td></td><th>Topic:</th><th>Date & Time:</th><th>Email:</th></tr>";
echo '<ul>';
  if ( $id != 0 ) {
    $parent = sqlgetrow(sqlexec("select * from messages where messageid=$id"));
    if ($parent['memberof']==0) {
#    echo '<tr><td><img src="back.gif"></td><td><a href="'.geturl("interface.php3?obj=message&action=board&id=".$parent['memberof']).'">Back</a></td></tr>';
    echo '<li><img src="back.gif"> <a href="'.geturl("interface.php3?obj=message&action=board&id=".$parent['memberof']).'">Back</a>';
    } else {
#    echo '<tr><td><img src="back.gif"></td><td><a href="'.geturl("interface.php3?obj=message&action=board&expand=1&id=".$parent['memberof']).'">Back</a></td></tr>';
    echo '<li><img src="back.gif"> <a href="'.geturl("interface.php3?obj=message&action=board&id=".$parent['memberof']).'">Back</a>';
    echo '<li><img src="back.gif"> <a href="'.geturl("interface.php3?obj=message&action=board").'">Back to top</a>';
    }
  }
if ( sqlgetnumrows($result) != 0) {
  while ( $row=sqlgetrow($result) ) {
echo '<ul>';
#    echo '<tr><td>';
    # Next messages
#    echo ' <img src="text.gif"></td>';
#    echo '<td><A HREF="'.geturl("interface.php3?obj=message&action=board&expand=1&id=".$row['messageid']).'">'.$row['subject'].'</A></td>';
    list($rep,$last,$luid)=getnumreplies($row['messageid'],$row['last']);
    list($uname)=getnfo($row['userid']);
    list($runame)=getnfo($luid);
if ($expand) {
$exp=1;
}
if ($exp) {
    message_view($row['messageid']);
echo '<a href="'.geturl("interface.php3?obj=message&action=new&id=".$row['messageid']).'">Reply</a>';
    if ( $admin ) { 
echo ' | [<a 
href="'.geturl("interface.php3?obj=message&action=remove&id=".$row['messageid']).'">Delete</a>] 
| ['; 
echo '<a 
href="'.geturl("interface.php3?obj=message&action=edit&id=".$row['messageid']).'">Edit</a>] | '; 
if ($row['sticky']) {
  echo '[<a 
href="'.geturl("interface.php3?obj=message&action=sticky&set=0&id=".$row['messageid']).'">Set 
unsticky</a>]'; } else {
  echo '[<a 
href="'.geturl("interface.php3?obj=message&action=sticky&set=1&id=".$row['messageid']).'">Set 
sticky</a>]'; }
};

} else {
    echo '<li>';
    if ($row['sticky']) {
      echo "*";
    }
echo '<A
HREF="'.geturl("interface.php3?obj=message&action=board&expand=1&id=".$row['messageid']).'">'.$row['subject'].'</A>
by '.$uname.' - Replies ('.$rep.') Latest ('.date('m/d/Y 
H:i:s',$last).') by '.$runame; 
#    echo '<td>'.$row['post'].'</td>'; #    echo '<td>'.$row['email'].'</td>';
#    echo '</tr>';
}
    if ($expand) {
    show_messages($row['messageid'],0,$exp);
    }
#    echo "</tr>\n";
  echo '</ul>';
  }
} else {
#  echo "<tr><td></td><td>None</td></tr>\n";
}
echo '<ul>';
#  echo "</table>\n";

}

function message_sticky($id) {
global $set;
if ($id) {
if (useringroup(array('administrator'))) {
$set=(int)$set;
sqlexec("update messages set sticky=$set where messageid=$id");
}
}
message_board(0);
}

function message_debug() {
  $form=getmessageform(0,'','');
  $form->debugform();
}

function delete_members($id) {
  $result = sqlexec ("select * from messages where memberof=$id");
  while ($row=sqlgetrow($result) ) {
    sqlexec("delete from messages where messageid=".$row['messageid']);
    delete_members($row['messageid']);
  }
}

function message_del($id) {
  sqlexec("delete from messages where messageid=$id");
  delete_members($id);
  log_transac("message","remove",$id,"");
}

function message_new($id=0, $params="") {
?><h3>Please, fill this form to post a message</h3><?
  $form=getmessageform(0,'ins','Post Message',$params.'&id='.$id,$id);
  echo $form->generate("edit",array('public'));
}

function message_upd($id) {
  global $filename;
  $form=getmessageform($id,'ins','Update message');
  $check=$form->check_results(array('public'));
  if (is_array($check)) {
    while(list($key,$val)=each($check)) {
            if ($val != "") {  echo 'You left out ' . $val; }
    }
    exit;
  }
  $form->update_table("messages","messageid='$id'",array('public'));
  log_transac("message","edit",$id,"");
}

function message_browse() {
  //global $SYND;
  //message_display(" where syndicateid=$SYND");
  message_display();
}

function message_pagnav($start,$ttlrow) {
global $filename,$rpp,$action,$id;
  $back = $start-$rpp; if ($back < 0) { $back=0; }
  $next = $start+$rpp; 
#  echo "begin[0]start[$start]ttlrow[$ttlrow]<br>\n";
#  echo "back[$back]next[$next]<br>\n";
  if ($start == 0 ) {
    echo '<a href="'.geturl($filename.'?obj=download&start='.$next.'&id='.$id.'&action='.$action) . '">Next 25</A> | ';
    echo '<a href="'.geturl($filename.'?obj=download&start='.($ttlrow-$rpp).'&id='.$id.'&action='.$action) . '">End</A>';    
  } elseif ( $ttlrow < $next )  {
    echo '<a href="'.geturl($filename.'?obj=download&start=0'.'&id='.$id.'&action='.$action) . '">Beginning</A> | ';  
    echo '<a href="'.geturl($filename.'?obj=download&start='.$back.'&id='.$id.'&action='.$action) . '">Prev 25</A>';
  } else {
    echo '<a href="'.geturl($filename.'?obj=download&start=0'.'&id='.$id.'&action='.$action) . '">Beginning</A> | '; 
    echo '<a href="'.geturl($filename.'?obj=download&start=' . $back.'&id='.$id.'&action='.$action) . '">Prev 25</A> | <a href="'.geturl($filename . '?obj=download&start=' . $next.'&id='.$id.'&action='.$action).'">Next 25</A> | ';
    echo '<a href="'.geturl($filename.'?obj=download&start='.($ttlrow-$rpp).'&id='.$id.'&action='.$action) . '">End</A>';    
  }
}

function message_display($result=0) {
  global $filename,$conn,$start,$rpp;
  if (empty($start)) { $start = 0; }
  if ($result==0) { $result=sqlexec("select * from messages",$conn,0); }
  $ttlrow=sqlgetnumrows($result);
  message_pagnav($start,$ttlrow);
  echo ' | <A HREF="'.geturl($filename.'?obj=message&action=new').'">Add New message</A><br>';
  echo '<table border=3><tr>';
  $form=getmessageform(0,'','');
  echo $form->showfields(array('public'));
  echo '</tr>';
  $end = $start+$rpp;
  for ($count = 0; $count < $start; $count++) { sqlgetrow($result); }
  for ($count = $start; (($count <= $end) && ($row=sqlgetrow($result))); $count++) {
    $form=getmessageform($row['messageid'],'','');
//    if (useringroup(array('administrator'))) {
    $form->addmethod($filename . '?obj=message&action=edit&id=', 'message info', 'messageid',1);
    $form->addmethod($filename . '?obj=message&action=remove&id=', 'remove record', 'messageid',1);
//    }
    echo '<tr>';
    echo $form->showdata(array('public'));
    echo '</td></tr>';
  }
  echo '</table>';
  message_pagnav($start,$ttlrow);
}

function message_edit($id,$params="") {
  $form=getmessageform($id,'upd','Update message',$params);
  $form->addcontrol('HIDDEN','id',$id);
  echo $form->generate("edit",array('public'));
}

function message_ins() {
  $form=getmessageform(0,'ins','Update message');
  $check=$form->check_results(array('public'));
  if (is_array($check)) {
    while(list($key,$val)=each($check)) {
            if ($val != "") {  echo 'You left out ' . $val; }
    }
    exit;
  }
  $id=$form->insert_results('messages',array('public'));
  log_transac("message","inserted",$id,"");
  return $id;
}

function message_remove($id, $params='') {
  global $filename;
  $form=getmessageform($id,'','');
  echo $form->generate("view",array('public'));
  echo '<br><br><center><b>Are you sure you would like to remove this record?<b><br><br>';
  echo '<table><tr><td>';
  echo '<FORM ACTION="'.geturl($filename.'?obj=message&action=del&id='.$id.$params) .  '" METHOD="POST">';
  echo '<INPUT type="submit" value="Yes">';
  echo '</form></td><td>';
  echo '<FORM ACTION="'.geturl($filename.'?obj=message&action=browse'.$params).'" METHOD="POST">';
  echo '<INPUT type="submit" value="No">';
  echo '</form>';
  echo '</td></tr></table></center>';
}

function message_view($id) {
global $hostsiteid,$subid;
/*
$result=sqlexec("select message_view as message from nexus.sitelayouts where accountid=".getaccountid());
if ( sqlgetnumrows($result)) {
  $layout = sqlgetrow($result);
*/
//  if ( empty($layout['message']) ) {


  $layout['message'] = "
Subject    : <b> <subject> </b><br>
Posted  By : <b> <name> <email> </b><br>
On Date    : <b> <posted> </b>
<blockquote> <message> </blockquote><br>";


#  }
#}
#echo "Getting $hostsiteid/$subid Layout<br>\n";
//$layout['message']=getsiteappkey($hostsiteid,$subid,'Layout');

  $row=sqlgetrow(sqlexec("select * from messages where messageid=$id"));
  list($name)=getnfo($row['userid']);
  $layout['message'] = ereg_replace("<subject>",$row['subject'],$layout['message']);
  $layout['message'] = ereg_replace("<name>",$name,$layout['message']);
//  $layout['message'] = ereg_replace("<email>",$row['email'],$layout['message']);
  $layout['message'] = ereg_replace("<posted>",$row['post'],$layout['message']);  
  $layout['message'] = ereg_replace("<message>",nl2br($row['message']),$layout['message']);  
echo $layout['message'];

//$form=getmessageform($id,'','');
//echo $form->proclayout($layout['message'],array('public'));
}

function message_search_form() {
	$form=getmessageform(0,'search','Search');
	echo $form->generate("edit",array('public'));
}

function message_search() {
message_search_header();
	$form=getmessageform(0,'search','Search');
	$result=$form->message_search_form('messages',array('public'));
	message_display($result);
message_search_footer();
}


/*
function message_field_navigate($fieldsarr,$name) {
  $fields=join(',',$fieldarr);
  $result=sqlexec("select distinct count(messageid) as cnt, $fields from messages group by $fields order by $fields");
  echo "Available $name:<br>";
  $row=sqlgetrow($result);
  while($row=sqlgetrow($result)) {
    echo '<a href="'.$filename.'?obj=message&action=search&';
    reset($fieldsarr);
    while(list($key,$field)=each($fieldsarr)) {
      echo "$field=" . $row[$field] . '&';
    }
    echo geturlparams() . $params .'"><img src="images/folder.gif"> ['.$row['cnt'].'] ';
    echo $fields;    
    echo '</a><br>';
  }
}
*/

function message_dir_navigate($fieldsarr,$name,$table,$field,$order) {
global $prev;
  if (!empty($prev)) {
    echo "<center><b>$name</center></b><P>";
    if ($r=sqlgetrow(sqlexec("select * from message where messageid=$prev"))) {
      echo '<a href="'.geturl($filename.'?obj=message&action=dir_navigate&prev='.$r['prev']) .'"><img src="images/back.gif"><tt>Parent Directory</tt></a><br>'; 
    }
  }

  if (empty($prev)) { $prev=0; $flag=1; }
  $prev_c.=" where prev=$prev order by" . join(',',$fieldsarr);
  $result=sqlexec("select * from messages".$prev_c); 
  if (sqlgetnumrows($result) > 0) {
    if ( $flag==1) { echo "<center><b>$name:</center></b><P>"; }
    while ($row=sqlgetrow($result)) {
      echo '<a href="'.geturl($filename.'?obj=message&action=dir_navigate&prev='.$row['messageid']).'"><img src="images/folder.gif"> <font size=-1>';
     reset($fieldsarr);
     while(list($key,$field)=each($fieldsarr)) {
       echo $row[$field] . ' ';
     }
     echo '</font></a><br>';
    }
  }

     $result=sqlexec("select * from $table where $field=$prev order by $order");
     if ( sqlgetnumrows($result) > 0 ) {
       echo '<br><center><hr width="70%"></center><br>';
       message_display($result);
     }
}

function message_search_header() { 
?>
<table border=0 width=100%>
<tr><th colspan=2>message Search</th><td></td>
<tr><td width=100%></td><td rowspan=2 valign=top><font size=-1>
<? 
echo '<P>';
echo '<a href="'.geturl('interface.php3?obj=message&action=search').'">Search</a><br>';
echo '<P>';
echo 'Browse By<br>';

#echo '<a href="'.geturl('interface.php3?obj=message&action=search').'">Location</a><br>';
?>
</font>
</td></tr>
<td valign=top>
<?
}

function message_search_footer() {
?>
</td></tr></table>
<?
}


?>
