public function createGrid()
 {
     $this->view->headScript()->appendFile(REL_ROOT_URL . "/application/default/views/public/js/jquery/jquery.json.js");
     $this->view->headScript()->appendScript($this->getJs());
     $table = $this->getDi()->savedFormTable;
     $ds = new Am_Query($table);
     $ds->addWhere('`type` in (?a)', array_keys($table->getTypeDefs()));
     $ds->addOrderRaw("`type`='signup' DESC");
     $grid = new Am_Grid_Editable('_s', ___("Forms Editor"), $ds, $this->_request, $this->view);
     $grid->setForm(array($this, 'createForm'));
     $grid->setRecordTitle(' ');
     //$grid->addGridField(new Am_Grid_Field('saved_form_id', '#', true, '', null, '5%'));
     $grid->addGridField(SavedForm::D_SIGNUP, ___('Default Signup'), false)->setWidth('5%')->setRenderFunction(array($this, 'renderDefault'));
     $grid->addGridField(SavedForm::D_MEMBER, ___('Default for Members'), false)->setWidth('5%')->setRenderFunction(array($this, 'renderDefault'));
     $existingTypes = $this->getDi()->savedFormTable->getExistingTypes();
     $grid->actionGet('edit')->setTarget('_top');
     $grid->actionDelete('insert');
     foreach ($this->getDi()->savedFormTable->getTypeDefs() as $type => $typeDef) {
         if (!empty($typeDef['isSingle']) && in_array($type, $existingTypes)) {
             continue;
         }
         $grid->actionAdd(new Am_Grid_Action_Insert('insert-' . $type))->addUrlParam('type', $type)->setTitle(___('New %s', $typeDef['title']));
     }
     $grid->addCallback(Am_Grid_Editable::CB_BEFORE_SAVE, array($this, 'beforeSave'));
     $grid->addGridField(new Am_Grid_Field('type', ___('Type')));
     $grid->addGridField(new Am_Grid_Field('title', ___('Title')));
     $grid->addGridField(new Am_Grid_Field('comment', ___('Comment')));
     $grid->addGridField(new Am_Grid_Field('code', ___('Code')));
     $grid->addGridField(new Am_Grid_Field('url', ___('URL')))->setRenderFunction(array($this, 'renderUrl'));
     $grid->actionGet('delete')->setIsAvailableCallback(create_function('$record', 'return $record->canDelete();'));
     return $grid;
 }
 function viewAction()
 {
     // display payouts list date | method | total | paid |
     $id = $this->getInt('payout_id');
     if (!$id) {
         throw new Am_Exception_InputError("Not payout_id passed");
     }
     $ds = new Am_Query($this->getDi()->affPayoutDetailTable);
     $ds->leftJoin('?_aff_payout', 'p', 'p.payout_id=t.payout_id');
     $ds->leftJoin('?_user', 'u', 't.aff_id=u.user_id');
     $ds->addField('u.*');
     $ds->addField('p.type', 'type');
     $ds->addWhere('t.payout_id=?d', $id);
     $grid = new Am_Grid_Editable('_d', ___("Payout %d Details", $id), $ds, $this->_request, $this->view);
     $grid->setPermissionId('affiliates');
     $grid->addCallback(Am_Grid_Editable::CB_RENDER_TABLE, array($this, 'addBackLink'));
     $grid->addField('email', ___('E-Mail'));
     $grid->addField('name_f', ___('First Name'));
     $grid->addField('name_l', ___('Last Name'));
     $grid->addField('type', ___('Payout Method'));
     $grid->addField('amount', ___('Amount'));
     //        $grid->addField('receipt_id', ___('Receipt Id'));
     $grid->addField('is_paid', ___('Is Paid?'));
     $grid->addField(new Am_Grid_Field_Expandable('_details', ___('Payout Details')))->setGetFunction(array($this, 'getPayoutDetails'));
     $grid->actionsClear();
     //$grid->actionAdd(new Am_Grid_Action_LiveEdit('receipt_id'));
     $grid->actionAdd(new Am_Grid_Action_PayoutMarkPaid('mark_paid', ___("Mark Paid")));
     $grid->actionAdd(new Am_Grid_Action_PayoutMarkNotPaid('mark_notpaid', ___("Mark NOT Paid")));
     $grid->runWithLayout();
     // detail payout records date | method | paid | receipt_id | aff. payout fields
 }
Ejemplo n.º 3
0
 /** @return Am_Query */
 public function getQuery()
 {
     $q = new Am_Query($this->getDi()->helpdeskMessageTable, 'hm');
     $q->clearFields();
     $q->addField('COUNT(message_id)', 'cnt');
     $q->addWhere('admin_id IS NULL');
     return $q;
 }
