Пример #1
0
 public function setupFields(Am_Grid_ReadOnly $grid)
 {
     $fields = array();
     //it is special fields and user should not be able to disable or rearrange it
     $fieldCheckboxes = null;
     $fieldActions = null;
     foreach ($grid->getFields() as $field) {
         if ($field->getFieldName() == '_actions') {
             $fieldActions = $field;
             $grid->removeField($field->getFieldName());
             continue;
         }
         if ($field->getFieldName() == '_checkboxes') {
             $fieldCheckboxes = $field;
             $grid->removeField($field->getFieldName());
             continue;
         }
         $this->addField($field);
         $fields[] = $field->getFieldName();
         $grid->removeField($field->getFieldName());
     }
     $this->defaultFields = $fields;
     $fields = $this->getSelectedFields();
     foreach ($fields as $fieldName) {
         if (isset($this->fields[$fieldName])) {
             $grid->addField($this->fields[$fieldName]);
         }
     }
     if ($fieldCheckboxes) {
         $grid->prependField($fieldCheckboxes);
     }
     if ($fieldActions) {
         $grid->addField($fieldActions);
     }
 }
Пример #2
0
 function renderInputSelect($name, $options, $attributes = array())
 {
     $out = '';
     foreach ($options as $value => $title) {
         $out .= is_array($title) ? $this->_renderOptgroup($name, $value, $title) : $this->_renderOption($name, $value, $title);
     }
     $out = sprintf('<select name="%s"%s>%s</select>', $this->grid->getId() . '_' . $name, $this->renderAttributes($attributes), $out);
     return $out;
 }
Пример #3
0
 function renderInputSelect($name, $options, $attributes = array())
 {
     $out = '';
     foreach ($options as $value => $title) {
         $out .= sprintf('<option value="%s"%s>%s</option>', htmlentities($value, ENT_QUOTES, 'UTF-8'), $value == $this->getParam($name) ? ' selected="selected"' : '', htmlentities($title, ENT_QUOTES, 'UTF-8'));
     }
     $out = sprintf('<select name="%s"%s>%s</select>', $this->grid->getId() . '_' . $name, $this->renderAttributes($attributes), $out);
     return $out;
 }
Пример #4
0
 public function renderCheckAllOffer(&$output, Am_Grid_ReadOnly $grid)
 {
     $start = (int) strpos($output, '<table');
     $div = '<!-- check all offer block -->' . PHP_EOL;
     $div .= '<div class="check-all-offer" style="display:none">' . PHP_EOL;
     $div .= '<div class="check-all-offer-offer">';
     $div .= ___('All %s records on this page are selected', '<b>' . $this->countRecords . '</b>') . '.' . PHP_EOL;
     $div .= '<a href="javascript:" class="check-all-offer-offer">';
     $div .= ___("Select all %s records matching your search", '<b>' . $grid->getDataSource()->getFoundRows() . '</b>');
     $div .= '.</a>' . PHP_EOL;
     $div .= '</div>' . PHP_EOL;
     $div .= '<div class="check-all-offer-selected" style="display:none">';
     $div .= ___('%s records on this page are selected. You can choose group operation in select box below or %scancel%s', '<b>' . $grid->getDataSource()->getFoundRows() . '</b>', '<a href="javascript:" class="check-all-offer-cancel">', '</a>') . PHP_EOL;
     $div .= '</div>' . PHP_EOL;
     $div .= '</div>' . PHP_EOL;
     $div .= '<!-- end of check all offer block -->' . PHP_EOL;
     $output = substr_replace($output, $div, $start, 0);
 }
