get_instance($id))) $instance = $module->get_instance('Home'); if ($instance) { $self = '%%' . $module->name . ':' . $instance->tag . '%%'; $header = $instance->get_line('name'); $content = $instance->get_line('text'); if ($instance->get_line('news') && ($module2 = Module::load('Snippet')) && ($instance2 = $module2->get_instance('news')) && strlen($news = $instance2->get_line('content'))) $news = "
\n" . "
\n" . $news . "
\n" . "
\n"; elseif (Convert::bool($instance->get_line('related'))) { $related = true; // determine search string $search = 'index.php?page=' . $instance->id . '"'; // collect searchable modules $modules = array(); $modules_set = $pmodule = null; $db->query('SELECT module_id,module_name,module_url ' . 'FROM module_table ' . 'WHERE module_searchable IS NOT NULL'); while ($db->more()) { $id = $db->get('module_id'); $name = $db->get('module_name'); // modules list $modules_set .= (strlen($modules_set) ? ',' : null) . $id; // array $modules[$id] = array('id'=>$id, 'name'=>$db->get('module_name'), 'url'=>$db->get('module_url')); } $db->close(); // collect all items $items = array(); $db->query('SELECT item_id,item_module,item_tag ' . 'FROM item_table'); while ($db->more()) $items[$db->get('item_module') . '_' . $db->get('item_tag')] = $db->get('item_id'); $db->close(); // collect searchable items $items_set = null; if (strlen($modules_set)) { $db->query('SELECT item_id ' . 'FROM item_table ' . 'WHERE item_searchable IS NOT NULL ' . 'AND item_type=' . TYPE_RICH . ' ' . 'AND item_module IN (' . $modules_set . ')'); while ($db->more()) $items_set .= (strlen($items_set) ? ',' : null) . $db->get('item_id'); $db->close(); } // gather results $related =<<Related Items EOD; $count = 0; $db->query('SELECT DISTINCT instance_id,instance_module,COUNT(instance_id) AS counter ' . 'FROM (instance_table,line_table) ' . 'WHERE instance_id=line_instance ' . 'AND instance_module IN (' . $modules_set . ') ' . 'AND line_item IN (' . $items_set . ') ' . 'AND line_value LIKE ' . DB::string('%' . $search . '%') . ' ' . 'GROUP BY instance_id ' . 'ORDER BY counter DESC'); while ($db->more()) { $id = $db->get('instance_id'); $module = $db->get('instance_module'); if (isset($modules[$module]) && isset($items[$module . '_name'])) { // get name $qid = $db->query('SELECT line_value ' . 'FROM line_table ' . 'WHERE line_instance=' . DB::int($id) . ' ' . 'AND line_item=' . DB::int($items[$module . '_name']), true); if ($row = $db->more($qid)) { $name = $db->get('line_value', $row); $related .= '

' . $modules[$module]['name'] . ': ' . $page->link($db->get('line_value', $row), $modules[$module]['url'] . $id) . "

\n"; $count++; } $db->close($qid); } } $db->close(); if (!$count) $related .= "

no related items

\n"; } } } // // interface // // page name $name = $instance ? $instance->get_line('name') : null; // editor access $edit = $page->is_admin() ? 'javascript:popup(\'instance=' . $instance->id . '&' . SID . '=' . session_id() . '\')' : null; // // html // // header $page->header(array('header'=>$header, 'edit'=>$edit, 'widget'=>strlen($news . $related) ? 3 : 4, 'self'=>$self, 'msg'=>Query::get('msg'), 'news'=>$news)); // content echo $content . $related; // footer echo $page->footer(); ?>