Ejemplo n.º 4
0
 /** @return Am_Query */
 public function getQuery()
 {
     $q = new Am_Query(new AffCommissionTable(), 'cl');
     $q->clearFields();
     $q->addField("SUM(IF(cl.record_type='commission', cl.amount, -cl.amount)) AS commission");
     if ($this->aff_id) {
         $q->addWhere("aff_id = ?d", $this->aff_id);
     }
     return $q;
 }
 function createGrid($id, $title)
 {
     $ds = new Am_Query($this->getDi()->banTable);
     $ds->addWhere("`type` = ?", $id);
     $g = new Am_Grid_Editable('_' . $id, ___("Disallow new Signups by %s", $title), $ds, $this->_request, $this->view);
     $g->setForm(array($this, 'createForm'));
     $g->addGridField("value", ___("Locked Value"));
     $g->addGridField("comment", ___("Comment"));
     $g->addCallback(Am_Grid_ReadOnly::CB_RENDER_TABLE, array($this, 'renderConfig'));
     return $g;
 }
Ejemplo n.º 6
0
 function createGrid($id, $title)
 {
     $ds = new Am_Query($this->getDi()->banTable);
     $ds->addWhere("`type` = ?", $id);
     $g = new Am_Grid_Editable('_' . $id, ___('Disallow new Signups by %s', $title), $ds, $this->_request, $this->view);
     $g->setPermissionId(Am_Auth_Admin::PERM_BAN);
     $g->setForm(array($this, 'createForm'));
     $g->addField('value', ___('Locked Value'));
     $g->addField('comment', ___('Comment'));
     $g->addCallback(Am_Grid_ReadOnly::CB_RENDER_TABLE, array($this, 'renderConfig'));
     return $g;
 }
Ejemplo n.º 7
0
 function renderInvoiceCommissions(Invoice $invoice, Am_View $view)
 {
     $query = new Am_Query($this->getDi()->affCommissionTable);
     $query->leftJoin('?_invoice', 'i', 'i.invoice_id=t.invoice_id');
     $query->leftJoin('?_user', 'a', 't.aff_id=a.user_id');
     $query->leftJoin('?_product', 'p', 't.product_id=p.product_id');
     $query->addField('CONCAT(a.login, \' (\', a.name_f, \' \', a.name_l,\') [#\', a.user_id, \']\')', 'aff_name')->addField('p.title', 'product_title')->addField('IF(payout_detail_id IS NULL, \'no\', \'yes\')', 'is_paid');
     $query->setOrder('commission_id', 'desc');
     $query->addWhere('t.invoice_id=?', $invoice->pk());
     $items = $query->selectAllRecords();
     $view->comm_items = $items;
     $view->invoice = $invoice;
     return $view->render('blocks/admin-user-invoice-details.phtml');
 }
Ejemplo n.º 8
0
 public function getProductsQuery(ProductCategory $category = null)
 {
     if (!$this->query) {
         $scope = false;
         if ($root = $this->getModule()->getConfig('category_id', null)) {
             $scope = array_merge($this->getDi()->productCategoryTable->getSubCategoryIds($root), array($root));
         }
         $this->query = $this->getDi()->productTable->createQuery($category ? $category->product_category_id : null, $this->getHiddenCatCodes(), $scope);
         if ($user = $this->getDi()->auth->getUser()) {
             $products = $this->getDi()->productTable->getVisible();
             $filtered = $this->getDi()->productTable->filterProducts($products, $user->getActiveProductIds(), $user->getExpiredProductIds(), true);
             $hide_pids = array_diff(array_map(function ($p) {
                 return $p->pk();
             }, $products), array_map(function ($p) {
                 return $p->pk();
             }, $filtered));
             if (!empty($hide_pids)) {
                 $this->query->addWhere('p.product_id not in (?a)', $hide_pids);
             }
         }
     }
     return $this->query;
 }
 public function gridAction()
 {
     $prefix = $this->getRequest()->getParam('prefix');
     if (!$prefix) {
         throw new Am_Exception_InputError('prefix is undefined');
     }
     if (!$this->getDi()->uploadAcl->checkPermission($prefix, Am_Upload_Acl::ACCESS_LIST, $this->getDi()->authAdmin->getUser())) {
         throw new Am_Exception_AccessDenied();
     }
     $ds = new Am_Query($this->getDi()->uploadTable);
     $ds->addWhere('prefix=?', $prefix);
     $grid = new Am_Grid_Editable_Uploads('_files', 'Files', $ds, $this->getRequest(), $this->view);
     $grid->setPermissionId('grid_content');
     $grid->addField(new Am_Grid_Field('name', 'Name', true))->setRenderFunction(array($this, 'renderName'));
     $grid->addField(new Am_Grid_Field('desc', 'Description', true));
     $grid->actionsClear();
     $grid->actionAdd(new Am_Grid_Action_LiveEdit('desc'));
     $grid->addCallback(Am_Grid_ReadOnly::CB_RENDER_STATIC, array($this, 'addJs'));
     $grid->isAjax(false);
     $response = $grid->run();
     $response->sendHeaders();
     $response->sendResponse();
 }
