Mercurial > defr > drupal > core
comparison modules/node/node.module @ 7:fff6d4c8c043 6.3
Drupal 6.3
author | Franck Deroche <webmaster@defr.org> |
---|---|
date | Tue, 23 Dec 2008 14:30:28 +0100 |
parents | 2427550111ae |
children | 3edae6ecd6c6 |
comparison
equal
deleted
inserted
replaced
6:2cfdc3c92142 | 7:fff6d4c8c043 |
---|---|
1 <?php | 1 <?php |
2 // $Id: node.module,v 1.947.2.6 2008/04/09 21:11:48 goba Exp $ | 2 // $Id: node.module,v 1.947.2.11 2008/06/25 08:59:57 goba Exp $ |
3 | 3 |
4 /** | 4 /** |
5 * @file | 5 * @file |
6 * The core that allows content to be submitted to the site. Modules and scripts may | 6 * The core that allows content to be submitted to the site. Modules and scripts may |
7 * programmatically submit nodes using the usual form API pattern. | 7 * programmatically submit nodes using the usual form API pattern. |
133 */ | 133 */ |
134 function node_title_list($result, $title = NULL) { | 134 function node_title_list($result, $title = NULL) { |
135 $items = array(); | 135 $items = array(); |
136 $num_rows = FALSE; | 136 $num_rows = FALSE; |
137 while ($node = db_fetch_object($result)) { | 137 while ($node = db_fetch_object($result)) { |
138 $items[] = l($node->title, 'node/'. $node->nid, !empty($node->comment_count) ? array('title' => format_plural($node->comment_count, '1 comment', '@count comments')) : array()); | 138 $items[] = l($node->title, 'node/'. $node->nid, !empty($node->comment_count) ? array('attributes' => array('title' => format_plural($node->comment_count, '1 comment', '@count comments'))) : array()); |
139 $num_rows = TRUE; | 139 $num_rows = TRUE; |
140 } | 140 } |
141 | 141 |
142 return $num_rows ? theme('node_list', $items, $title) : FALSE; | 142 return $num_rows ? theme('node_list', $items, $title) : FALSE; |
143 } | 143 } |
905 $node->format = isset($node->format) ? $node->format : FILTER_FORMAT_DEFAULT; | 905 $node->format = isset($node->format) ? $node->format : FILTER_FORMAT_DEFAULT; |
906 $update_node = TRUE; | 906 $update_node = TRUE; |
907 | 907 |
908 // Generate the node table query and the node_revisions table query. | 908 // Generate the node table query and the node_revisions table query. |
909 if ($node->is_new) { | 909 if ($node->is_new) { |
910 _node_save_revision($node, $user->uid); | |
910 drupal_write_record('node', $node); | 911 drupal_write_record('node', $node); |
911 _node_save_revision($node, $user->uid); | 912 db_query('UPDATE {node_revisions} SET nid = %d WHERE vid = %d', $node->nid, $node->vid); |
912 $op = 'insert'; | 913 $op = 'insert'; |
913 } | 914 } |
914 else { | 915 else { |
915 drupal_write_record('node', $node, 'nid'); | 916 drupal_write_record('node', $node, 'nid'); |
916 if (!empty($node->revision)) { | 917 if (!empty($node->revision)) { |
917 _node_save_revision($node, $user->uid); | 918 _node_save_revision($node, $user->uid); |
919 db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid); | |
918 } | 920 } |
919 else { | 921 else { |
920 _node_save_revision($node, $user->uid, 'vid'); | 922 _node_save_revision($node, $user->uid, 'vid'); |
921 $update_node = FALSE; | 923 $update_node = FALSE; |
922 } | 924 } |
923 $op = 'update'; | 925 $op = 'update'; |
924 } | |
925 if ($update_node) { | |
926 db_query('UPDATE {node} SET vid = %d WHERE nid = %d', $node->vid, $node->nid); | |
927 } | 926 } |
928 | 927 |
929 // Call the node specific callback (if any). | 928 // Call the node specific callback (if any). |
930 node_invoke($node, $op); | 929 node_invoke($node, $op); |
931 node_invoke_nodeapi($node, $op); | 930 node_invoke_nodeapi($node, $op); |
1255 $arguments2[] = $weight; | 1254 $arguments2[] = $weight; |
1256 $arguments2[] = $scale; | 1255 $arguments2[] = $scale; |
1257 $join2 .= ' LEFT JOIN {node_counter} nc ON nc.nid = i.sid'; | 1256 $join2 .= ' LEFT JOIN {node_counter} nc ON nc.nid = i.sid'; |
1258 $total += $weight; | 1257 $total += $weight; |
1259 } | 1258 } |
1260 $select2 = (count($ranking) ? implode(' + ', $ranking) : 'i.relevance') .' AS score'; | 1259 |
1261 | 1260 // When all search factors are disabled (ie they have a weight of zero), |
1262 // Do search | 1261 // the default score is based only on keyword relevance and there is no need to |
1263 $find = do_search($keys, 'node', 'INNER JOIN {node} n ON n.nid = i.sid '. $join1 .' INNER JOIN {users} u ON n.uid = u.uid', $conditions1 . (empty($where1) ? '' : ' AND '. $where1), $arguments1, $select2, $join2, $arguments2); | 1262 // adjust the score of each item. |
1264 | 1263 if ($total == 0) { |
1265 // Load results | 1264 $select2 = 'i.relevance AS score'; |
1265 $total = 1; | |
1266 } | |
1267 else { | |
1268 $select2 = implode(' + ', $ranking) . ' AS score'; | |
1269 } | |
1270 | |
1271 // Do search. | |
1272 $find = do_search($keys, 'node', 'INNER JOIN {node} n ON n.nid = i.sid '. $join1, $conditions1 . (empty($where1) ? '' : ' AND '. $where1), $arguments1, $select2, $join2, $arguments2); | |
1273 | |
1274 // Load results. | |
1266 $results = array(); | 1275 $results = array(); |
1267 foreach ($find as $item) { | 1276 foreach ($find as $item) { |
1268 // Build the node body. | 1277 // Build the node body. |
1269 $node = node_load($item->sid); | 1278 $node = node_load($item->sid); |
1270 $node->build_mode = NODE_BUILD_SEARCH_RESULT; | 1279 $node->build_mode = NODE_BUILD_SEARCH_RESULT; |
1271 $node = node_build_content($node, FALSE, FALSE); | 1280 $node = node_build_content($node, FALSE, FALSE); |
1272 $node->body = drupal_render($node->content); | 1281 $node->body = drupal_render($node->content); |
1273 | 1282 |
1274 // Fetch comments for snippet | 1283 // Fetch comments for snippet. |
1275 $node->body .= module_invoke('comment', 'nodeapi', $node, 'update index'); | 1284 $node->body .= module_invoke('comment', 'nodeapi', $node, 'update index'); |
1276 // Fetch terms for snippet | 1285 // Fetch terms for snippet. |
1277 $node->body .= module_invoke('taxonomy', 'nodeapi', $node, 'update index'); | 1286 $node->body .= module_invoke('taxonomy', 'nodeapi', $node, 'update index'); |
1278 | 1287 |
1279 $extra = node_invoke_nodeapi($node, 'search result'); | 1288 $extra = node_invoke_nodeapi($node, 'search result'); |
1280 $results[] = array( | 1289 $results[] = array( |
1281 'link' => url('node/'. $item->sid, array('absolute' => TRUE)), | 1290 'link' => url('node/'. $item->sid, array('absolute' => TRUE)), |
1672 node_invoke_nodeapi($item, 'view', $teaser, FALSE); | 1681 node_invoke_nodeapi($item, 'view', $teaser, FALSE); |
1673 } | 1682 } |
1674 | 1683 |
1675 // Allow modules to add additional item fields and/or modify $item | 1684 // Allow modules to add additional item fields and/or modify $item |
1676 $extra = node_invoke_nodeapi($item, 'rss item'); | 1685 $extra = node_invoke_nodeapi($item, 'rss item'); |
1677 $extra = array_merge($extra, array(array('key' => 'pubDate', 'value' => format_date($item->created, 'custom', 'r')), array('key' => 'dc:creator', 'value' => $item->name), array('key' => 'guid', 'value' => $item->nid .' at '. $base_url, 'attributes' => array('isPermaLink' => 'false')))); | 1686 $extra = array_merge($extra, array(array('key' => 'pubDate', 'value' => gmdate('r', $item->created)), array('key' => 'dc:creator', 'value' => $item->name), array('key' => 'guid', 'value' => $item->nid .' at '. $base_url, 'attributes' => array('isPermaLink' => 'false')))); |
1678 foreach ($extra as $element) { | 1687 foreach ($extra as $element) { |
1679 if (isset($element['namespace'])) { | 1688 if (isset($element['namespace'])) { |
1680 $namespaces = array_merge($namespaces, $element['namespace']); | 1689 $namespaces = array_merge($namespaces, $element['namespace']); |
1681 } | 1690 } |
1682 } | 1691 } |