/** * @return Am_Grid_Editable_Subusers */ static function factory(User $reseller, Zend_Controller_Request_Http $request, Am_View $view, Am_Di $di) { $ds = new Am_Query_User_Subusers($reseller->pk()); $ds->leftJoin('?_subusers_subscription', 'sgu'); $ds->addField('GROUP_CONCAT(sgu.product_id)', 'groups'); $ds->addField('GROUP_CONCAT(sgu.status)', 'groups_status'); $grid = new self('_subusers', ___("Subusers"), $ds, $request, $view, $di, $reseller); $grid->setEventId('gridSubusersUser'); $grid->addField('login', ___('Username')); $grid->addField('name_f', ___('First Name')); $grid->addField('name_l', ___('Last Name')); $grid->addField('email', ___('E-Mail Address')); $grid->addField('groups', ___('Groups'))->setRenderFunction(array($grid, 'renderGroups')); $grid->setForm(array($grid, '_createForm')); $grid->addCallback(Am_Grid_Editable::CB_BEFORE_INSERT, array($grid, 'beforeInsert')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_INSERT, array($grid, 'afterInsert')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_SAVE, array($grid, 'afterSave')); $grid->addCallback(Am_Grid_Editable::CB_BEFORE_SAVE, array($grid, 'beforeSave')); $grid->addCallback(Am_Grid_Editable::CB_AFTER_DELETE, array($grid, 'afterDelete')); $grid->addCallback(Am_Grid_Editable::CB_VALUES_TO_FORM, array($grid, '_valuesToForm')); $grid->setFilter(new Am_Grid_Filter_Text(null, array('login' => 'LIKE', 'name_f' => 'LIKE', 'name_l' => 'LIKE', 'email' => 'LIKE'))); if ($di->config->get('subusers_can_login')) { $grid->actionAdd(new Am_Grid_Action_Url('login', ___('Login as User'), '__ROOT__/subusers/index/login-as?id=__ID__'))->setTarget('_top'); } $grid->actionGet('edit')->setTarget('_top'); $grid->actionGet('delete')->setTarget('_top'); $grid->actionGet('insert')->setTarget('_top'); $subusers_count = $reseller->data()->get('subusers_count'); $canAdd = 0; foreach ($subusers_count as $product_id => $v) { if ($v['avail_count'] > $v['pending_count'] + $v['active_count']) { $canAdd++; } } if (!$canAdd) { $grid->actionDelete('insert'); } if ($canAdd) { $grid->actionAdd(new Am_Grid_Action_ImportCSV('import', ___('Import from CSV'), $reseller)); } if ($di->config->get('subusers_cannot_delete') == 1) { $grid->actionDelete('delete'); } if ($di->config->get('subusers_cannot_edit')) { $grid->actionDelete('edit'); } return $grid; }