Пример #5
0
 function browseUsersAction()
 {
     $withWrap = (bool) $this->_request->get('_u_wrap');
     unset($_GET['_u_wrap']);
     $ds = $this->searchUi->getActive()->getQuery();
     $grid = new Am_Grid_ReadOnly('_u', ___('Selected for E-Mailing'), $ds, $this->_request, $this->view);
     if ($withWrap) {
         $grid->isAjax(false);
     }
     $grid->setCountPerPage(10);
     $grid->addField('login', ___('Username'))->setRenderFunction(array($this, 'renderUserUrl'));
     $grid->addField('name_f', ___('First Name'));
     $grid->addField('name_l', ___('Last Name'));
     $grid->addField('email', ___('E-Mail Address'));
     $grid->run($this->getResponse());
 }
 public function createAdminLog()
 {
     $ds = new Am_Query($this->getDi()->adminLogTable);
     $ds->setOrder('dattm', 'desc');
     $g = new Am_Grid_ReadOnly('_admin', ___("Admin Log"), $ds, $this->getRequest(), $this->view);
     $g->addGridField(new Am_Grid_Field('dattm', ___('Time'), true, '', array($this, 'renderAdminTime'), '10%'));
     $g->addGridField(new Am_Grid_Field('admin_login', ___('Admin'), true, '', array($this, 'renderAdmin'), '10%'));
     $g->addGridField(new Am_Grid_Field('ip', ___('IP'), true, '', null, '10%'));
     $g->addGridField(new Am_Grid_Field('message', ___('Message')));
     $g->addGridField(new Am_Grid_Field('record', ___('Record')))->setRenderFunction(array($this, 'renderRec'));
     $g->setFilter(new Am_Grid_Filter_Text(___('Filter'), array('admin_login' => 'LIKE')));
     return $g;
 }
Пример #7
0
 public function renderFieldType($record, $fieldName, Am_Grid_ReadOnly $grid)
 {
     return $grid->renderTd(!empty($record->sql) ? '[SQL]' : '[DATA]');
 }
 protected function createDetailGrid($date)
 {
     //    public $textNoRecordsFound = "No rebills today - most possible cron job was not running.";
     $q = new Am_Query($this->getDi()->ccRebillTable);
     $q->addWhere('rebill_date=?', $date);
     $grid = new Am_Grid_ReadOnly('_dd', "Detailed Rebill Report For [{$date}]", $q, $this->_request, $this->view);
     $grid->setPermissionId('cc');
     $grid->addField(new Am_Grid_Field_Date('tm_added', 'Started', true));
     $grid->addField('invoice_id', 'Invoice#', true);
     $grid->addField(new Am_Grid_Field_Date('rebill_date', 'Date', true))->setFormatDate();
     $grid->addField('status', 'Status', true)->setFormatFunction(array('CcRebill', 'getStatusText'));
     $grid->addField('status_msg', 'Message');
     return $grid;
 }
Пример #9
0
 public function displayeditcategoryAction()
 {
     if (!$this->strategy->canEditCategory(null)) {
         throw new Am_Exception_AccessDenied();
     }
     $ds = new Am_Query($this->getDi()->helpdeskCategoryTable);
     $grid = new Am_Grid_ReadOnly('_helpdesk_category', ___('Categories'), $ds, $this->getRequest(), $this->view, $this->getDi());
     $grid->addField('login', ___('Title'))->setRenderFunction(array($this, 'renderEditCategoryTitle'));
     $grid->setPermissionId(Bootstrap_Helpdesk::ADMIN_PERM_ID);
     $grid->isAjax($this->isAjax() && $this->isGridRequest('_helpdesk_category'));
     echo $grid->run();
 }
Пример #10
0
 public function getVariablesList()
 {
     return array_merge(parent::getVariablesList(), array(self::ID_KEY, self::BACK_KEY));
 }
