Example #1
0
 /**
  * @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;
 }