drupal og模块扩展

<?php
// $Id: og_actions.module,v 1.9.4.2 2009/06/09 01:04:44 weitzman Exp $
/**
 * Implementation of hook_menu().
 */
function og_my_menu() {
  $items['node/%node/member'] = array(
    'title' => '圈子成员',
    'page callback' => 'og_member',
    'page arguments' => array(1),
    'access callback'   => 'is_og',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0
  ); 
  $items['node/%node/post'] = array(
    'title' => '圈子话题',
    'page callback' => 'og_post',
    'page arguments' => array(1),
    'access callback' => 'is_og', 
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0
  );
  $items['node/%node/pic'] = array(
    'title' => '圈子图片',
    'page callback' => 'og_pic',
    'page arguments' => array(1),
    'access callback'   => 'is_og',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0
  ); 
  $items['node/%node/members'] = array(
    'title' => '审核成员',
    'page callback' => 'og_member',
    'page arguments' => array(1),
    'access callback' => 'og_is_group_admin', 
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0
  );
  $items['node/%node/gdpost'] = array(
    'title' => '精彩话题',
    'page callback' => 'og_gdpost',
    'page arguments' => array(1),
    'access callback' => 'is_og', 
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0
  );
  $items['node/%node/action'] = array(
    'title' => '圈子活动',
    'page callback' => 'og_action',
    'page arguments' => array(1),
    'access callback' => 'is_og', 
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0
  );
  $items['node/%node/poll'] = array(
    'title' => '圈子投票',
    'page callback' => 'og_poll',
    'page arguments' => array(1),
    'access callback' => 'is_og', 
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
    'weight' => 0
  );
  return $items;
}
function og_login($oid,$type,$ly){
    if($ly){
      return drupal_get_form('user_login');
    }else{
      drupal_goto('node/'.$oid.'/'.$type, array('destination' => 'node/'.$oid.'/'.$type));
    }      
}
function is_og($node){
    if($node->type == 'og'){
        return TRUE;
    }
}
function og_post($og){
  if(user_is_logged_in()){
    if (is_null($limit)) {
      $limit = 1;
    }
    $sql = "SELECT n.nid FROM og_ancestry oa left join node n on oa.nid = n.nid WHERE oa.group_nid = '%d'";
    $result = pager_query($sql, $limit, 0, $sql_count, $og->nid);
    while($data = db_fetch_object($result)){
      $row[] = $data;
    }
    drupal_set_title('圈子话题');
    return theme('og_post', $row);
  }else{
    return og_login($og->nid,arg(2),$_REQUEST['destination']);
  }
}
function og_gdpost($og){
  if(user_is_logged_in()){
    if (is_null($limit)) {
      $limit = 1;
    }
    $sql = "SELECT n.nid FROM og_ancestry oa left join node n on oa.nid = n.nid WHERE oa.group_nid = '%d' and n.promote = 1";
    $result = pager_query($sql, $limit, 0, $sql_count, $og->nid);
    while($data = db_fetch_object($result)){
      $row[] = $data;
    }
    drupal_set_title('精彩话题');
    return theme('og_post', $row);
  }else{
    return og_login($og->nid,arg(2),$_REQUEST['destination']);
  }
}
function og_action($og,$type='action'){
  if(user_is_logged_in()){
    if (is_null($limit)) {
      $limit = 1;
    }
    $sql = "SELECT n.nid FROM og_ancestry oa left join node n on oa.nid = n.nid WHERE oa.group_nid = '%d' and n.type = '%s'";
    $result = pager_query($sql, $limit, 0, $sql_count, $og->nid,$type);
    while($data = db_fetch_object($result)){
      $row[] = $data;
    }
    drupal_set_title('圈子活动');
    return theme('og_post', $row);
  }else{
    return og_login($og->nid,arg(2),$_REQUEST['destination']);
  }
}
function og_poll($og,$type='poll'){
  if(user_is_logged_in()){
    if (is_null($limit)) {
      $limit = 1;
    }
    $sql = "SELECT n.nid FROM og_ancestry oa left join node n on oa.nid = n.nid WHERE oa.group_nid = '%d' and n.type = '%s'";
    $result = pager_query($sql, $limit, 0, $sql_count, $og->nid,$type);
    while($data = db_fetch_object($result)){
      $row[] = $data;
    }
    drupal_set_title('圈子投票');
    return theme('og_poll', $row);
  }else{
    return og_login($og->nid,arg(2),$_REQUEST['destination']);
  }
}
function og_pic($og){
  if(user_is_logged_in()){
    if (is_null($limit)) {
      $limit = 1;
    }
    $sql = "SELECT nr.nid FROM og_ancestry oa left join node_revisions nr on oa.nid = nr.nid WHERE oa.group_nid = '%d' and nr.body regexp '%s'";
    //$sql_count = "SELECT count(*) FROM og_ancestry oa left join node_revisions nr on oa.nid = nr.nid WHERE oa.group_nid = '%d' and nr.body regexp '%s'";
    $result = pager_query($sql, $limit, 0, $sql_count, $og->nid,'src');
    while($data = db_fetch_object($result)){
      $row[] = $data;
    }
    drupal_set_title('圈子图片');
    return theme('og_pic', $row);
  }else{
     return og_login($og->nid,arg(2),$_REQUEST['destination']);
  }
}
function og_member($og){
  if(user_is_logged_in()){
    if (is_null($limit)) {
      $limit = 1;
    }
    $sql = "SELECT * FROM og_uid WHERE nid = '%d'";
    //$sql_count = "SELECT count(*) FROM og WHERE nid = '%d'";
    $result = pager_query($sql, 1, 0, $sql_count, $og->nid);
    while($data = db_fetch_object($result)){
      $row[] = $data;
    }
    drupal_set_title('圈子成员');
    return theme('og_member', $row);
  }else{
     return og_login($og->nid,arg(2),$_REQUEST['destination']);
  }
}
function og_my_theme(){
  return array(
    'og_member' => array(
      'template' => 'og-member',
      'arguments' => array('row' => NULL),
      'path' => drupal_get_path('module', 'og'). '/modules/og_my'),
    'og_pic' => array(
      'template' => 'og-pic',
      'arguments' => array('row' => NULL),
      'path' => drupal_get_path('module', 'og'). '/modules/og_my'),
    'og_poll' => array(
      'template' => 'og-poll',
      'arguments' => array('row' => NULL),
      'path' => drupal_get_path('module', 'og'). '/modules/og_my'),
    'og_post' => array(
      'template' => 'og-post',
      'arguments' => array('row' => NULL),
      'path' => drupal_get_path('module', 'og'). '/modules/og_my'),
  );
}
Tags: