/** * Get published article list of a submitter * * @param int|null $submitter * @param int|null $page * @param int|null $limit * @return array */ public function getListBySubmitter($submitter = null, $page = null, $limit = null) { if (empty($submitter)) { //$user = Pi::service('user')->getUser(); $submitter = Pi::user()->getId(); } if (!is_numeric($submitter)) { return array(); } if (!empty($limit)) { $page = $page ?: 1; } $order = 'time_publish DESC'; $where = array('uid' => $submitter); if (!empty($page) and empty($limit)) { $offset = ((int) $page - 1) * (int) $limit; } // Get article result set $module = $this->getModule(); $resultSet = Pi::model('article', $module)->getSearchRows($where, $limit, isset($offset) ? $offset : null, Article::getDefaultColumns(), $order); if (empty($resultSet)) { return array(); } // Get article ID $articleIds = array(); foreach ($resultSet as $set) { $articleIds[] = $set['id']; } // Get stats data $staticSet = Pi::model('stats', $module)->getList(array('article' => $articleIds)); foreach ($resultSet as &$row) { $stats = isset($staticSet[$row['id']]) ? $staticSet[$row['id']] : array(); unset($stats['article']); unset($stats['id']); $row = array_merge($row, $stats); } return $resultSet; }