简体   繁体   中英

Drupal first module — 500 Internal Server Error

This is my first module. I have been trying to successfully install my module since a week now.

I have gone through every line. Even the schema is being installed and entry is made at system table. But still after enabling the module It shows 500 Internal Server Error until I delete the entry from system table.

Please guide me what I am doing wrong.

Note: sisattribute table is already created in drupal database

My .install file

<?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; 
  }

And my .module file:

<?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;
}

Hmm Got it:-)(after 8 hours)

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

has a period instead of a comma after $node

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM