/** * Append a row to the table * * @param array|Zend_Text_Table_Row $row The row to append to the table * @throws Zend_Text_Table_Exception When $row is neither an array nor Zend_Zext_Table_Row * @throws Zend_Text_Table_Exception When a row contains too many columns * @return Zend_Text_Table */ public function appendRow($row) { if (!is_array($row) && !$row instanceof Zend_Text_Table_Row) { require_once 'Zend/Text/Table/Exception.php'; throw new Zend_Text_Table_Exception('$row must be an array or instance of Zend_Text_Table_Row'); } if (is_array($row)) { if (count($row) > count($this->_columnWidths)) { require_once 'Zend/Text/Table/Exception.php'; throw new Zend_Text_Table_Exception('Row contains too many columns'); } require_once 'Zend/Text/Table/Row.php'; require_once 'Zend/Text/Table/Column.php'; $data = $row; $row = new Zend_Text_Table_Row(); $colNum = 0; foreach ($data as $columnData) { if (isset($this->_defaultColumnAligns[$colNum])) { $align = $this->_defaultColumnAligns[$colNum]; } else { $align = null; } $row->appendColumn(new Zend_Text_Table_Column($columnData, $align)); $colNum++; } } $this->_rows[] = $row; return $this; }
public function logprofiler($action) { $suiteLogPath = Mage::getBaseDir('var') . DS . 'log' . DS . 'SagePaySuite'; $profilerPath = $suiteLogPath . DS . 'PROFILER'; if (!is_dir($suiteLogPath)) { mkdir($suiteLogPath, 0755); } if (!is_dir($profilerPath)) { mkdir($profilerPath, 0755); } $timers = Varien_Profiler::getTimers(); $request = $action->getRequest(); $prefix = $request->getParam('vtxcode', $request->getParam('VPSTxId', null)); $prefix = $prefix ? $prefix . '_' : ''; $longest = 0; $rows = array(); foreach ($timers as $name => $timer) { $sum = Varien_Profiler::fetch($name, 'sum'); $count = Varien_Profiler::fetch($name, 'count'); $realmem = Varien_Profiler::fetch($name, 'realmem'); $emalloc = Varien_Profiler::fetch($name, 'emalloc'); if ($sum < 0.001 && $count < 10 && $emalloc < 10000) { continue; } $rows[] = array((string) $name, (string) number_format($sum, 4), (string) $count, (string) number_format($emalloc), (string) number_format($realmem)); $thislong = strlen($name); if ($thislong > $longest) { $longest = $thislong; } } //Create table $table = new Zend_Text_Table(array('columnWidths' => array($longest, 10, 6, 12, 12), 'decorator' => 'ascii')); //Memory $preheader = new Zend_Text_Table_Row(); $real = memory_get_usage(true); $emalloc = memory_get_usage(); $preheader->appendColumn(new Zend_Text_Table_Column('real Memory usage: ' . $real . ' ' . ceil($real / 1048576) . 'MB', 'center', 1)); $preheader->appendColumn(new Zend_Text_Table_Column('emalloc Memory usage: ' . $emalloc . ' ' . ceil($emalloc / 1048576) . 'MB', 'center', 4)); $table->appendRow($preheader); //Append Header $header = new Zend_Text_Table_Row(); $header->appendColumn(new Zend_Text_Table_Column('Code Profiler', 'center')); $header->appendColumn(new Zend_Text_Table_Column('Time', 'center')); $header->appendColumn(new Zend_Text_Table_Column('Cnt', 'center')); $header->appendColumn(new Zend_Text_Table_Column('Emalloc', 'center')); $header->appendColumn(new Zend_Text_Table_Column('RealMem', 'center')); $table->appendRow($header); foreach ($rows as $row) { $table->appendRow($row); } //SQL profile $dbprofile = print_r(Varien_Profiler::getSqlProfiler(Mage::getSingleton('core/resource')->getConnection('core_write')), TRUE); $dbprofile = substr($dbprofile, 0, -4); $dbprofile = str_replace('<br>', "\n", $dbprofile); $preheaderlabel = new Zend_Text_Table_Row(); $preheaderlabel->appendColumn(new Zend_Text_Table_Column('DATABASE', 'center', 5)); $table->appendRow($preheaderlabel); $preheader = new Zend_Text_Table_Row(); $preheader->appendColumn(new Zend_Text_Table_Column($dbprofile, 'left', 5)); $table->appendRow($preheader); //Request $rqlabel = new Zend_Text_Table_Row(); $rqlabel->appendColumn(new Zend_Text_Table_Column('REQUEST', 'center', 5)); $table->appendRow($rqlabel); $inforqp = new Zend_Text_Table_Row(); $inforqp->appendColumn(new Zend_Text_Table_Column($this->_filterRequest($request), 'left', 5)); $table->appendRow($inforqp); $date = Mage::getModel('core/date')->date('Y-m-d\\.H-i-s'); $file = new SplFileObject($profilerPath . DS . $prefix . $date . '_' . $action->getFullActionName() . '.txt', 'w'); $file->fwrite($table); }
public function testTableMagicToString() { $table = new Zend_Text_Table(array('columnWidths' => array(10))); $row = new Zend_Text_Table_Row(); $row->appendColumn(new Zend_Text_Table_Column('foobar')); $table->appendRow($row); $this->assertEquals((string) $table, "┌──────────┐\n│foobar │\n└──────────┘\n"); }
protected function _renderInfoTable() { $table = new Zend_Text_Table(array('columnWidths' => array(15, 15, 13, 15, 20, 18, 20, 13))); $headerRow = array('Parent Id', 'Children Ids', '[C] Grouped Simple Links', '[X] Super Links', '[X] Super Attribute', '[X] Custom Options', '[X] Attribute Values', '[C] Positions'); $linesCounter = 0; foreach ($this->_processedProducts as $data) { if (0 == $linesCounter % 20) { //Append Header on 0 and every 20 lines $table->appendRow($headerRow); } $row = new Zend_Text_Table_Row(); foreach ($data as $value) { $value = is_array($value) ? implode(',', $value) : (string) $value; $row->appendColumn(new Zend_Text_Table_Column($value)); } $table->appendRow($row); $linesCounter++; } echo $table; }