/** * Returt Top 5 Authors by Period and category * * @param Period $period * @param int $category_id * @return Doctrine_Collection */ public function getTopAuthors(Period $period = null, $iCategoryId = 0) { if ($iCategoryId == 0) { $q = UserTable::addPUserQuery(); $q = UserTable::addActiveQuery($q); $q->andWhere($q->getRootAlias() . '.sells > ?', 0)->orderBy($q->getRootAlias() . '.sells DESC'); } else { $q = Doctrine_Query::create()->select('u.*, sum(c.purchase_cnt) as sells')->from('User u')->innerJoin('u.Content c')->groupBy('c.id_user')->orderBy('u.sells')->where('c.id_category=?', $iCategoryId)->andWhere('sells > ?', 0); $q = UserTable::addPUserQuery($q); $q = UserTable::addActiveQuery($q); } $q->limit(5); return $q->execute(); }
public static function countWeights(Period $period) { // общая сумма продаж $tSum = BalanceSystemTable::getInstance()->findOneByIdPeriod($period->getId())->getToPayPUsers(); $q = UserTable::addPUserQuery()->execute(); foreach ($q as $user) { if (($bu = BalanceUserTable::getByUserIdAndPeriodId($user->getId(), $period->getId())) !== false) { $uWeight = $bu->getPayable() * 100 / $tSum; $user->setWeight((double) $uWeight); $user->save(); } } }