Ejemplo n.º 10
0
 /**
  * select resource accessible for customers using
  * records (user_id, resource_id, resource_type, login, email)
  * @return Am_Query
  */
 function getResourcesForMembers($types = null, $condition = "1=1")
 {
     if ($types && !is_array($types)) {
         $types = (array) $types;
     }
     $qfree = new Am_Query($this, 'rfree');
     $qfree->crossJoin('?_user', 'u')->clearFields()->addField('u.user_id')->addField('rfree.resource_id')->addField('rfree.resource_type')->addField('u.login')->addField('u.email')->addField("rfree.fn", 'fn')->addField("rfree.id", 'fn_id')->groupBy('user_id, resource_id, resource_type', 'u')->addWhere("rfree.fn IN ('free', 'free_without_login')")->addWhere("(\n                            (rfree.start_days IS NULL AND rfree.stop_days IS NULL) \n                            OR\n                            (CEIL((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(u.added))/86400) BETWEEN IFNULL(rfree.start_days,0) AND IFNULL(rfree.stop_days, 90000)) \n                            OR\n                            (CEIL((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(u.added))/86400) >= IFNULL(rfree.start_days,0) AND rfree.stop_days = -1) \n                       )");
     if ($types) {
         $qfree->addWhere('rfree.resource_type IN (?a) AND ' . $condition, $types);
     }
     $q = $this->_getBaseQuery();
     $q->clearFields();
     $q->clearOrder();
     $q->addField('DISTINCT c.user_id')->addField('r.resource_id')->addField('r.resource_type')->addField('u.login')->addField('u.email')->addField("r.fn", 'fn')->addField("r.id", 'fn_id')->leftJoin('?_user', 'u', 'u.user_id=c.user_id')->addOrder('user_id')->addOrderRaw("(SELECT _sort_order\n                 FROM ( SELECT sort_order as _sort_order, \n                        resource_type as _resource_type, \n                        resource_id as _resource_id\n                      FROM ?_resource_access_sort ras) AS _ras\n                 WHERE _resource_id=resource_id AND _resource_type=resource_type LIMIT 1),\n                 resource_id, resource_type")->groupBy('user_id, resource_id, resource_type', 'c')->addWhere("r.fn NOT IN ('free', 'free_without_login')")->addUnion($qfree);
     if ($types) {
         $q->addWhere('r.resource_type IN (?a) AND ' . $condition, $types);
     }
     return $q;
 }
Ejemplo n.º 11
0
 protected function createAdapter()
 {
     $q = new Am_Query(Am_Di::getInstance()->newsletterListTable);
     $q->addWhere('IFNULL(disabled,0)=0');
     $q->leftJoin('?_newsletter_user_subscription', 's', 's.list_id = t.list_id AND s.is_active > 0');
     $q->addField('COUNT(s.list_id)', 'subscribed_users');
     return $q;
 }
Ejemplo n.º 12
0
    public function detailAction()
    {
        $id = (int) $this->getParam('id');
        if (!$id) {
            throw new Am_Exception_InputError('Empty id passed to ' . __METHOD__);
        }
        $ds = new Am_Query($this->getDi()->couponTable);
        $ds->leftJoin('?_user', 'u', 't.user_id=u.user_id');
        $ds->addField('u.login', 'u_login');
        $ds->addWhere('batch_id=?d', $id);
        $grid = new Am_Grid_Editable('_detail', ___('Coupons'), $ds, $this->_request, $this->view);
        $grid->setPermissionId('grid_coupon');
        $grid->setEventId('gridCoupon');
        $grid->actionsClear();
        $grid->addField('code', ___('Code'), true, null);
        $grid->addField(new Am_Grid_Field_Expandable('used_count', ___('Used For'), false))->setGetFunction(array($this, 'getUsedCount'))->setPlaceholder(array($this, 'getPlaceholder'))->setEscape(false);
        $grid->addField('user_id', ___('User'))->setGetFunction(array($this, 'getUser'));
        $grid->setFilter(new Am_Grid_Filter_Text(___('Filter by Code'), array('code' => 'LIKE')));
        $grid->actionAdd(new Am_Grid_Action_LiveEdit('code'));
        $grid->actionAdd(new Am_Grid_Action_LiveEdit('user_id', ___('Click to Assign')))->setInitCallback('l = function(){this.autocomplete({
    minLength: 2,
    source: window.rootUrl + "/admin-users/autocomplete"
});}')->getDecorator()->setInputTemplate(sprintf('<input type="text" placeholder="%s" />', ___('Type Username or E-Mail')));
        $grid->isAjax(false);
        $grid->addCallback(Am_Grid_ReadOnly::CB_RENDER_CONTENT, array($this, 'couponRenderContent'));
        $response = $grid->run();
        $response->sendHeaders();
        $response->sendResponse();
    }
