2009-06-15 5 views
1

플러그인을 만들고 있는데, 사용자가 개요 데이터를 클릭하고 거기에서 데이터를 표시 할 수 있도록 Subtable을 갖고 싶습니다. 내가 이삭을 할 수있었습니다 코드에 따라Piwik 플러그인

:

public function getCompanyList($idSite, $period, $date) 
{ 
    $dataTable = new Piwik_DataTable(); 

    $query = Piwik_Query("SELECT cl.id, cl.company_name name, sf.id sf_id FROM sitedb.company_lookup cl INNER JOIN sitedb.storefronts sf ON cl.id = sf.company_id"); 
    while ($row = $query->fetch()) { 
     $piwik_row = new Piwik_DataTable_Row; 
     $piwik_row->setSubTable($this->getProductsForCompany($idSite, $period, $date, $row['id'])); 
     $piwik_row->setColumns(array('id' => $row['id'], 'Company Name' => $row['name'])); 
     $dataTable->addRow($piwik_row); 

    } 
    return $dataTable; 
} 

public function getProductsForCompany($idSite, $period, $date, $company_id) 
{ 
    if (!defined('PIWIK_ENABLE_DISPATCH')) define('PIWIK_ENABLE_DISPATCH', false); 
    if (!defined('PIWIK_ENABLE_ERROR_HANDLER')) define('PIWIK_ENABLE_ERROR_HANDLER', false); 
    require_once PIWIK_INCLUDE_PATH . "/index.php"; 
    require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php"; 
    Piwik_FrontController::getInstance()->init(); 
    $request = new Piwik_API_Request(' 
      method=Actions.getActions 
      &idSite=' . $idSite . ' 
      &date=' . $date . ' 
      &period=' . $period . ' 
      &format=PHP 
      &filter_column=label 
      &filter_pattern=product.php 
      &filter_sort_column=nb_visits 
      &filter_sort_order=desc 
      &token_auth=anonymous 
      '); 
    $result = $request->process(); 

    // contains an array of visits to storefront.php 
    $result = unserialize($result); 

    $query = Piwik_Query("SELECT sp.product_id id, sp.name, sp.storefront_id sf_id, cl.company_name FROM sitedb.storefront_products sp INNER JOIN sitedb.storefronts sf ON sp.storefront_id = sf.id INNER JOIN sitedb.company_lookup cl ON sf.company_id = cl.id WHERE cl.id = {$company_id}"); 
    $dataTable = new Piwik_DataTable(); 

    while ($row = $query->fetch()) { 
     // piwik returns & escaped to & -- make sure that's what you use to search! 
     $this->array_search_in_level("/product.php?id=" . $row['id'] . "&sf_id=" . $row['sf_id'], $result, 'label', $storefront_array, 1); 

     if (is_array($storefront_array) && array_key_exists('nb_visits', $storefront_array)) { 
      $piwik_row = new Piwik_DataTable_Row; 
      $piwik_row->setColumns(array('id' => $row['id'], 'Product Name' => $row['name'], 'Page Views' => $storefront_array['nb_visits'])); 
      $dataTable->addRow($piwik_row); 
     } 
    } 
    return $dataTable; 
} 

그러나, 서브 테이블이 나타 없습니다. 내가 뭔가 잘못하고 있는거야?

답변