Создание подтаблиц в Piwik - PullRequest
1 голос
/ 07 мая 2010

Я новичок в piwik. Пожалуйста, помогите мне в моем вопросе.

Проблема: мне нужно создать 4 уровня вложенных таблиц. В настоящее время я могу создавать до 2-го уровня, я имею в виду таблицу с одной вложенной таблицей на строку. В основном, если я нажимаю на строку таблицы, я получаю субтаблицу. Если я щелкаю на строке субтаблицы снова, она должна показать внутреннюю субтаблицу. Мне нужно создать Table-> subtable-> subtable-> subtable.

Мой код:

function getpageViewsLevel1($idSite, $date, $period)
        {

         $query = "select * from....";

                $result = Piwik_FetchAll($query, array($idSite, $dateStart, $dateEnd));

                // convert this array to a DataTable object
                $dataTable = new Piwik_DataTable();

                //Add subtable to each result
                foreach ($result as $arr){
                        $piwik_row = new Piwik_DataTable_Row;
                        $piwik_row->setColumns($arr);
                        $subDataTable = new Piwik_DataTable();
                        $piwik_row->addSubTable($subDataTable);
                        $dataTable->addRow($piwik_row);
                }
                return $dataTable;
        }

function getpageViewsLevel2($idSite, $date, $period, $idSubtable)
        {

                // Find selected parent row and retrieve data

                $dataTable_old = $this->getpageViewsLevel1($idSite, $date, $period);
                $row_old = new Piwik_DataTable_Row;
                $row_old=$dataTable_old->getRowFromIdSubDataTable($idSubtable+1);

                $tmp=$row_old->getColumns();
                //Using $actionName in DB Query
                $actionName=$tmp['pageTitle'].'%';

                //db query
                $query = "select * ....";

                $result = Piwik_FetchAll($query, array($idSite, $dateStart, $dateEnd, $actionName));

                // convert this array to a DataTable object
                //$dataTable = new Piwik_DataTable();
                foreach ($result as $arr){
                        $piwik_row = new Piwik_DataTable_Row;
                        $piwik_row->setColumns($arr);
                    $subDataTable = new Piwik_DataTable();
                        $piwik_row->addSubTable($subDataTable);
                        $dataTable->addRow($piwik_row);
                }
                return $dataTable;
        }

Пока все работает нормально. На 3-м уровне я не могу применить ту же логику, что и у меня нет идентификатора таблицы уровня 2ng.

function getpageViewsLevel3($idSite, $date, $period, $idSubtable)
        {

                // Find selected parent row and retrieve data

                $dataTable_old = $this->getpageViewsLevel2($idSite, $date, $period, ___???????????????);

Пожалуйста, помогите мне, как я могу решить эту проблему. Пожалуйста, дайте мне знать, есть ли другое решение для этого. Хотя, если я пропущу какое-то число, например «1», для проверки,

$dataTable_old = $this->getpageViewsLevel2($idSite, $date, $period, 1);----->this is not working.

Мне нужно использовать информацию родительской строки в моем запросе к БД.

Заранее спасибо за помощь.

...