Ejemplo n.º 13
0
 public function __construct(Am_Request $request, Am_View $view)
 {
     $di = Am_Di::getInstance();
     $ds = null;
     $i = 0;
     $key = null;
     foreach ($di->resourceAccessTable->getAccessTables() as $k => $t) {
         $q = new Am_Query($t);
         $q->clearFields();
         if (empty($key)) {
             $key = $t->getKeyField();
         }
         $q->addField($t->getKeyField(), $key);
         $type = $t->getAccessType();
         $q->addField("'{$type}'", 'resource_type');
         $q->addField($t->getTitleField(), 'title');
         $q->addField($q->escape($t->getAccessTitle()), 'type_title');
         $q->addField($q->escape($t->getPageId()), 'page_id');
         if ($t instanceof EmailTemplateTable) {
             $q->addWhere('name IN (?a)', array(EmailTemplate::AUTORESPONDER, EmailTemplate::EXPIRE));
         }
         if (empty($ds)) {
             $ds = $q;
         } else {
             $ds->addUnion($q);
         }
     }
     // yes we need that subquery in subquery to mask field names
     // to get access of fields of main query (!)
     $ds->addOrderRaw("(SELECT _sort_order\n             FROM ( SELECT sort_order as _sort_order,\n                    resource_type as _resource_type,\n                    resource_id as _resource_id\n                  FROM ?_resource_access_sort ras) AS _ras\n             WHERE _resource_id={$key} AND _resource_type=resource_type LIMIT 1),\n             {$key}, resource_type");
     parent::__construct('_all', ___('All Content'), $ds, $request, $view, $di);
     $this->addField('type_title', ___('Type'));
     $this->addField('title', ___('Title'));
     if ($this->getDi()->db->selectCell("SELECT COUNT(*) FROM ?_resource_resource_category")) {
         $this->addField(new Am_Grid_Field('rgroup', ___('Categories'), false))->setRenderFunction(array($this, 'renderCategory'));
     }
     $this->actionDelete('insert');
     $this->actionDelete('edit');
     $this->actionDelete('delete');
     $this->actionAdd(new Am_Grid_Action_ContentAllEdit('edit', ___('Edit'), ''));
     $this->actionAdd(new Am_Grid_Action_SortContent());
 }
Ejemplo n.º 14
0
 protected function getQuery()
 {
     $q = new Am_Query($this->getDi()->uploadTable);
     $q->addOrder('name');
     if ($this->prefix) {
         $q->addWhere('prefix=?', $this->prefix);
     }
     return $q;
 }
Ejemplo n.º 15
0
 function applyQueryInterval(Am_Query $q)
 {
     $dateField = $this->getPointField();
     $f = $this->quantity->getSqlExpr($dateField);
     $q->addField($f, self::POINT_FLD);
     $q->groupBy(self::POINT_FLD, "");
     $q->addWhere("{$dateField} BETWEEN ? AND ?", $this->start, $this->stop);
 }
Ejemplo n.º 16
0
 /**
  * @return Am_Query
  */
 protected function _getBaseQuery($joinConditions = "")
 {
     if ($joinConditions) {
         $joinConditions = "(" . $joinConditions . ") AND ";
     }
     $q = new Am_Query($this, 'r');
     $q->clearFields();
     $q->addField('DISTINCT r.resource_id', 'resource_id');
     $q->addField('resource_type', 'resource_type');
     $q->leftJoin("?_access_cache", "c", "\n                    {$joinConditions} \n                    (((c.fn = r.fn) AND (c.id = r.id)) OR (r.fn='product_category_id' AND r.id=-1)) \n                    AND (\n                            (c.status='active' AND r.start_days IS NULL AND r.stop_days IS NULL) \n                            OR\n                            (c.status='active' AND c.days BETWEEN IFNULL(r.start_days,0) AND IFNULL(r.stop_days, 90000)) \n                            OR\n                            (c.days >= IFNULL(r.start_days,0) AND r.stop_days = -1) \n                       )");
     // is available if free, or if user has equal subscription record in access_cache
     $q->addWhere("(r.fn='free' OR c.user_id IS NOT NULL)");
     return $q;
 }
Ejemplo n.º 17
0
 public function autocompleteAction()
 {
     $term = '%' . $this->getParam('term') . '%';
     $exclude = $this->getInt('exclude');
     if (!$term) {
         return null;
     }
     $q = new Am_Query($this->getDi()->userTable);
     $q->addWhere('((t.login LIKE ?) OR (t.email LIKE ?) OR (t.name_f LIKE ?) OR (t.name_l LIKE ?))', $term, $term, $term, $term);
     if ($exclude) {
         $q->addWhere('user_id<>?', $exclude);
     }
     $q->addWhere('is_affiliate>?', 0);
     $qq = $q->query(0, 10);
     $ret = array();
     while ($r = $this->getDi()->db->fetchRow($qq)) {
         $ret[] = array('label' => sprintf('%s / "%s" <%s>', $r['login'], $r['name_f'] . ' ' . $r['name_l'], $r['email']), 'value' => $r['login']);
     }
     if ($q->getFoundRows() > 10) {
         $ret[] = array('label' => sprintf("... %d more rows found ...", $q->getFoundRows() - 10), 'value' => null);
     }
     $this->ajaxResponse($ret);
 }
