2001-03-24 16:37:44 +00:00
< ? php
2001-03-25 10:57:01 +00:00
$status = array ( dumped => 0 , expired => 1 , queued => 2 , posted => 3 , scheduled => 4 );
2001-03-24 16:37:44 +00:00
function _node_get ( $field , $value ) {
$result = db_query ( " SELECT lid, type FROM nodes WHERE $field = ' $value ' " );
if ( $node = db_fetch_object ( $result )) {
return db_query ( " SELECT n.*, l.*, u.userid FROM nodes n LEFT JOIN $node->type l ON n.lid = l.id LEFT JOIN users u ON n.author = u.id WHERE n. $field = ' $value ' " );
}
}
function node_get_object ( $field , $value ) {
return db_fetch_object ( _node_get ( $field , $value ));
}
function node_get_array ( $field , $value ) {
return db_fetch_array ( _node_get ( $field , $value ));
}
2001-03-26 20:22:09 +00:00
function node_del ( $field , $value ) {
global $status ;
2001-03-24 16:37:44 +00:00
if ( $node = node_get_object ( $field , $value )) {
2001-03-26 20:22:09 +00:00
if ( $node -> status == $status [ dumped ]) {
db_query ( " DELETE FROM nodes WHERE nid = ' $node->nid ' " );
db_query ( " DELETE FROM $node->type WHERE node = ' $node->nid ' " );
watchdog ( " message " , " deleted node ' $node->title ' " );
return $node ;
}
2001-03-24 16:37:44 +00:00
}
}
function node_save ( $node ) {
2001-03-25 10:57:01 +00:00
global $user , $status ;
2001-03-24 16:37:44 +00:00
2001-03-25 10:57:01 +00:00
$rows = array ( nid , pid , lid , log , type , title , score , votes , author , status , timestamp );
2001-03-24 16:37:44 +00:00
// insert or update node:
if ( $node [ nid ]) {
$u1 = array ();
$u2 = array ();
foreach ( $node as $field => $value ) {
if ( in_array ( $field , $rows )) {
array_push ( $u1 , check_input ( $field ) . " = ' " . check_input ( $value ) . " ' " );
}
else {
array_push ( $u2 , check_input ( $field ) . " = ' " . check_input ( $value ) . " ' " );
}
}
$u1 = implode ( " , " , $u1 );
$u2 = implode ( " , " , $u2 );
db_query ( " UPDATE nodes SET $u1 WHERE nid = ' $node[nid] ' " );
db_query ( " UPDATE $node[type] SET $u2 WHERE node = ' $node[nid] ' " );
2001-03-25 10:57:01 +00:00
watchdog ( " message " , " modified node ' $node[title] ' " );
2001-03-24 16:37:44 +00:00
}
else {
// setup default values:
2001-03-25 10:57:01 +00:00
$node = array_merge ( array ( title => " ? " , author => $user -> id , type => " ? " , pid => 0 , log => " node created " , status => $status [ queued ], score => 0 , votes => 0 , timestamp => time ()), $node );
2001-03-24 16:37:44 +00:00
// prepare queries:
$f1 = array ();
$v1 = array ();
$f2 = array ();
$v2 = array ();
foreach ( $node as $field => $value ) {
if ( in_array ( $field , $rows )) {
array_push ( $f1 , check_input ( $field ));
array_push ( $v1 , " ' " . check_input ( $value ) . " ' " );
}
else {
array_push ( $f2 , check_input ( $field ));
array_push ( $v2 , " ' " . check_input ( $value ) . " ' " );
}
}
$f1 = implode ( " , " , $f1 );
$v1 = implode ( " , " , $v1 );
$f2 = implode ( " , " , $f2 );
$v2 = implode ( " , " , $v2 );
2001-03-25 10:57:01 +00:00
db_query ( " INSERT INTO nodes ( $f1 ) VALUES ( $v1 ) " );
if ( $nid = db_insert_id ()) {
$lid = db_query ( " INSERT INTO $node[type] ( $f2 , node) VALUES ( $v2 , $nid ) " );
if ( $lid = db_insert_id ()) {
db_query ( " UPDATE nodes SET lid = ' $lid ' WHERE nid = ' $nid ' " );
}
else {
db_query ( " DELETE FROM nodes WHERE nid = ' $nid ' " );
2001-03-24 16:37:44 +00:00
}
2001-03-25 10:57:01 +00:00
}
watchdog ( " message " , " added node ' $node[title] ' " );
}
if (( $node [ pid ]) && ( $node [ status ] == $status [ posted ])) {
db_query ( " UPDATE nodes SET status = ' $status[expired] ' WHERE nid = ' $node[pid] ' " );
2001-03-24 16:37:44 +00:00
}
}
2001-03-25 10:57:01 +00:00
function node_view ( $node , $page ) {
2001-03-24 16:37:44 +00:00
if ( $node -> type ) {
$function = $node -> type . " _view " ;
2001-03-25 10:57:01 +00:00
return $function ( $node , $page );
2001-03-24 16:37:44 +00:00
}
2001-03-25 10:57:01 +00:00
}
function node_form ( $node ) {
if ( $node [ type ]) {
$function = $node [ type ] . " _form " ;
return $function ( $node );
2001-03-24 16:37:44 +00:00
}
}
function node_info ( $node ) {
global $REQUEST_URI ;
?>
< SCRIPT >
<!--//
function visit ( site ) {
if ( site != " " ) {
parent . location = site
}
}
//-->
</ SCRIPT >
< ? php
2001-03-25 10:57:01 +00:00
$choices = array ( " /node.php?id= $node->nid " => t ( " view node " ), " /submit.php?mod= $node->type &op=update&id= $node->nid " => t ( " suggest update " ), " /node.php?op=history&id= $node->nid " => t ( " view history " ));
2001-03-24 16:37:44 +00:00
$output .= " <FORM METHOD= \" get \" ACTION= \" \" > \n " ;
foreach ( $choices as $key => $value ) $options .= " <OPTION VALUE= \" $key\ " " . ( $key == $REQUEST_URI ? " SELECTED " : " " ) . " > " . check_select( $value ) . " </ OPTION > \n " ;
$output .= " <SELECT NAME= \" op \" ONCHANGE= \" visit(this.options[this.selectedIndex].value) \" > $options </SELECT> \n " ;
$output .= " </FORM> \n " ;
return $output ;
}
function node_visible ( $node ) {
2001-03-25 10:57:01 +00:00
global $user , $status ;
return ( $node -> status == $status [ posted ]) || ( $node -> status == $status [ queued ] && $user -> id ) || user_access ( $user , " node " );
2001-03-24 16:37:44 +00:00
}
function node_post_threshold ( $node , $threshold = 5 ) {
return 3 ;
}
function node_dump_threshold ( $node , $threshold = - 3 ) {
return - 2 ;
}
function node_timout_threshold ( $node , $threshold = 10 ) {
return 9 ;
}
?>