Drupal第一个模块 - 500内部服务器错误

时间:2012-05-30 21:38:15

标签: drupal drupal-6 drupal-modules

这是我的第一个模块。我一直试图成功安装我的模块一周。

我已经完成了每一行。甚至正在安装模式,并在系统表中进行输入。但仍然在启用模块之后它显示500内部服务器错误,直到我从系统表中删除条目。

请指导我做错了什么。

注意:已在drupal数据库中创建了sisattribute表

我的.install文件

<?php

/**
* @file
*/

function sisinstitute_install() {
 drupal_install_schema('sisinstitute');
 variable_set('node_options_sisinstitute', array('status'));

 $attributes = array();

 $attributes['Country'] = array(
  'US' => 'United States of America',
  'AD' => 'Andorra',
  'AE' => 'United Arab Emirates',
  'AF' => 'Afghanistan',
 );

$s = "INSERT INTO {sisattribute} (domain, akey, avalue, weight) VALUES ('%s', '%s', '%s', %d)";
$prevdomain = '';
$weight = 0;
foreach ($attributes as $domain => $attribute) {
if ($domain != $prevdomain) $weight=0;
foreach ($attribute as $key => $value) {
  db_query($s, $domain, $key, $value, $weight);
  $weight++;
}
$prevdomain = $domain;
}
}

function sisinstitute_disable() {
drupal_set_message(t('Please note that they will now have reduced functionality, and will not be protected by previous access controls.'), 'warning');
}

function sisinstitute_uninstall() {
 drupal_uninstall_schema('sisinstitute');

db_query($s = "DELETE FROM {sisattribute} WHERE domain IN ('Country')");
}

function sisinstitute_schema() {
  $schema['sisinstitute'] = array(
   'fields'        => array(
    'vid'         => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
    'nid'         => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
    'country'     => array('type' => 'varchar', 'length' => 100),
    'www'         => array('type' => 'varchar', 'length' => 100),
    'phone'       => array('type' => 'varchar', 'length' => 100),
    'email'       => array('type' => 'varchar', 'length' => 50),
    'provstate'   => array('type' => 'varchar', 'length' => 50),
    'zip'         => array('type' => 'varchar', 'length' => 10),
    'city'        => array('type' => 'varchar', 'length' => 100),
    'address'     => array('type' => 'varchar', 'length' => 100),
    'orglanguage' => array('type' => 'varchar', 'length' => 100),
    'isactive'    => array('type' => 'int', 'default' => 1),

  ),
  'primary key' => array('vid'),
  'indexes' => array(
  'nid'     => array('nid')
  ),
  );

  return $schema; 
  }

我的.module文件:

<?php
// $Id$

/**
*@File
*Module for Institution support in SIS package
*/


/**
*hook_help()
*/


/**
*hook_menu()
*/




/**
*hook_perm()
*/
function sisinstitute_perm() {
  return array('access institute', 'create institute', 'edit institute', 'delete institute', 'view belonged institute', 'view all institutes');

}






/**
*hook_access()
*/
function sisinstitute_access($op, $node. $account=NULL) {
 if (empty($account)) {
  global $user;
  $account = $user;
 }

 if (is_numeric($node)) $node = node_load($node);

 if (!isset($account->sisinstitute_nid) && module_exists('sisstudent')) {
  _sisstudent_load($account);
 }

 if (!isset($account->sisinstitute_nid) && module_exists('sisstaff')) {
  _sisstaff_load($account);
 }

 switch($op) {
  case 'create': return user_access('create institute', $account);
  case 'update': return user_access('edit institute', $account);
  case 'delete': return user_access('delete institute', $account);
  case 'view'  : {
                  if (user_access('view all institutes', $account))
                    return TRUE;
                  elseif (user_access('view belonged institute', $account) && $account->sisinstitute_nid == $node->nid)
                    return TRUE;
                  else return FALSE;
                 }
 }
}




/**
*hook_node_info()
*/

function sisinstitute_node_info() {
 return array(
  'sisinstitute' => array(
  'name' => t('Institute'),
  'module' => 'sisinstitute',
  'description' => t("Institute for SIS"),
  'title_label' => t("Name"),
  'body_label' => t("Note"),
)
);

}



/**
*hook_form()
*/
function sisinstitute_form(&$node) {
 $type = node_get_types('type', $node);

 //$form['#attributes']['class'] = 'sismcomponent_node_form';

 $form['title'] = array(
  '#type' => 'textfield',
  '#title' => check_plain($type->title_label),
  '#required' => TRUE,
  '#default_value' => $node->title,
  // '#weight' => module_exists('content') ? content_extra_field_weight($node->type, 'title') : -18,
  );


$form['isactive'] = array(
 '#type' => 'checkbox',
 '#title' => t('Active'),
 '#default_value' => $node->isactive,
);

return $form;
}

1 个答案:

答案 0 :(得分:0)

嗯知道了: - )(8小时后)

function sisinstitute_access($ op,$ node。$ account = NULL){

在$ node

之后,

有一个句点而不是逗号