public function actionBooks($id) { $user = $this->loadUser($id); $orderOptions = array(1 => array("t.last_tr desc NULLS LAST", "По дате последнего перевода от {$user->login}"), 2 => array("t.n_trs desc NULLS LAST", "По количеству версий от {$user->login}"), 3 => array("CASE WHEN book.n_verses <> 0 THEN book.d_vars::float / book.n_verses::float ELSE null END DESC NULLS LAST", "По готовности перевода"), 4 => array("t.since DESC", "По дате вступления в перевод")); $statusOptions = array(0 => array("", "все", "не участвует ни в одном переводе"), 1 => array("t.status = 2", "там, где {$user->login} – модератор", "не модерирует ни один перевод"), 2 => array("book.owner_id = {$user->id}", "там, где {$user->login} – создатель", "не создал" . $user->sexy() . " ни одного проекта перевода")); $order = (int) $_GET["order"]; if (!isset($orderOptions[$order])) { $order = 1; } $status = (int) $_GET["status"]; if (!isset($statusOptions[$status])) { $status = 0; } $f = new GroupMember(); $f->user($user->id)->with("book"); $c = new CDbCriteria(); if ($order) { $c->order = $orderOptions[$order][0]; } if ($status) { $c->addCondition($statusOptions[$status][0]); } $groups_dp = new CActiveDataProvider($f, array("criteria" => $c, "pagination" => array("pageSize" => 30))); // $groups_dp->totalItemCount = Yii::app()->db->createCommand("SELECT COUNT(*) FROM groups WHERE user_id = :user_id")->queryScalar(array(":user_id" => $user->id)); $this->side_view = array("profile_side" => array("user" => $user, "userinfo" => $user->userinfo), "books_side" => array("orderOptions" => $orderOptions, "order" => $order, "statusOptions" => $statusOptions, "status" => $status)); $this->render("books", array("user" => $user, "groups_dp" => $groups_dp, "order" => $order, "statusOptions" => $statusOptions, "status" => $status)); }