Ejemplo n.º 18
0
 function viewAction()
 {
     Am_Aff_PayoutMethod::static_addFields();
     // display payouts list date | method | total | paid |
     $id = $this->getInt('payout_id');
     if (!$id) {
         throw new Am_Exception_InputError("Not payout_id passed");
     }
     $ds = new Am_Query($this->getDi()->affPayoutDetailTable);
     $ds->leftJoin('?_aff_payout', 'p', 'p.payout_id=t.payout_id');
     $ds->leftJoin('?_user', 'u', 't.aff_id=u.user_id');
     $ds->addField('u.*');
     $ds->addField('p.type', 'type');
     $ds->addWhere('t.payout_id=?d', $id);
     $grid = new Am_Grid_Editable('_d', ___("Payout %d Details", $id), $ds, $this->_request, $this->view);
     $grid->setEventId('gridAffPayoutDetail');
     $grid->setPermissionId(Bootstrap_Aff::ADMIN_PERM_ID);
     $grid->addCallback(Am_Grid_Editable::CB_RENDER_TABLE, array($this, 'addBackLink'));
     $userUrl = new Am_View_Helper_UserUrl();
     $grid->addField('email', ___('E-Mail'))->addDecorator(new Am_Grid_Field_Decorator_Link($userUrl->userUrl('{user_id}'), '_top'));
     $grid->addField('name_f', ___('First Name'));
     $grid->addField('name_l', ___('Last Name'));
     $grid->addField(new Am_Grid_Field_Enum('type', ___('Payout Method')))->setTranslations(Am_Aff_PayoutMethod::getAvailableOptions());
     $grid->addField('amount', ___('Amount'))->setGetFunction(array($this, 'getAmount'));
     //        $grid->addField('receipt_id', ___('Receipt Id'));
     $grid->addField(new Am_Grid_Field_Enum('is_paid', ___('Is Paid?')))->setTranslations(array(0 => ___('No'), 1 => ___('Yes')));
     $grid->addField(new Am_Grid_Field_Expandable('_details', ___('Payout Details')))->setGetFunction(array($this, 'getPayoutDetails'));
     $grid->actionsClear();
     //$grid->actionAdd(new Am_Grid_Action_LiveEdit('receipt_id'));
     $grid->actionAdd(new Am_Grid_Action_PayoutMarkPaid('mark_paid', ___('Mark Paid')));
     $grid->actionAdd(new Am_Grid_Action_PayoutMarkNotPaid('mark_notpaid', ___('Mark NOT Paid')));
     $grid->addCallback(Am_Grid_ReadOnly::CB_TR_ATTRIBS, array($this, 'detailCbGetTrAttribs'));
     $grid->runWithLayout();
 }
Ejemplo n.º 19
0
 public function batchProcess(&$context, Am_BatchProcessor $batch)
 {
     @(list($step, $start) = explode('-', $context));
     $pageCount = 30;
     switch ($step) {
         case 0:
             $q = new Am_Query($this->getTable());
             $count = 0;
             $updated = array();
             foreach ($q->selectPageRecords($start / $pageCount, $pageCount) as $r) {
                 $count++;
                 if (!$this->canUpdate($r)) {
                     continue;
                 }
                 /* @var $r Am_Record */
                 $user = $this->_table->findAmember($r);
                 if (!$user) {
                     // no such records in aMember, disable user record ?
                     $this->_table->disableRecord($r, $this->calculateGroups(null, true));
                 } else {
                     $updated[] = $user->user_id;
                     $this->getTable()->updateFromAmember($r, $user, $this->calculateGroups($user));
                     $pass = $this->getDi()->savedPassTable->findSaved($user, $this->getPasswordFormat());
                     if ($pass) {
                         $this->getTable()->updatePassword($r, $pass);
                     }
                 }
             }
             if (!$count) {
                 $step++;
                 $context = "{$step}-0";
             } else {
                 $this->getDi()->store->appendBlob($this->_batchStoreId, implode(",", $updated) . ",");
                 $start += $count;
                 $context = "{$step}-{$start}";
             }
             break;
         case 1:
             /// now select aMember users not exists in plugin db
             $q = new Am_Query(new UserTable());
             $q->addWhere("(select not find_in_set(t.user_id, s.`blob_value`) \n                              from ?_store s \n                              where s.name=?)", $this->_batchStoreId);
             $count = 0;
             $records = $q->selectPageRecords($start / $pageCount, $pageCount);
             foreach ($records as $user) {
                 $count++;
                 /* @var $user User */
                 $this->onSubscriptionChanged(new Am_Event_SubscriptionChanged($user, array(), array()));
             }
             if (!$count) {
                 $context = null;
                 return true;
             }
             $start += $count;
             $context = "{$step}-{$start}";
             break;
         default:
             throw new Am_Exception_InputError("Wrong step");
     }
 }
 protected function createAdapter()
 {
     $ds = new Am_Query(Am_Di::getInstance()->emailTemplateTable);
     $ds->addWhere('name IN (?a)', array(EmailTemplate::AUTORESPONDER, EmailTemplate::EXPIRE));
     return $ds;
 }
