deleteColumn() public method

Deletes the given column.
public deleteColumn ( string $name ) : boolean
$name string The column name.
return boolean `true` on success, `false` if the column does not exist.
コード例 #1
0
ファイル: RowTest.php プロジェクト: cemo/piwik
 public function test_deleteColumn_shouldReturnAColumnValueThatIsNull()
 {
     $this->row->setColumn('label', null);
     $this->assertTrue($this->row->hasColumn('label'));
     $this->assertTrue($this->row->deleteColumn('label'));
     $this->assertFalse($this->row->hasColumn('label'));
 }
コード例 #2
0
ファイル: DataTable.php プロジェクト: piwik/piwik
 /**
  * Deletes several columns by name in every row.
  *
  * @param array $names List of column names to delete.
  * @param bool $deleteRecursiveInSubtables Whether to apply this change to all subtables or not.
  */
 public function deleteColumns($names, $deleteRecursiveInSubtables = false)
 {
     foreach ($this->rows as $row) {
         foreach ($names as $name) {
             $row->deleteColumn($name);
         }
         $subTable = $row->getSubtable();
         if ($subTable) {
             $subTable->deleteColumns($names, $deleteRecursiveInSubtables);
         }
     }
     if (!is_null($this->summaryRow)) {
         foreach ($names as $name) {
             $this->summaryRow->deleteColumn($name);
         }
     }
 }
コード例 #3
0
ファイル: DataTable.php プロジェクト: brienomatty/elmsln
 /**
  * Deletes several columns by name in every row.
  *
  * @param array $names List of column names to delete.
  * @param bool $deleteRecursiveInSubtables Whether to apply this change to all subtables or not.
  */
 public function deleteColumns($names, $deleteRecursiveInSubtables = false)
 {
     foreach ($this->getRows() as $row) {
         foreach ($names as $name) {
             $row->deleteColumn($name);
         }
         if (($idSubDataTable = $row->getIdSubDataTable()) !== null) {
             Manager::getInstance()->getTable($idSubDataTable)->deleteColumns($names, $deleteRecursiveInSubtables);
         }
     }
     if (!is_null($this->summaryRow)) {
         foreach ($names as $name) {
             $this->summaryRow->deleteColumn($name);
         }
     }
 }
コード例 #4
0
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     if (!$this->getParams()->isSingleSite()) {
         // we only compute unique visitors for a single site
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') !== false) {
         if (SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
             $uniqueVisitors = (double) $this->computeNbUniqVisitors();
             $row->setColumn('nb_uniq_visitors', $uniqueVisitors);
         } else {
             $row->deleteColumn('nb_uniq_visitors');
         }
     }
 }
コード例 #5
0
ファイル: ArchiveProcessor.php プロジェクト: diosmosis/piwik
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     // skip unique visitors metrics calculation if calculating for multiple sites is disabled
     if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) {
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') === false && $row->getColumn('nb_users') === false) {
         return;
     }
     if (!SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
         $row->deleteColumn('nb_uniq_visitors');
         $row->deleteColumn('nb_users');
         return;
     }
     $metrics = array(Metrics::INDEX_NB_USERS);
     if ($this->getParams()->isSingleSite()) {
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_VISITORS;
     } else {
         if (!SettingsPiwik::isSameFingerprintAcrossWebsites()) {
             throw new Exception("Processing unique visitors across websites is enabled for this instance,\n                            but to process this metric you must first set enable_fingerprinting_across_websites=1\n                            in the config file, under the [Tracker] section.");
         }
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_FINGERPRINTS;
     }
     $metrics[] = $uniqueVisitorsMetric;
     $uniques = $this->computeNbUniques($metrics);
     // see edge case as described in https://github.com/piwik/piwik/issues/9357 where uniq_visitors might be higher
     // than visits because we archive / process it after nb_visits. Between archiving nb_visits and nb_uniq_visitors
     // there could have been a new visit leading to a higher nb_unique_visitors than nb_visits which is not possible
     // by definition. In this case we simply use the visits metric instead of unique visitors metric.
     $visits = $row->getColumn('nb_visits');
     if ($visits !== false && $uniques[$uniqueVisitorsMetric] !== false) {
         $uniques[$uniqueVisitorsMetric] = min($uniques[$uniqueVisitorsMetric], $visits);
     }
     $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]);
     $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]);
 }
コード例 #6
0
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     // skip unique visitors metrics calculation if calculating for multiple sites is disabled
     if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) {
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') === false && $row->getColumn('nb_users') === false) {
         return;
     }
     if (!SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
         $row->deleteColumn('nb_uniq_visitors');
         $row->deleteColumn('nb_users');
         return;
     }
     $metrics = array(Metrics::INDEX_NB_USERS);
     if ($this->getParams()->isSingleSite()) {
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_VISITORS;
     } else {
         if (!SettingsPiwik::isSameFingerprintAcrossWebsites()) {
             throw new Exception("Processing unique visitors across websites is enabled for this instance,\n                            but to process this metric you must first set enable_fingerprinting_across_websites=1\n                            in the config file, under the [Tracker] section.");
         }
         $uniqueVisitorsMetric = Metrics::INDEX_NB_UNIQ_FINGERPRINTS;
     }
     $metrics[] = $uniqueVisitorsMetric;
     $uniques = $this->computeNbUniques($metrics);
     $row->setColumn('nb_uniq_visitors', $uniques[$uniqueVisitorsMetric]);
     $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]);
 }
コード例 #7
0
 protected function enrichWithUniqueVisitorsMetric(Row $row)
 {
     // skip unique visitors metrics calculation if calculating for multiple sites is disabled
     if (!$this->getParams()->isSingleSite() && $this->skipUniqueVisitorsCalculationForMultipleSites) {
         return;
     }
     if ($row->getColumn('nb_uniq_visitors') !== false || $row->getColumn('nb_users') !== false) {
         if (SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) {
             $metrics = array(Metrics::INDEX_NB_UNIQ_VISITORS, Metrics::INDEX_NB_USERS);
             $uniques = $this->computeNbUniques($metrics);
             $row->setColumn('nb_uniq_visitors', $uniques[Metrics::INDEX_NB_UNIQ_VISITORS]);
             $row->setColumn('nb_users', $uniques[Metrics::INDEX_NB_USERS]);
         } else {
             $row->deleteColumn('nb_uniq_visitors');
             $row->deleteColumn('nb_users');
         }
     }
 }