Пример #11
0
 public function keywordsAction()
 {
     $uid = $this->getDi()->auth->getUserId();
     $db = $this->getDi()->db;
     $db->query('DROP TEMPORARY TABLE IF EXISTS ?_aff_keywords_tmp');
     $db->query("CREATE TEMPORARY TABLE ?_aff_keywords_tmp (\n            keyword_id int not null DEFAULT 0,\n            keyword varchar(64) not null DEFAULT '',\n            clicks_count int not null DEFAULT 0,\n            leads_count int not null DEFAULT 0,\n            sales_count int not null DEFAULT 0,\n            sales_amount int not null DEFAULT 0,\n            PRIMARY KEY (`keyword_id`)\n            )");
     //clicks
     $db->query("INSERT into ?_aff_keywords_tmp (keyword_id, clicks_count) \n            SELECT keyword_id, count(*) from ?_aff_click where keyword_id is not null and aff_id = ? group by keyword_id", $uid);
     //leads
     $db->query("INSERT into ?_aff_keywords_tmp (keyword_id, leads_count) \n            SELECT keyword_id, cnt from (SELECT keyword_id, count(*) as cnt from ?_aff_lead \n            where keyword_id is not null and aff_id = ? group by keyword_id) s\n            ON DUPLICATE KEY UPDATE leads_count = s.cnt", $uid);
     //sales_count
     $db->query("INSERT into ?_aff_keywords_tmp (keyword_id, sales_count) \n            SELECT keyword_id, cnt from (SELECT keyword_id, sum(if(record_type='commission', 1, 0)) as cnt from ?_aff_commission \n            where keyword_id is not null and aff_id = ? group by keyword_id) s\n            ON DUPLICATE KEY UPDATE sales_count = s.cnt", $uid);
     //sales_amount
     $db->query("INSERT into ?_aff_keywords_tmp (keyword_id, sales_amount) \n            SELECT keyword_id, cnt from (SELECT keyword_id, sum(if(record_type='commission', amount, -amount)) as cnt from ?_aff_commission \n            where keyword_id is not null and aff_id = ? group by keyword_id) s\n            ON DUPLICATE KEY UPDATE sales_amount = s.cnt", $uid);
     //keyword
     $db->query("UPDATE ?_aff_keywords_tmp t set keyword = (SELECT value from ?_aff_keyword s where s.keyword_id = t.keyword_id)");
     $ds = new Am_Query(new Am_Table($db, '?_aff_keywords_tmp', 't'));
     $grid = new Am_Grid_ReadOnly('_aff_keywords', 'Keywords', $ds, $this->getRequest(), $this->getView());
     $grid->addField('keyword', ___('Keyword'));
     $grid->addField('clicks_count', ___('Clicks'));
     $grid->addField('leads_count', ___('Leads'));
     $grid->addField('sales_count', ___('Sales'));
     $grid->addField('sales_amount', ___('Commissions'))->setRenderFunction(function ($record) {
         return "<td>" . Am_Currency::render($record->sales_amount) . "</td>";
     });
     $grid->runWithLayout('aff/keywords.phtml');
 }
Пример #12
0
 public function init(Am_Grid_ReadOnly $grid)
 {
     $grid->actionAdd(new Am_Grid_Action_LiveCheckbox($this->field))->setCallback('l = function(newValue){$(this).closest("tr").toggleClass("disabled", newValue == "1")}');
     $grid->addCallback(Am_Grid_ReadOnly::CB_TR_ATTRIBS, array($this, 'cbGetTrAttribs'));
 }
 public function createLeadsGrid()
 {
     $ds = new Am_Query($this->getDi()->affLeadTable);
     $ds->leftJoin('?_user', 'a', 't.aff_id=a.user_id');
     $ds->addField('CONCAT(a.login, \' (\', a.name_f, \' \', a.name_l,\') [#\', a.user_id, \']\')', 'aff_name');
     $ds->leftJoin('?_aff_banner', 'b', 't.banner_id=b.banner_id');
     $ds->addField('b.title', 'banner');
     $ds->leftJoin('?_user', 'u', 'u.user_id=t.user_id');
     $ds->addField('CONCAT(u.login, \' (\',u.name_f, \' \',u.name_l,\') [#\', u.user_id, \']\')', 'user_name')->addField('u.email', 'user_email');
     $grid = new Am_Grid_ReadOnly('_affclicks', ___('Leads'), $ds, $this->_request, $this->view);
     $grid->setPermissionId(Bootstrap_Aff::ADMIN_PERM_ID);
     $userUrl = new Am_View_Helper_UserUrl();
     $grid->addField('aff_name', ___('Affiliate'))->addDecorator(new Am_Grid_Field_Decorator_Link($userUrl->userUrl('{aff_id}'), '_top'));
     $grid->addField('user_name', ___('User'))->addDecorator(new Am_Grid_Field_Decorator_Link($userUrl->userUrl('{user_id}'), '_top'));
     $grid->addField('banner', ___('Banner'))->setRenderFunction(array($this, 'renderBanner'));
     $grid->addField('time', ___('Date/Time'))->setFormatFunction('amDateTime');
     $grid->addField('first_visited', ___('First visited'))->setFormatFunction('amDateTime');
     $grid->setFilter(new Am_Grid_Filter_Leads());
     return $grid;
 }