Ejemplo n.º 21
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;
 }
 function createInvoicesPage($page)
 {
     $query = new Am_Query($this->getDi()->invoiceTable);
     if ($page == 'not-approved') {
         $query->addWhere('is_confirmed<1');
     }
     $query->leftJoin('?_user', 'm', 'm.user_id=t.user_id')->addField("(SELECT GROUP_CONCAT(item_title SEPARATOR ', ') FROM ?_invoice_item WHERE invoice_id=t.invoice_id)", 'items')->addField('m.login', 'login')->addField('m.email', 'email')->addField('m.street', 'street')->addField('m.street2', 'street2')->addField('m.city', 'city')->addField('m.state', 'state')->addField('m.country', 'country')->addField('m.phone', 'phone')->addField('m.zip', 'zip')->addField("concat(m.name_f,' ',m.name_l)", 'name')->addField('m.name_f')->addField('m.name_l')->addField('DATE(tm_started)', 'date');
     //Additional Fields
     foreach ($this->getDi()->userTable->customFields()->getAll() as $field) {
         if (isset($field->from_config) && $field->from_config) {
             if ($field->sql) {
                 $query->addField('m.' . $field->name, $field->name);
             }
         }
     }
     $query->setOrder("invoice_id", "desc");
     $grid = new Am_Grid_Editable('_invoice', ___('Invoices'), $query, $this->_request, $this->view);
     $grid->setRecordTitle(array($this, 'getInvoiceRecordTitle'));
     $grid->actionsClear();
     $grid->actionAdd(new Am_Grid_Action_Delete())->setTarget('_top');
     $grid->addField(new Am_Grid_Field_Date('tm_added', ___('Added')));
     $grid->addField('invoice_id', ___('Invoice'))->setGetFunction(array($this, '_getInvoiceNum'))->addDecorator(new Am_Grid_Field_Decorator_Link('admin-user-payments/index/user_id/{user_id}#invoice-{invoice_id}', '_top'));
     $grid->addField('status', ___('Status'))->setRenderFunction(array($this, 'renderInvoiceStatus'));
     $grid->addField('paysys_id', ___('Payment System'));
     $grid->addField('_total', ___('Billing Terms'), false)->setGetFunction(array($this, 'getInvoiceTotal'));
     $grid->addField(new Am_Grid_Field_Date('rebill_date', ___('Rebill Date')))->setFormatDate();
     $grid->addField('items', ___('Items'));
     $grid->addField('login', ___('Username'))->addDecorator(new Am_Grid_Field_Decorator_Link('admin-users?_u_a=edit&_u_b={THIS_URL}&_u_id={user_id}', '_top'));
     $grid->addField('name', ___('Name'));
     $filter = new Am_Grid_Filter_Invoices();
     $grid->setFilter($filter);
     $stateTitleField = new Am_Grid_Field('state_title', ___('State Title'));
     $stateTitleField->setGetFunction(array($this, 'getStateTitle'));
     $countryTitleField = new Am_Grid_Field('country_title', ___('Country Title'));
     $countryTitleField->setGetFunction(array($this, 'getCountryTitle'));
     $termsField = new Am_Grid_Field('_total', ___('Billing Terms'));
     $termsField->setGetFunction(array($this, 'getInvoiceTotal'));
     $action = new Am_Grid_Action_Export();
     $action->addField(new Am_Grid_Field('tm_started', ___('Date/Time')))->addField(new Am_Grid_Field('date', ___('Date')))->addField(new Am_Grid_Field('rebill_date', ___('Rebill Date')))->addField(new Am_Grid_Field('invoice_id', ___('Invoice (Internal Id)')))->addField(new Am_Grid_Field('public_id', ___('Invoice (Public Id)')))->addField(new Am_Grid_Field('status', ___('Status')))->addField($termsField)->addField(new Am_Grid_Field('paysys_id', ___('Payment System')))->addField(new Am_Grid_Field('first_total', ___('First Total')))->addField(new Am_Grid_Field('first_tax', ___('First Tax')))->addField(new Am_Grid_Field('email', ___('Email')))->addField(new Am_Grid_Field('login', ___('Username')))->addField(new Am_Grid_Field('name', ___('Name')))->addField(new Am_Grid_Field('name_f', ___('First Name')))->addField(new Am_Grid_Field('name_l', ___('Last Name')))->addField(new Am_Grid_Field('street', ___('Street')))->addField(new Am_Grid_Field('street2', ___('Street2')))->addField(new Am_Grid_Field('city', ___('City')))->addField(new Am_Grid_Field('state', ___('State')))->addField($stateTitleField)->addField(new Am_Grid_Field('country', ___('Country')))->addField($countryTitleField)->addField(new Am_Grid_Field('phone', ___('Phone')))->addField(new Am_Grid_Field('zip', ___('Zip Code')))->addField(new Am_Grid_Field('item_title', ___('Product Title')))->addField(new Am_Grid_Field('coupon_code', ___('Coupon')));
     //Additional Fields
     foreach ($this->getDi()->userTable->customFields()->getAll() as $field) {
         if (isset($field->from_config) && $field->from_config) {
             if ($field->sql) {
                 $action->addField(new Am_Grid_Field($field->name, $field->title));
             }
         }
     }
     $action->setGetDataSourceFunc(array($this, 'getExportDs'));
     $grid->actionAdd($action);
     if ($this->getDi()->config->get('manually_approve_invoice')) {
         $grid->actionAdd(new Am_Grid_Action_Group_Callback('approve', ___("Approve"), array($this, 'approveInvoice')));
     }
     return $grid;
 }
