2012-05-30 3 views
0

Это мой первый модуль. Я пытаюсь успешно установить мой модуль уже через неделю.Первый модуль Drupal - 500 Внутренняя ошибка сервера

Я прошел через каждую линию. Даже схема устанавливается и запись производится в системной таблице. Но все же после включения модуля он показывает 500 Internal Server Error, пока я не удалю запись из системной таблицы.

Пожалуйста, руководствоваться мной, что я делаю неправильно.

Примечание: 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; 
} 

ответ

0

Хм Понял :-) (после 8 часов)

функция sisinstitut e_access ($ op, $ node. $ Счет = NULL) {

имеет период вместо запятой после $ узла

+0

OMG, который был немного синтаксис ошибка :) Поздравляем с началом работы в разработке модуля. См. Http://drupal.org/node/158043 для получения руководства по исправлению wsod и 500 ошибок. –

Смежные вопросы