Skip to content

Commit

Permalink
- Added Marco's long-awaited taxonmy module and patches - a replacement
Browse files Browse the repository at this point in the history
  for the meta system.  The patches add some extra functionality to the
  comment system (for example, comments can be set read-only) and fix a
  couple of small problems.

  + I integrated the required SQL updates from the varius *.mysql files
    into the "update.php" script.  Upgrading should be easy ...

  + I did not apply/commit the "user.diff" as requested by Marco ...

  + I didn't know what to do with "forum.module" and "forum2.module":
    what do you want me to do with it Marco?  Which one should go in?

  + Can we remove "node_index()" now; both from "node.module" and the
    themes?

  + Thanks Marco!
  • Loading branch information
dbuytaert committed Apr 14, 2002
1 parent e5fd671 commit d8cd549
Show file tree
Hide file tree
Showing 21 changed files with 1,514 additions and 173 deletions.
2 changes: 1 addition & 1 deletion database/database.mysql
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# Host: localhost Database: drupal
#--------------------------------------------------------
# Server version 3.23.38
# Server version 3.23.38

#
# Table structure for table 'access'
Expand Down
52 changes: 36 additions & 16 deletions includes/common.inc
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,13 @@ function object2array($node) {
return $array;
}

function path_uri() {
function path_uri($brief = 0) {
global $HTTP_HOST, $REQUEST_URI;
return "http://". $HTTP_HOST . substr($REQUEST_URI, 0, strrpos($REQUEST_URI, "/")) ."/";
$path = $HTTP_HOST . substr($REQUEST_URI, 0, strrpos($REQUEST_URI, "/")) ."/";
if (!$brief) {
$path = "http://". $path;
}
return $path;
}

function path_img() {
Expand Down Expand Up @@ -148,7 +152,7 @@ function variable_del($name) {
* Format a single result entry of a search query:
*
* @param $item a single search result as returned by <module>_search of type
* array("count" => ..., "link" => ..., "title" => ...,
* array("count" => ..., "link" => ..., "title" => ...,
* "user" => ..., "date" => ..., "keywords" => ...)
* @param $type module type of this item
*/
Expand All @@ -164,14 +168,14 @@ function search_item($item, $type) {
* Render a generic search form.
*
* "Generic" means "universal usable" - that is, usable not only from
* module.php?mod=search, but also as a simple seach box (without
* "Restrict search to", help text, etc) from theme's header etc.
* This means: provide options to only conditionally render certain
* module.php?mod=search, but also as a simple seach box (without
* "Restrict search to", help text, etc) from theme's header etc.
* This means: provide options to only conditionally render certain
* parts of this form.
*
* @param $action Form action. Defaults to module.php?mod=search.
* @param $query Query string. Defaults to global $keys.
* @param $options != 0: Render additional form fields/text
* @param $options != 0: Render additional form fields/text
* ("Restrict search to", help text, etc).
*/
function search_form($action = 0, $query = 0, $options = 0) {
Expand Down Expand Up @@ -239,11 +243,11 @@ function search_data() {
/**
* Display the search form and the resulting data.
*
* @param $type If set, search only nodes of this type.
* @param $type If set, search only nodes of this type.
* Otherwise, search all types.
* @param $action Form action. Defaults to module.php?mod=search.
* @param $query Query string. Defaults to global $keys.
* @param $options != 0: Render additional form fields/text
* @param $options != 0: Render additional form fields/text
* ("Restrict search to", help text, etc).
*/
function search_type($type = 0, $action = 0, $query = 0, $options = 0) {
Expand All @@ -256,6 +260,22 @@ function search_type($type = 0, $action = 0, $query = 0, $options = 0) {
return search_form($action, $query, $options) . search_data();
}

function drupal_str_replace($from, $to, $subject) {

/*
** Multiple item replace which works for *all* PHP versions
** (PHP 4.05+ supports this natively using similar syntax).
** $from and $to should be same sized arrays, $subject is the
** source text.
*/

for ($i = 0; $i < count($from); $i++) {
$subject = str_replace($from[$i], $to[$i], $subject);
}

return $subject;
}

function drupal_goto($url) {

/*
Expand Down Expand Up @@ -551,12 +571,12 @@ function form_textarea($title, $name, $value, $cols, $rows, $description = 0) {
return form_item($title, "<textarea wrap=\"virtual\" cols=\"$cols\" rows=\"$rows\" name=\"edit[$name]\">". check_form($value) ."</textarea>", $description);
}

function form_select($title, $name, $value, $options, $description = 0, $extra = 0) {
function form_select($title, $name, $value, $options, $description = 0, $extra = 0, $multiple = 0) {
if (count($options) > 0) {
foreach ($options as $key => $choice) {
foreach ($options as $key=>$choice) {
$select .= "<option value=\"$key\"". (is_array($value) ? (in_array($key, $value) ? " selected=\"selected\"" : "") : ($key == $value ? " selected=\"selected\"" : "")) .">". check_form($choice) ."</option>";
}
return form_item($title, "<select name=\"edit[$name]\"". ($extra ? " $extra" : "") .">$select</select>", $description);
return form_item($title, "<select name=\"edit[$name]".($multiple ? "[]" : "")."\"" .($multiple ? " multiple " : "").($extra ? " $extra" : "") .">$select</select>", $description);
}
}

Expand Down Expand Up @@ -595,20 +615,20 @@ function field_merge($a, $b) {

function link_page() {
global $custom_links;

if (is_array($custom_links)) {
return $custom_links;
}
else {
$links[] = "<a href=\"index.php\">". t("home") ."</a>";
foreach (module_list() as $name) {
foreach (module_list() as $name) {
if (module_hook($name, "link")) {
$links = array_merge($links, module_invoke($name, "link", "page"));
}
}
}
return $links;
}
}
}

function link_node($node, $main = 0) {
foreach (module_list() as $name) {
Expand Down
2 changes: 2 additions & 0 deletions modules/blog.module
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,8 @@ function blog_form(&$node, &$help, &$error) {
$output .= form_textarea(t("Teaser"), "teaser", $node->teaser, 60, 5, $error["teaser"]);
}

$output .= implode("<p>", taxonomy_node_form("blog", $node));

$output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));

return $output;
Expand Down
2 changes: 2 additions & 0 deletions modules/blog/blog.module
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,8 @@ function blog_form(&$node, &$help, &$error) {
$output .= form_textarea(t("Teaser"), "teaser", $node->teaser, 60, 5, $error["teaser"]);
}

$output .= implode("<p>", taxonomy_node_form("blog", $node));

$output .= form_textarea(t("Body"), "body", $node->body, 60, 15, $error["body"] ? $error["body"] : t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));

return $output;
Expand Down
65 changes: 42 additions & 23 deletions modules/comment.module
Original file line number Diff line number Diff line change
Expand Up @@ -145,22 +145,30 @@ function comment_edit($cid) {
}

function comment_reply($pid, $nid) {
global $theme;

if ($pid) {
$comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'"));
comment_view($comment, t("reply to this comment"));
}
else {
node_view(node_load(array("nid" => $nid)));
$pid = 0;
}
global $theme, $node;

// we must provide a taxonomy context for user_access()
$context->nid = $nid;
if (user_access("access comments", $context)) {
if ($pid) {
$comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'"));
comment_view($comment, t("reply to this comment"));
}
else {
node_view(node_load(array("nid" => $nid)));
$pid = 0;
}

if (user_access("post comments")) {
$theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid)));
}
else {
$theme->box(t("Reply"), t("You are not authorized to post comments."));
if (node_comment_mode($nid) == 1) {
$theme->box(t("Reply"), t("This discussion is closed: you can't post new comments."));
} else if (user_access("post comments", $context)) {
$theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid)));
}
else {
$theme->box(t("Reply"), t("You are not authorized to post comments."));
}
} else {
$theme->box(t("Reply"), t("You are not authorized to view comments."));
}
}

Expand Down Expand Up @@ -205,7 +213,8 @@ function comment_preview($edit) {
function comment_post($edit) {
global $theme, $user;

if (user_access("post comments")) {
$context->nid = $edit["nid"];
if (user_access("post comments", $context) && node_comment_mode($edit["nid"]) == 2) {

/*
** Validate the comment's subject. If not specified, extract
Expand Down Expand Up @@ -378,6 +387,11 @@ function comment_links($comment, $return = 1) {
$links[] = "<a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Administer this comment.") ."\"><span style=\"color: $theme->type;\">". t("administer") ."</span></a>";
}

// here we should check if this node has read-only comments, but we already check on submit
// and this way we save a query. it's just a cosmetic issue. otherwise just uncomment next
// line and related bracket some lines below

//if (node_comment_mode($comment->nid)) {
if (user_access("post comments")) {
if (comment_access("edit", $comment)) {
$links[] = "<a href=\"module.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Make changes to your comment.") ."\"><span style=\"color: $theme->type\">". t("edit your comment") ."</span></a>";
Expand All @@ -386,6 +400,7 @@ function comment_links($comment, $return = 1) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$comment->nid&pid=$comment->cid\" title=\"". t("Reply to this comment.") ."\"><span style=\"color: $theme->type;\">". t("reply to this comment") ."</span></a>";
}
}
//}


return $theme->links($links);
Expand Down Expand Up @@ -553,10 +568,10 @@ function comment_search($keys) {
// index.
//
// "select"'s value is used to relate the data from the specific nodes
// table to the data that the search_index table has in it, and the the
// table to the data that the search_index table has in it, and the the
// do_search functino will rank it.
//
// The select must always provide the following fields - lno, title,
// The select must always provide the following fields - lno, title,
// created, uid, name, count
//
// The select statement may optionally provide "nid", which is a secondary
Expand All @@ -565,7 +580,7 @@ function comment_search($keys) {
$find = do_search(array("keys" => $keys,
"type" => "comment",
"select" => "select s.lno as lno, c.nid as nid, c.subject as title, c.timestamp as created, u.uid as uid, u.name as name, s.count as count FROM search_index s, comments c LEFT JOIN users u ON c.uid = u.uid WHERE s.lno = c.cid AND s.type = 'comment' AND s.word like '%'"));

return $find;
}

Expand Down Expand Up @@ -597,11 +612,15 @@ function comment_link($type, $node = 0, $main = 0) {
else {
/*
** Node page: add a "post comment" link if the user is allowed to
** post comments.
** post comments and if this node is not read-only
*/

if (user_access("post comments")) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>";
if ($node->comment == 2) {
$links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>";
} else {
$links[] = t("This discussion is closed: you can't post new comments.");
}
}
}
}
Expand Down Expand Up @@ -751,14 +770,14 @@ function comment_update_index() {
// Return an array of values to dictate how to update the search index
// for this particular type of node.
//
// "last_update"'s value is used with variable_set to set the
// "last_update"'s value is used with variable_set to set the
// last time this node type (comment) had an index update run.
//
// "node_type"'s value is used to identify the node type in the search
// index (commentt in this case).
//
// "select"'s value is used to select the node id and text fields from
// the table we are indexing. In this case, we also check against the
// the table we are indexing. In this case, we also check against the
// last run date for the comments update.
return array("last_update" => "comment_cron_last",
"node_type" => "comment",
Expand Down
Loading

0 comments on commit d8cd549

Please sign in to comment.