Ejemplo n.º 23
0
 protected function applyQueryInterval(Am_Query $q)
 {
     if (!is_null($this->start) && !is_null($this->stop)) {
         $pointField = $this->getPointField();
         $q->addWhere("{$pointField} BETWEEN ? AND ?", $this->start, $this->stop);
     }
 }
Ejemplo n.º 24
0
 function createGrid()
 {
     $ds = new Am_Query($this->getDi()->savedReportTable);
     $ds->addWhere('admin_id=?', $this->getDi()->authAdmin->getUserId());
     $grid = new Am_Grid_Editable('_report', ___('Saved Reports'), $ds, $this->_request, $this->view);
     $grid->setPermissionId(Am_Auth_Admin::PERM_REPORT);
     $grid->addField(new Am_Grid_Field('title', ___('Title'), true));
     $grid->actionsClear();
     $grid->actionAdd(new Am_Grid_Action_LiveEdit('title'));
     $grid->actionAdd(new Am_Grid_Action_Url('run-report', ___('Run Report'), '__ROOT__/default/admin-reports/p/saved/runsaved/report_id/__ID__'))->setTarget('_top');
     $grid->actionAdd(new Am_Grid_Action_Delete());
     $grid->addCallback(Am_Grid_ReadOnly::CB_RENDER_TABLE, array($this, 'onRenderGridContent'));
     return $grid;
 }
Ejemplo n.º 25
0
 protected function createDs()
 {
     $query = new Am_Query(Am_Di::getInstance()->affBannerTable);
     $query->addWhere('type=?', $this->affBannerType);
     $query->setOrder('sort_order');
     return $query;
 }
Ejemplo n.º 26
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');
 }
Ejemplo n.º 27
0
 /**
  * return query object with category filter applied if specified
  * if parameters === 0, it selects products not assigned to any categories
  * if parameter === null, it selects products regardless of categories
  * @param int $product_category_id
  * @param bool $include_hidden  Include products from hidden categories.
  * @return Am_Query
  */
 function createQuery($product_category_id = null, $include_hidden = true)
 {
     $q = new Am_Query($this, 'p');
     $q->addOrderRaw('0+p.sort_order')->addOrder('title');
     $q->addWhere('p.is_disabled=0');
     if ($product_category_id > 0) {
         $q->innerJoin('?_product_product_category', 'ppc', 'ppc.product_id = p.product_id AND ppc.product_category_id=' . intval($product_category_id));
     } elseif ((string) $product_category_id === '0') {
         $q->leftJoin('?_product_product_category', 'ppc', 'ppc.product_id = p.product_id')->addHaving('count(ppc.product_category_id)=0');
     } elseif (!$include_hidden) {
         $q->leftJoin('?_product_product_category', 'ppc', 'ppc.product_id = p.product_id')->leftJoin('?_product_category', 'pc', 'pc.product_category_id = ppc.product_category_id')->addHaving('sum(if(pc.code>"", 1, 0)) =0');
     }
     return $q;
 }
Ejemplo n.º 28
0
 public function autocompleteAction()
 {
     $term = '%' . $this->getParam('term') . '%';
     if (!$term) {
         return null;
     }
     $q = new Am_Query($this->getDi()->userTable);
     $q->addWhere('(t.login LIKE ?) OR (t.email LIKE ?) OR (t.name_f LIKE ?) OR (t.name_l LIKE ?)', $term, $term, $term, $term);
     $this->getDi()->hook->call(Am_Event::ADMIN_USERS_AUTOCOMPLETE, array('query' => $q, 'term' => $term));
     $qq = $q->query(0, 10);
     $ret = array();
     while ($r = $this->getDi()->db->fetchRow($qq)) {
         $ret[] = array('label' => sprintf('%s / "%s" <%s>', $r['login'], $r['name_f'] . ' ' . $r['name_l'], $r['email']), 'value' => $r['login']);
     }
     if ($q->getFoundRows() > 10) {
         $ret[] = array('label' => sprintf("... %d more rows found ...", $q->getFoundRows() - 10), 'value' => null);
     }
     $this->ajaxResponse($ret);
 }
