function display($tpl = null)
 {
     global $option;
     $app =& JFactory::getApplication();
     $cwConfig =& CrosswordsHelper::getConfig();
     $user =& JFactory::getUser();
     $menu =& JSite::getMenu();
     $document =& JFactory::getDocument();
     $mnuitems = $menu->getItems('link', 'index.php?option=' . $option . '&view=crosswords');
     $itemid = isset($mnuitems[0]->id) ? $mnuitems[0]->id : JRequest::getVar('itemid');
     $itemid = $itemid ? '&Itemid=' . $itemid : 0;
     //$document->addScript('https://getfirebug.com/firebug-lite.js');
     JPluginHelper::importPlugin('corejoomla');
     $dispatcher =& JDispatcher::getInstance();
     $dispatcher->trigger('onCallIncludeJQuery', array(array("jquery", "jqueryui", "jqueryform")));
     $model =& $this->getModel("crosswords");
     switch ($this->action) {
         case "crossword_list":
             $result =& $model->get_crosswords_list();
             $categories =& $model->get_categories();
             $this->assignRef("crosswords", $result->crosswords);
             $this->assignRef("pagination", $result->pagination);
             $this->assignRef("categories", $categories);
             break;
         case "user_crosswords":
             $result =& $model->get_crosswords_list($user->id);
             $categories =& $model->get_categories();
             $this->assignRef("crosswords", $result->crosswords);
             $this->assignRef("pagination", $result->pagination);
             $this->assignRef("categories", $categories);
             $this->action = "crossword_list";
             break;
         case "create_new_crossword":
             $crossword =& $model->create_crossword();
             if ($model->getError()) {
                 JFactory::getApplication()->enqueueMessage($model->getError());
             }
             $this->assignRef("crossword", $crossword);
             $this->action = "crossword_details";
             break;
         case "crossword_details":
             $cid = JRequest::getInt("id");
             $crossword =& $model->get_crossword($cid);
             $this->assignRef("crossword", $crossword);
             break;
     }
     $this->assignRef("layoutPath", $this->action);
     parent::display($tpl);
 }
<?php

defined('_JEXEC') or die('Restricted access');
global $option;
$cwConfig =& CrosswordsHelper::getConfig();
$user =& JFactory::getUser();
$menu =& JSite::getMenu();
$mnuitem = $menu->getItems('link', 'index.php?option=' . $option . '&view=crosswords', true);
$itemid = isset($mnuitem) ? '&Itemid=' . $mnuitem->id : '';
$citemid = $this->catid ? '&catid=' . $this->catid : '';
?>
<script type="text/javascript">
<!--
jQuery(document).ready(function($){
	CrossWordFactory.init_details_page();
});
//-->
</script>
<div id="crossword-details">
	<?php 
if ($this->crossword) {
    ?>
	<div class="toolbar">
		<ul class="submenu">
			<li><a href="<?php 
    echo JRoute::_('index.php?option=' . $option . '&view=crosswords&task=list' . $itemid);
    ?>
" class="active icon-home"><?php 
    echo JText::_('LBL_HOME');
    ?>
</a></li>
 function &get_crossword($cid, $details = true)
 {
     $db =& JFactory::getDBO();
     $user =& JFactory::getUser();
     $cwConfig =& CrosswordsHelper::getConfig();
     $query = "select a.id, a.catid, a.title, a.alias, a.created_by, a.created, a.questions, a.rows, a.columns," . " u." . $cwConfig[USER_NAME] . ", c.title as category" . " from " . TABLE_CROSSWORDS . " a" . " left join " . TABLE_CROSSWORDS_CATEGORIES . " c on a.catid=c.id" . " left join #__users u on a.created_by=u.id" . " where a.id=" . $cid;
     $db->setQuery($query);
     $crossword = $db->loadObject();
     if (!empty($crossword) && $details) {
         $crossword->response_id = 0;
         $crossword->solved = 0;
         if (!$user->guest) {
             $query = "select id, solved from " . TABLE_CROSSWORDS_RESPONSES . " where cid=" . $cid . " and created_by=" . $user->id;
             $db->setQuery($query);
             $result = $db->loadObject();
             $crossword->solved = $result->solved ? $result->solved : 0;
             $crossword->response_id = $result->id ? $result->id : 0;
         }
         // Get questions
         $query = "select q.id, k.keyword, r.answer, k.question, q.row, q.column, q.axis, q.position" . " from " . TABLE_CROSSWORDS_QUESTIONS . " q" . " left join " . TABLE_CROSSWORDS_KEYWORDS . " k on q.keyid=k.id" . " left join " . TABLE_CROSSWORDS_RESPONSE_DETAILS . " r on q.id=r.question_id and r.response_id=" . $crossword->response_id . " where q.cid=" . $cid;
         $db->setQuery($query);
         $questions = $db->loadObjectList();
         if (empty($questions)) {
             return false;
         }
         // Form grid cells
         $cells = array();
         for ($x = 0; $x < $crossword->rows; $x++) {
             for ($y = 0; $y < $crossword->columns; $y++) {
                 $cells[$x][$y]->letter = null;
             }
         }
         foreach ($questions as $question) {
             if ($question->axis == 1) {
                 $cells[$question->row][$question->column]->number = $question->position;
                 $cells[$question->row][$question->column]->axis = 2;
                 for ($y = 0; $y < strlen($question->keyword); $y++) {
                     $cellnum = $question->column + $y;
                     $cells[$question->row][$cellnum]->letter = $question->answer ? substr($question->answer, $y, 1) : " ";
                     $cells[$question->row][$cellnum]->class = $cells[$question->row][$cellnum]->class ? $cells[$question->row][$cellnum]->class . " letters-1-" . $question->position : "letters-1-" . $question->position;
                 }
             } else {
                 $cells[$question->row][$question->column]->number = $question->position;
                 $cells[$question->row][$question->column]->axis = 1;
                 for ($x = 0; $x < strlen($question->keyword); $x++) {
                     $cellnum = $question->row + $x;
                     $cells[$cellnum][$question->column]->letter = $question->answer ? substr($question->answer, $x, 1) : " ";
                     $cells[$cellnum][$question->column]->class = $cells[$cellnum][$question->column]->class ? $cells[$cellnum][$question->column]->class . " letters-2-" . $question->position : "letters-2-" . $question->position;
                 }
             }
         }
         // Get users who solved this
         $query = "select r.created_by, u." . $cwConfig[USER_NAME] . " as username, r.created" . " from " . TABLE_CROSSWORDS_RESPONSES . " r " . " left join #__users u on r.created_by = u.id " . " where r.cid=" . $cid . " and r.solved=1" . " order by r.created_by desc";
         $db->setQuery($query, 0, 10);
         $users = $db->loadObjectList();
         $query = "select count(*) from " . TABLE_CROSSWORDS_RESPONSES . " where cid=" . $cid . " and solved=1";
         $db->setQuery($query);
         $user_count = (int) $db->loadResult();
         $crossword->questions = $questions;
         $crossword->cells = $cells;
         $crossword->users_solved = $users;
         $crossword->user_count = $user_count - 15;
     }
     return $crossword;
 }