public function handle_hook($hook) { switch ($hook) { case "invoice_paid": $foo = func_get_args(); $invoice_id = (int) $foo[1]; if ($invoice_id > 0) { // see if any subscriptions match this invoice. //module_cache::clear_cache(); $invoice = module_invoice::get_invoice($invoice_id); $subscription = get_single('subscription_history', 'invoice_id', $invoice_id); if ($subscription) { // mark subscription as paid and move onto the next date. update_insert('subscription_history_id', $subscription['subscription_history_id'], 'subscription_history', array('paid_date' => $invoice['date_paid'])); $subscription_owner = get_single('subscription_owner', 'subscription_owner_id', $subscription['subscription_owner_id']); $this->update_next_due_date($subscription['subscription_id'], $subscription_owner['owner_table'], $subscription_owner['owner_id']); /*if($subscription['customer_id']){ $this->update_next_due_date($subscription['subscription_id'],$subscription['customer_id'],true); }else{ $this->update_next_due_date($subscription['subscription_id'],$subscription['member_id'],false); }*/ } } break; case "home_alerts": $alerts = array(); if (module_config::c('subscription_alerts', 1) && self::can_i('view', 'Subscriptions')) { // find renewals due in a certain time. $time = date('Y-m-d', strtotime('+' . module_config::c('alert_days_in_future', 5) . ' days')); $key = _l('Subscription Due'); if (class_exists('module_dashboard', false)) { module_dashboard::register_group($key, array('columns' => array('full_link' => _l('Name'), 'type' => _l('Type'), 'subscription_name' => _l('Subscription'), 'automatic_renew' => _l('Automatic Renew'), 'automatic_email' => _l('Automatic Email'), 'next_due_date' => _l('Next Due Date'), 'days' => _l('Day Count')))); } $db_fields = get_fields('subscription'); $sql = "SELECT s.*, so.* "; if (isset($db_fields['invoice_prior_days'])) { $sql .= ", DATE_SUB(so.next_due_date, INTERVAL `invoice_prior_days` DAY) AS next_generation_date "; } $sql .= " FROM `" . _DB_PREFIX . "subscription_owner` so "; $sql .= " LEFT JOIN `" . _DB_PREFIX . "subscription` s USING (subscription_id)"; if (isset($db_fields['invoice_prior_days'])) { $sql .= " WHERE DATE_SUB(so.next_due_date, INTERVAL `invoice_prior_days` DAY) <= '" . $time . "'"; } else { $sql .= " WHERE so.next_due_date <= '" . $time . "'"; } $sql .= " AND so.`deleted` = 0"; // echo $sql; $items = qa($sql); foreach ($items as $item) { // echo '<hr>';print_r($item);echo '<hr>'; $alert_res = process_alert(isset($item['next_generation_date']) ? $item['next_generation_date'] : $item['next_due_date'], $key); if ($alert_res) { switch ($item['owner_table']) { case 'member': $permission_check = module_member::get_member($item['owner_id']); if (!$permission_check || $permission_check['member_id'] != $item['owner_id'] || !module_member::can_i('view', 'Members')) { continue 2; } $alert_res['full_link'] = module_member::link_open($item['owner_id'], true); break; case 'website': $permission_check = module_website::get_website($item['owner_id']); if (!$permission_check || $permission_check['website_id'] != $item['owner_id'] || !module_website::can_i('view', 'Websites')) { continue 2; } $alert_res['full_link'] = module_website::link_open($item['owner_id'], true); break; case 'customer': $permission_check = module_customer::get_customer($item['owner_id']); if (!$permission_check || $permission_check['customer_id'] != $item['owner_id'] || !module_customer::can_i('view', 'Customers')) { continue 2; } $alert_res['full_link'] = module_customer::link_open($item['owner_id'], true); break; } $alert_res['name'] = $item['name']; $alert_res['link'] = '#'; if (preg_match('@href="([^"]+)"@', $alert_res['full_link'], $link_match)) { $alert_res['link'] = $link_match[1]; } $alert_res['type'] = $item['owner_table']; $alert_res['subscription_name'] = module_subscription::link_open($item['subscription_id'], true); $alert_res['next_due_date'] = isset($item['next_generation_date']) ? print_date($item['next_generation_date']) : print_date($item['next_due_date']); $alert_res['automatic_renew'] = $item['automatic_renew'] ? _l('Yes') : _l('No'); $alert_res['automatic_email'] = $item['automatic_email'] ? _l('Yes') : _l('No'); $alerts[] = $alert_res; } } } return $alerts; break; } }
if (module_member::can_i('create', 'Members')) { $header['button'] = array(array('url' => module_member::link_open('new'), 'title' => _l('Create New Member'), 'type' => 'add')); } if (class_exists('module_import_export', false) && module_member::can_i('view', 'Import Members')) { $link = module_import_export::import_link(array('callback' => 'module_member::handle_import', 'name' => 'Members', 'return_url' => $_SERVER['REQUEST_URI'], 'group' => array('member', 'newsletter_subscription'), 'fields' => array('Member ID' => 'member_id', 'First Name' => 'first_name', 'Last Name' => 'last_name', 'Business Name' => 'business', 'Email' => 'email', 'Phone' => 'phone', 'Mobile' => 'mobile'), 'extra' => array('owner_table' => 'member', 'owner_id' => 'member_id'))); $header['button'][] = array('url' => $link, 'title' => 'Import members', 'type' => 'add'); } print_heading($header); ?> <form action="" method="post"> <?php $search_bar = array('elements' => array('name' => array('title' => _l('Names, Phone or Email:'), 'field' => array('type' => 'text', 'name' => 'search[generic]', 'value' => isset($search['generic']) ? $search['generic'] : '')))); if (class_exists('module_group', false) && module_member::can_i('view', 'Member Groups')) { $search_bar['elements']['group'] = array('title' => _l('Group:'), 'field' => array('type' => 'select', 'name' => 'search[group_id]', 'value' => isset($search['group_id']) ? $search['group_id'] : '', 'options' => module_group::get_groups('member'), 'options_array_id' => 'name')); } if (class_exists('module_newsletter', false)) { $search_bar['elements']['group'] = array('title' => _l('Newsletter:'), 'field' => array('type' => 'select', 'name' => 'search[group_id2]', 'value' => isset($search['group_id2']) ? $search['group_id2'] : '', 'options' => module_group::get_groups('newsletter_subscription'), 'options_array_id' => 'name')); } echo module_form::search_bar($search_bar); $table_manager = module_theme::new_table_manager(); $columns = array(); $columns['member_name'] = array('title' => 'Member Name', 'callback' => function ($member) { echo module_member::link_open($member['member_id'], true); }, 'cell_class' => 'row_action'); $columns['member_business'] = array('title' => 'Business', 'callback' => function ($member) { echo htmlspecialchars($member['business']); }); $columns['member_phone'] = array('title' => 'Phone', 'callback' => function ($member) {