Ejemplo n.º 29
0
 public function createGrid()
 {
     $ds = new Am_Query($this->getDi()->productTable);
     $ds->addWhere('t.is_archived = ?', 0);
     $ds->addOrder('sort_order')->addOrder('title');
     $grid = new Am_Grid_Editable('_product', ___("Products"), $ds, $this->_request, $this->view);
     $grid->setRecordTitle(___('Product'));
     $grid->actionAdd(new Am_Grid_Action_Group_ProductEnable(false));
     $grid->actionAdd(new Am_Grid_Action_Group_ProductEnable(true));
     $grid->actionAdd(new Am_Grid_Action_Group_ProductAssignCategory(false));
     $grid->actionAdd(new Am_Grid_Action_Group_ProductAssignCategory(true));
     $grid->actionAdd(new Am_Grid_Action_Group_ChangeOrder())->setTitle(___('Change Order'));
     $grid->actionAdd(new Am_Grid_Action_Group_Archive(true));
     $grid->addField(new Am_Grid_Field('product_id', '#', true, '', null, '1%'));
     $grid->addField(new Am_Grid_Field('title', ___('Title'), true, '', null, '50%'))->setGetFunction(function ($r, $g, $f) {
         return strip_tags($r->{$f});
     });
     if ($this->getDi()->db->selectCell("SELECT COUNT(*) FROM ?_product_product_category")) {
         $grid->addField(new Am_Grid_Field('pgroup', ___('Product Categories'), false))->setRenderFunction(array($this, 'renderPGroup'));
     }
     $grid->addField(new Am_Grid_Field('terms', ___('Billing Terms'), false))->setRenderFunction(array($this, 'renderTerms'));
     if ($this->getDi()->plugins_tax->getEnabled()) {
         $grid->addField(new Am_Grid_Field('tax_group', ___('Tax')));
         $grid->actionAdd(new Am_Grid_Action_LiveCheckbox('tax_group'))->setValue(IProduct::ALL_TAX)->setEmptyValue(IProduct::NO_TAX);
     }
     $grid->actionGet('edit')->setTarget('_top');
     $grid->actionDelete('delete');
     $grid->actionAdd(new Am_Grid_Action_Archive('delete', 1));
     $grid->actionAdd(new Am_Grid_Action_LiveEdit('title'));
     $grid->actionAdd(new Am_Grid_Action_Sort_Product());
     $grid->setFormValueCallback('start_date', array('RECORD', 'getStartDate'), array('RECORD', 'setStartDate'));
     $grid->setFormValueCallback('require_other', array('RECORD', 'unserializeList'), array('RECORD', 'serializeList'));
     $grid->setFormValueCallback('prevent_if_other', array('RECORD', 'unserializeList'), array('RECORD', 'serializeList'));
     $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_ReadOnly::CB_TR_ATTRIBS, array($this, 'getTrAttribs'));
     $grid->setForm(array($this, 'createForm'));
     $grid->setFilter(new Am_Grid_Filter_Product());
     $grid->setEventId('gridProduct');
     $grid->actionAdd(new Am_Grid_Action_Url('categories', ___('Edit Categories'), REL_ROOT_URL . '/admin-product-categories'))->setType(Am_Grid_Action_Abstract::NORECORD)->setTarget('_top')->setCssClass('link')->setPrivilegeId('edit');
     $grid->actionAdd(new Am_Grid_Action_Url('upgrades', ___('Manage Product Upgrade Paths'), REL_ROOT_URL . '/admin-products/upgrades'))->setType(Am_Grid_Action_Abstract::NORECORD)->setTarget('_top')->setCssClass('link')->setPrivilegeId('edit');
     $grid->actionAdd(new Am_Grid_Action_CopyProduct())->setTarget('_top');
     $ar_count = $this->getArchivedCount(1);
     if ($ar_count) {
         $grid->actionAdd(new Am_Grid_Action_Url('archived', ___("Archived products") . " ({$ar_count})", REL_ROOT_URL . '/admin-products/archived'))->setType(Am_Grid_Action_Abstract::NORECORD)->setTarget('_top')->setCssClass('link')->setPrivilegeId('browse');
     }
     return $grid;
 }
Ejemplo n.º 30
0
 /** @return Am_Query */
 public function getQuery()
 {
     $q = new Am_Query(new AffCommissionTable(), 'cl');
     $q->clearFields();
     $q->addField("COUNT(DISTINCT invoice_payment_id) AS sales");
     if ($this->aff_id) {
         $q->addWhere("aff_id = ?d", $this->aff_id);
     }
     return $q;
 }