public function createGrid() { $ds = new Am_Query_User(); $datetime = $this->getDi()->sqlDate; $ds->addField("concat(u.name_f, ' ', u.name_l)", 'name')->addField('(SELECT COUNT(p.invoice_payment_id) FROM ?_invoice_payment p WHERE p.user_id = u.user_id)', 'payments_count')->addField('ROUND(IFNULL((SELECT SUM(p.amount/p.base_currency_multi) FROM ?_invoice_payment p WHERE p.user_id = u.user_id),0)-' . 'IFNULL((SELECT SUM(r.amount/r.base_currency_multi) FROM ?_invoice_refund r WHERE u.user_id=r.user_id),0), 2)', 'payments_sum')->addField("(SELECT MAX(expire_date) FROM ?_access ac WHERE ac.user_id = u.user_id)", 'expire')->addField("(SELECT GROUP_CONCAT(title SEPARATOR ', ') FROM ?_access ac\n LEFT JOIN ?_product p USING (product_id)\n WHERE ac.user_id = u.user_id AND ac.begin_date<='{$datetime}' AND ac.expire_date>='{$datetime}')", 'products'); $ds->setOrder("login"); $grid = new Am_Grid_Editable('_u', ___("Browse Users"), $ds, $this->_request, $this->view); $grid->setRecordTitle(array($this, 'getRecordTitle')); $grid->addField(new Am_Grid_Field('login', ___('Username'), true))->setRenderFunction(array($this, 'renderLogin')); $grid->addField(new Am_Grid_Field('name', ___('Name'), true)); $grid->addField(new Am_Grid_Field('email', ___('E-Mail Address'), true))->setRenderFunction(array($this, 'renderEmail')); $grid->addField(new Am_Grid_Field('payments_sum', ___('Payments'), true, null, array($this, 'renderPayments'))); $grid->addField('status', ___('Status'), true)->setRenderFunction(array($this, 'renderStatus')); $grid->actionAdd($this->createActionExport()); $grid->actionGet('edit')->setTarget('_top')->showFormAfterSave(true); $grid->actionGet('insert')->setTarget('_top')->showFormAfterSave(true); $grid->setForm(array($this, 'createForm')); $grid->addCallback(Am_Grid_Editable::CB_BEFORE_SAVE, array($this, 'beforeSave')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_SAVE, array($this, 'afterSave')); $grid->addCallback(Am_Grid_Editable::CB_VALUES_TO_FORM, array($this, 'valuesToForm')); $grid->addCallback(Am_Grid_Editable::CB_RENDER_STATIC, array($this, 'renderStatic')); $grid->addCallback(Am_Grid_ReadOnly::CB_TR_ATTRIBS, array($this, 'getTrAttribs')); $grid->actionAdd($this->createActionCustomize()); $grid->actionAdd(new Am_Grid_Action_Group_Callback('lock', ___("Lock"), array($this, 'lockUser'))); $grid->actionAdd(new Am_Grid_Action_Group_Callback('unlock', ___("Unlock"), array($this, 'unlockUser'))); $grid->actionAdd(new Am_Grid_Action_Group_Callback('approve', ___("Approve"), array($this, 'approveUser'))); $grid->actionAdd(new Am_Grid_Action_Group_EmailUsers()); $grid->actionAdd(new Am_Grid_Action_Group_MassSubscribe()); $grid->actionAdd(new Am_Grid_Action_Group_PasswordConfirmedDelete()); $grid->actionDelete('delete'); $grid->actionAdd(new Am_Grid_Action_LoginAs('login', ___('Login as User'), '__ROOT__/admin-users/login-as?id=__ID__'))->setTarget('_blank'); $grid->actionAdd(new Am_Grid_Action_Delete()); $grid->actionAdd(new Am_Grid_Action_Merge()); $grid->actionAdd(new Am_Grid_Action_Group_UserAssignGroup(false)); $grid->actionAdd(new Am_Grid_Action_Group_UserAssignGroup(true)); $nc_count = $this->getDi()->cacheFunction->call(array($this, 'getNotConfirmedCount'), array(), array(), 60); if ($nc_count) { $grid->actionAdd(new Am_Grid_Action_Url('not-confirmed', ___("Not Confirmed Users") . " ({$nc_count})", REL_ROOT_URL . '/admin-users/not-confirmed'))->setType(Am_Grid_Action_Abstract::NORECORD)->setTarget('_top'); } $grid->setFilter(new Am_Grid_Filter_User()); // $grid->addAction(new Am_Grid_Action_Group_Callback('email', ___("E-Mail"), array($this, 'email'))); $grid->setEventId('gridUser'); return $grid; }
public function createGrid() { $ds = new Am_Query_User(); $ds->addField("concat(name_f, ' ', name_l)", 'name')->addField('(SELECT count(p.invoice_payment_id) FROM ?_invoice_payment p WHERE p.user_id = u.user_id)', 'payments_count')->addField('IFNULL((SELECT sum(p.amount) FROM ?_invoice_payment p WHERE p.user_id = u.user_id),0)-' . 'IFNULL((SELECT sum(r.amount) FROM ?_invoice_refund r WHERE u.user_id=r.user_id),0)', 'payments_sum'); $ds->setOrder("login"); $grid = new Am_Grid_Editable('_u', ___("Browse Users"), $ds, $this->_request, $this->view); $grid->setRecordTitle(___('User')); $grid->addField(new Am_Grid_Field('login', ___('Username'), true))->setRenderFunction(array($this, 'renderLogin')); $grid->addField(new Am_Grid_Field('name', ___('Name'), true)); $grid->addField(new Am_Grid_Field('email', ___('E-Mail Address'), true)); $grid->addField(new Am_Grid_Field('payments_sum', ___('Payments'), true, null, array($this, 'renderPayments'))); $grid->addField('status', ___('Status'), true)->setRenderFunction(array($this, 'renderStatus')); $grid->actionAdd($this->createActionExport()); $grid->actionGet('edit')->setTarget('_top')->showFormAfterSave(true); $grid->actionGet('insert')->setTarget('_top')->showFormAfterSave(true); $grid->setForm(array($this, 'createForm')); $grid->addCallback(Am_Grid_Editable::CB_BEFORE_SAVE, array($this, 'beforeSave')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_SAVE, array($this, 'afterSave')); $grid->addCallback(Am_Grid_Editable::CB_VALUES_TO_FORM, array($this, 'valuesToForm')); $grid->addCallback(Am_Grid_Editable::CB_VALUES_FROM_FORM, array($this, 'valuesFromForm')); $grid->addCallback(Am_Grid_Editable::CB_RENDER_STATIC, array($this, 'renderStatic')); $grid->addCallback(Am_Grid_ReadOnly::CB_TR_ATTRIBS, array($this, 'getTrAttribs')); $grid->actionAdd(new Am_Grid_Action_Group_Callback('lock', ___("Lock"), array($this, 'lockUser'))); $grid->actionAdd(new Am_Grid_Action_Group_Callback('unlock', ___("Unlock"), array($this, 'unlockUser'))); $grid->actionAdd(new Am_Grid_Action_Group_EmailUsers()); $grid->actionAdd(new Am_Grid_Action_Group_MassSubscribe()); $nc_count = $this->getDi()->cacheFunction->call(array($this, 'getNotConfirmedCount'), array(), array(), 60); if ($nc_count) { $grid->actionAdd(new Am_Grid_Action_Url('not-confirmed', ___("Not Confirmed Users") . "({$nc_count})", REL_ROOT_URL . '/admin-users/not-confirmed'))->setType(Am_Grid_Action_Abstract::NORECORD)->setTarget('_top'); } $grid->setFilter(new Am_Grid_Filter_User()); // $grid->addAction(new Am_Grid_Action_Group_Callback('email', ___("E-Mail"), array($this, 'email'))); return $grid; }