array( 'name' => t('Blog entry'), 'module' => 'blog', 'description' => t('A blog is a regularly updated journal or diary made up of individual posts shown in reversed chronological order. Each member of the site may create and maintain a blog.'), ) ); } /** * Implementation of hook_perm(). */ function blog_perm() { return array('edit own blog'); } /** * Implementation of hook_access(). */ function blog_access($op, $node) { global $user; if ($op == 'create') { return user_access('edit own blog') && $user->uid; } if ($op == 'update' || $op == 'delete') { if (user_access('edit own blog') && ($user->uid == $node->uid)) { return TRUE; } } } /** * Implementation of hook_user(). */ function blog_user($type, &$edit, &$user) { if ($type == 'view' && user_access('edit own blog', $user)) { $user->content['summary']['blog'] = array( '#type' => 'user_profile_item', '#title' => t('Blog'), '#value' => l(t('View recent blog entries'), "blog/$user->uid", array('title' => t("Read @username's latest blog entries.", array('@username' => $user->name)))), '#attributes' => array('class' => 'blog'), ); } } /** * Implementation of hook_help(). */ function blog_help($path, $arg) { switch ($path) { case 'admin/help#blog': $output = '
'. t('The blog module allows registered users to maintain an online weblog (commonly known as a blog), often referred to as an online journal or diary. Blogs are made up of individual posts that are time stamped and are typically viewed by date as you would a diary. Blogs often contain links to web pages users have read and/or agree/disagree with.') .'
'; $output .= ''. t('The blog module adds a user blogs navigation link to the site, which takes any visitor to a page that displays the most recent blog entries from all the users on the site. The navigation menu has a create a blog entry link (which takes you to a submission form) and a view personal blog link (which displays your blog entries as other people will see them). The blog module also creates a recent blog posts block that can be enabled.') .'
'; $output .= ''. t('If a user has the ability to post blogs, then the import module (news aggregator) will display a blog-it link next to each news item in its lists. Clicking on this takes the user to the blog submission form, with the title, a link to the item, and a link to the source into the body text already in the text box, ready for the user to add a comment or explanation. This actively encourages people to add blog entries about things they see and hear elsewhere in the website and from your syndicated partner sites.') .'
'; $output .= ''. t('For more information please read the configuration and customization handbook Blog page.', array('@blog' => 'http://drupal.org/handbook/modules/blog/')) .'
'; return $output; } } /** * Displays an RSS feed containing recent blog entries of a given user. */ function blog_feed_user($uid = 0) { global $user; if ($uid) { $account = user_load(array('uid' => $uid, 'status' => 1)); } else { $account = $user; } $result = db_query_range(db_rewrite_sql("SELECT n.nid, n.created FROM {node} n WHERE n.type = 'blog' AND n.uid = %d AND n.status = 1 ORDER BY n.created DESC"), $uid, 0, variable_get('feed_default_items', 10)); $channel['title'] = $account->name ."'s blog"; $channel['link'] = url("blog/$uid", array('absolute' => TRUE)); $channel['description'] = $term->description; while ($row = db_fetch_object($result)) { $items[] = $row->nid; } node_feed($items, $channel); } /** * Displays an RSS feed containing recent blog entries of all users. */ function blog_feed_last() { $result = db_query_range(db_rewrite_sql("SELECT n.nid, n.created FROM {node} n WHERE n.type = 'blog' AND n.status = 1 ORDER BY n.created DESC"), 0, variable_get('feed_default_items', 10)); $channel['title'] = variable_get('site_name', 'Drupal') .' blogs'; $channel['link'] = url('blog', array('absolute' => TRUE)); $channel['description'] = $term->description; while ($row = db_fetch_object($result)) { $items[] = $row->nid; } node_feed($items, $channel); } /** * Menu callback; displays a Drupal page containing recent blog entries. */ function blog_page($a = NULL, $b = NULL) { if (is_object($a)) { $a = $a->uid; } if (is_numeric($a)) { // $a is a user ID if ($b == 'feed') { return blog_feed_user($a); } else { return blog_page_user($a); } } else if ($a == 'feed') { return blog_feed_last(); } else { return blog_page_last(); } } /** * Displays a Drupal page containing recent blog entries of a given user. */ function blog_page_user($uid) { global $user; $account = user_load(array((is_numeric($uid) ? 'uid' : 'name') => $uid, 'status' => 1)); if (!empty($account->uid)) { drupal_set_title($title = t("@name's blog", array('@name' => $account->name))); if (($account->uid == $user->uid) && user_access('edit own blog')) { $output = '