Drupal: поле PHP для допустимых значений - PullRequest
0 голосов
/ 22 декабря 2009

Я работаю в Drupal 6 с CCK. Под каждым текстовым полем есть раздел PHP, где вы можете запустить некоторый код PHP, чтобы получить допустимые значения. У меня проблемы с использованием оператора "if" для изменения допустимых значений в зависимости от типа пользователя

Итак, для начала я делаю запрос, чтобы определить тип пользователя текущего пользователя. -1 - пользователь по умолчанию, который является сотрудниками, а идентификатор типа пользователя "1" - для пользователей сайта. Я хочу, чтобы пользователь сайта ограничивался только разрешенными значениями, которые он должен видеть, и в то же время позволял сотрудникам редактировать это значение на экране редактирования узла со всеми вариантами выбора.

Первая часть оператора if работает. Тем не менее, «остальное» часть не работает. Это поле настроено для работы со структурами управления?

global $user;
$sql1 = "SELECT user_type_id FROM user_types_user WHERE uid = ".$user->uid." ";
$res1 = db_query($sql1);
if($res1 == '1'){
$sql = "SELECT account FROM users WHERE uid = ".$user->uid." ";
$res = db_query($sql);
while($row = db_fetch_array($res)){
$rows[] = $row['account'];
}
$rows = drupal_map_assoc($rows);
return $rows;
}
else {
$sql2 = "SELECT title FROM node WHERE type = 'accounts' ";
$res2 = db_query($sql2);
while($row2 = db_fetch_array($res2)){
$rows2[] = $row2['title'];
}
$rows2 = drupal_map_assoc($rows2);
return $rows2;
}

Варианты: type = account в узлах, однако при создании пользователя один из вариантов выбирается и сохраняется в пользовательской таблице в столбце, который я создал с именем "account"

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

Если под «остальной частью не работает» вы имеете в виду, что она никогда не выполняется, даже если user_type_id не равен 1, это может быть пропущенный db_fetch_array() на $res1. Вы сравниваете результат объекта непосредственно к строке '1', а не к значению поля.

0 голосов
/ 22 декабря 2009

Вот рабочий код для этого. Возможно, есть более быстрый / короткий способ сделать это.

global $user;
$sql1 = "SELECT user_type_id FROM user_types_user WHERE uid = ".$user->uid." ";
$res1 = db_query($sql1);
while($type = db_fetch_array($res1)){
$types[] = $type['user_type_id'];
}
$resType = $types[0];
if($resType == "1"){
$sql = "SELECT account FROM users WHERE uid = ".$user->uid." ";
$res = db_query($sql);
while($row = db_fetch_array($res)){
$rows[] = $row['account'];
}
$rows = drupal_map_assoc($rows);
return $rows;
}
else {
$sql2 = "SELECT title FROM node WHERE type = 'accounts' ";
$res = db_query($sql2);
while($row2 = db_fetch_array($res)){
$rows2[] = $row2['title'];
}
return $rows2;
}
...