Пример #14
0
 public function clickAction()
 {
     $ds = new Am_Query($this->getDi()->notificationClickTable);
     $ds->leftJoin('?_user', 'u', 't.user_id=u.user_id')->addField('COUNT(t.notification_click_id)', 'cnt')->addField('u.*')->addField("CONCAT(u.name_f, ' ', u.name_l)", 'name')->groupBy('user_id', 'u')->addWhere('notification_id=?', $this->getParam('id'));
     $grid = new Am_Grid_ReadOnly('_n_c', ___('Statistics'), $ds, $this->getRequest(), $this->getView(), $this->getDi());
     $userUrl = new Am_View_Helper_UserUrl();
     $grid->addField('login', ___('Username'))->addDecorator(new Am_Grid_Field_Decorator_Link($userUrl->userUrl('{user_id}'), '_top'));
     $grid->addField('name', ___('Name'));
     $grid->addField('email', ___('E-Mail Address'));
     $grid->addField('cnt', ___('Clicks'), null, null, null, '1%');
     $grid->runWithLayout($this->layout);
 }
Пример #15
0
 public function keywordsAction()
 {
     $ds = new Am_Query($this->getDi()->affKeywordTable);
     $ds->addField('t.`value`', 'keyword');
     $ds->addField('count(clicks.log_id)', 'clicks_count');
     $ds->addField('count(distinct leads.user_id)', 'leads_count');
     $ds->addField('sum(if(commissions.record_type="commission", 1, 0))', 'sales_count');
     $ds->addField('sum(if(commissions.record_type="commission", amount, -amount))', 'sales_amount');
     $ds->addWhere('t.aff_id=?', $this->getDi()->auth->getUserId());
     $ds->leftJoin('?_aff_click', 'clicks', 't.keyword_id = clicks.keyword_id');
     $ds->leftJoin('?_aff_commission', 'commissions', 't.keyword_id = commissions.keyword_id');
     $ds->leftJoin('?_aff_lead', 'leads', 't.keyword_id = leads.keyword_id');
     $ds->groupBy('keyword_id');
     $grid = new Am_Grid_ReadOnly('_aff_keywords', 'Keywords', $ds, $this->getRequest(), $this->getView());
     $grid->addField('keyword', ___('Keyword'));
     $grid->addField('clicks_count', ___('Clicks'));
     $grid->addField('leads_count', ___('Leads'));
     $grid->addField('sales_count', ___('Sales'));
     $grid->addField('sales_amount', ___('Commissions'))->setRenderFunction(function ($record) {
         return "<td>" . Am_Currency::render($record->sales_amount) . "</td>";
     });
     $grid->runWithLayout('aff/keywords.phtml');
 }
Пример #16
0
 function payoutDetailAction()
 {
     $ds = new Am_Query($this->getDi()->affCommissionTable);
     $ds->leftJoin('?_invoice', 'i', 'i.invoice_id=t.invoice_id');
     $ds->leftJoin('?_user', 'u', 'u.user_id=i.user_id');
     $ds->leftJoin('?_product', 'p', 't.product_id=p.product_id');
     $ds->addField('u.user_id', 'user_id')->addField('CONCAT(u.login, \' (\',u.name_f, \' \',u.name_l,\') [#\', u.user_id, \'] \')', 'user_name')->addField('u.email', 'user_email')->addField('p.title', 'product_title');
     $ds->addWhere('t.aff_id=?', $this->user_id);
     $ds->addWhere('payout_detail_id=?', $this->getParam('payout_detail_id'));
     $ds->setOrder('commission_id', 'desc');
     $grid = new Am_Grid_ReadOnly('_affcomm', ___('Affiliate Commission'), $ds, $this->_request, $this->view);
     $grid->setPermissionId(Bootstrap_Aff::ADMIN_PERM_ID);
     $grid->setCountPerPage(10);
     $userUrl = new Am_View_Helper_UserUrl();
     $grid->addField(new Am_Grid_Field_Date('date', ___('Date')))->setFormatDate();
     $grid->addField('user_name', ___('User'))->addDecorator(new Am_Grid_Field_Decorator_Link($userUrl->userUrl('{user_id}'), '_top'));
     $grid->addField('product_title', ___('Product'));
     $grid->addField('record_type', ___('Type'))->setRenderFunction(array($this, 'renderType'));
     $fieldAmount = $grid->addField('amount', ___('Commission'))->setRenderFunction(array($this, 'renderCommAmount'));
     $grid->addField('tier', ___('Tier'))->setRenderFunction(array($this, 'renderTier'));
     $grid->addCallback(Am_Grid_ReadOnly::CB_TR_ATTRIBS, array($this, 'commCbGetTrAttribs'));
     $grid->runWithLayout('admin/user-layout.phtml');
 }
