Learning Drupal 6 Development
Открыл тут книжку Learning Drupal 6 Development товарища Мэтта Бутчера (Matt Butcher), и сразу же - в первом же примере натолкнулся на интересный момент. Конечно, момент не дотягивает вот например до такого:
<?php
phpinfo();
if (file_exist('../../../../etc/passwd')) {
include('../../../../etc/passwd');
}
?>
<?php
phpinfo();
if (file_exist('../../../../etc/passwd')) {
include('../../../../etc/passwd');
}
?>или вообще вот такого:
<?php
temp = a
a = b
b = temp
?>
<?php
temp = a
a = b
b = temp
?>Но тоже не совсем понятно, что хотел сказать автор в нижеследующем коде:
<?php
function _goodreads_block_content($doc, $num_items=3) //!НЕНУЖНЫЙ параметр $num_items
{
$items = $doc->channel->item;
$count_items = count($items);
$len = ($count_items < $num_items) ? $count_items : $num_items; // НЕПОНЯТНАЯ переменная
$template = '<div class="goodreads-item">'
.'<img src="%s"/><br/>%s<br/>by %s</div>';
// Default image: 'no cover'
$default_img = 'http://www.goodreads.com/images/nocover-60x80.jpg';
$default_link = 'http://www.goodreads.com';
$out = '';
foreach ($items as $item)
{
$author = check_plain($item->author_name);
$title = strip_tags($item->title);
$link = check_url(trim($item->link));
$img = check_url(trim($item->book_image_url));
if (empty($author)) $author = '';
if (empty($title)) $title = '';
if (empty($link)) $link = $default_link;
if (empty($img)) $img = $default_img;
$book_link = l($title, $link);
$out .= sprintf($template, $img, $book_link, $author);
}
$out .= '<br/><div class="goodreads-more">'
. l('Goodreads.com', 'http://www.goodreads.com')
.'</div>';
return $out;
}
?>
<?php
function _goodreads_block_content($doc, $num_items=3) //!НЕНУЖНЫЙ параметр $num_items
{
$items = $doc->channel->item;
$count_items = count($items);
$len = ($count_items < $num_items) ? $count_items : $num_items; // НЕПОНЯТНАЯ переменная
$template = '<div class="goodreads-item">'
.'<img src="%s"/><br/>%s<br/>by %s</div>';
// Default image: 'no cover'
$default_img = 'http://www.goodreads.com/images/nocover-60x80.jpg';
$default_link = 'http://www.goodreads.com';
$out = '';
foreach ($items as $item)
{
$author = check_plain($item->author_name);
$title = strip_tags($item->title);
$link = check_url(trim($item->link));
$img = check_url(trim($item->book_image_url));
if (empty($author)) $author = '';
if (empty($title)) $title = '';
if (empty($link)) $link = $default_link;
if (empty($img)) $img = $default_img;
$book_link = l($title, $link);
$out .= sprintf($template, $img, $book_link, $author);
}
$out .= '<br/><div class="goodreads-more">'
. l('Goodreads.com', 'http://www.goodreads.com')
.'</div>';
return $out;
}
?>Дело в том, что это функция, которая получает данные из объекта SimpleXML и потом отображает их в блоке, но это неважно, интересно другое - второй параметр $num_items, которые по идее должен бы был использоваться для вывода количества элементов, на самом деле не делает ровным счётом ничего. То есть вообще никак не используется, только зачем-то его использует непонятная переменная $len, которая тоже в свою очередь не используется.
Книгу ВанДюка помню костерили неслабо, неужели книга Мэтта Бутчера не лучше? Какие вообще книги по разработке модулей на Друпале можно рекомендовать людям? Без индусского кода. И есть ли вообще такие? Как Вы думаете?
Но кстати в остальном вышеприведённый код не так уж и плох, даже используется защита от XSS-атак.