Пример #17
0
 protected function createDetailGrid($date)
 {
     //    public $textNoRecordsFound = "No rebills today - most possible cron job was not running.";
     $q = new Am_Query($this->getDi()->ccRebillTable);
     $q->addWhere('t.rebill_date=?', $date);
     $q->leftJoin('?_invoice', 'i', 'i.invoice_id=t.invoice_id');
     $q->addField('i.public_id', 'public_id');
     $q->addField('i.user_id', 'user_id');
     $grid = new Am_Grid_ReadOnly('_r_d', ___('Detailed Rebill Report for %s', amDate($date)), $q, $this->_request, $this->view);
     $grid->setPermissionId('cc');
     $grid->addField(new Am_Grid_Field_Date('tm_added', 'Started', true));
     $grid->addField(new Am_Grid_Field('invoice_id', 'Invoice#', true, '', array($this, 'renderInvoiceLink')));
     $grid->addField(new Am_Grid_Field_Date('rebill_date', 'Date', true))->setFormatDate();
     $grid->addField('status', 'Status', true)->setFormatFunction(array('CcRebill', 'getStatusText'));
     $grid->addField('status_msg', 'Message');
     $grid->setCountPerPage(10);
     return $grid;
 }
Пример #18
0
 public function createAdminLog()
 {
     $ds = new Am_Query($this->getDi()->adminLogTable);
     $ds->setOrder('dattm', 'desc');
     $g = new Am_Grid_ReadOnly('_admin', ___('Admin Log'), $ds, $this->getRequest(), $this->view);
     $g->setPermissionId(Am_Auth_Admin::PERM_LOGS_ADMIN);
     $g->addField(new Am_Grid_Field_Date('dattm', ___('Date/Time'), true));
     $g->addField(new Am_Grid_Field('admin_login', ___('Admin'), true))->addDecorator(new Am_Grid_Field_Decorator_Link(REL_ROOT_URL . "/admin-admins?_admin_a=edit&_admin_id={admin_id}", '_top'));
     $g->addField(new Am_Grid_Field('ip', ___('IP'), true, '', null, '10%'));
     $g->addField(new Am_Grid_Field('message', ___('Message')));
     $g->addField(new Am_Grid_Field('record', ___('Record')))->setRenderFunction(array($this, 'renderRec'));
     $g->setFilter(new Am_Grid_Filter_AdminLog());
     return $g;
 }
 public function createLeadsGrid()
 {
     $ds = new Am_Query($this->getDi()->affLeadTable);
     $ds->leftJoin('?_user', 'a', 't.aff_id=a.user_id');
     $ds->addField('CONCAT(a.name_f, \' \', a.name_l)', 'aff_name');
     $ds->leftJoin('?_aff_banner', 'b', 't.banner_id=b.banner_id');
     $ds->addField('b.title', 'banner');
     $ds->leftJoin('?_user', 'u', 'u.user_id=t.user_id');
     $ds->addField('CONCAT(u.name_f, \' \',u.name_l)', 'user_name')->addField('u.email', 'user_email');
     $grid = new Am_Grid_ReadOnly('_affclicks', ___("Leads"), $ds, $this->_request, $this->view);
     $grid->setPermissionId('affiliates');
     $userUrl = new Am_View_Helper_UserUrl();
     $grid->addField('aff_name', ___('Affiliate'))->addDecorator(new Am_Grid_Field_Decorator_Link($userUrl->userUrl('{aff_id}'), '_blank'));
     $grid->addField('user_name', ___('User'))->addDecorator(new Am_Grid_Field_Decorator_Link($userUrl->userUrl('{user_id}'), '_blank'));
     $grid->addField('banner', ___('Banner'));
     $grid->addField('time', ___('Time'))->setFormatFunction('amDateTime');
     $grid->addField('first_visited', ___('First visited'))->setFormatFunction('amDateTime');
     return $grid;
 }