t('Update user balance'), '#description' => t('Update user balance if any of their products is sold.'), '#class' => 'user balance', '#trigger' => 'uc_checkout_complete', '#status' => 1, '#actions' => array( array( '#name' => 'attiks_minifabriek_update_user_balance', '#title' => t('Update user balance.'), '#argument_map' => array( 'order' => 'order', ), ), ), ); $configurations['attiks_minifabriek_simplenews'] = array( '#title' => t('Subscribe user to newsletter.'), '#description' => t('Subscribe user to newsletter.'), '#class' => 'simplenews', '#trigger' => 'uc_checkout_complete', '#status' => 1, '#actions' => array( array( '#name' => 'attiks_minifabriek_simplenews_subscribe', '#title' => t('Subscribe user to newsletter.'), '#argument_map' => array( 'order' => 'order', ), ), ), ); return $configurations; } /** * Implementation of hook_ca_action(). */ function attiks_minifabriek_ca_action() { $actions['attiks_minifabriek_update_user_balance'] = array( '#title' => t('Update user balance on checkout.'), '#category' => t('user balance'), '#callback' => 'attiks_minifabriek_action_update_user_balance', '#arguments' => array( 'order' => array( '#entity' => 'uc_order', '#title' => t('Order'), ), ), ); $actions['attiks_minifabriek_simplenews_subscribe'] = array( '#title' => t('Subscribe user to newsletter.'), '#category' => t('Simplenews'), '#callback' => 'attiks_minifabriek_action_simplenews_subscribe', '#arguments' => array( 'order' => array( '#entity' => 'uc_order', '#title' => t('Order'), ), ), ); return $actions; } /** * attiks_minifabriek_action_update_user_balance * */ function attiks_minifabriek_action_update_user_balance($order, $settings) { $som = array(); foreach ($order->products as $p) { // Load ontwerper $result = db_query('select field_ontwerper_uid from {content_type_product} where nid = ' . $p->nid); $ontwerper = db_fetch_object($result); if (isset($ontwerper->field_ontwerper_uid)) { $profile = content_profile_load('ontwerper', $ontwerper->field_ontwerper_uid); $result = db_query('select field_commissie_value from {content_type_ontwerper} where nid = ' . $profile->nid); $commissie = db_fetch_object($result); $commissie = $commissie->field_commissie_value; $som[$ontwerper->field_ontwerper_uid] += $commissie * $p->qty * $p->price; } } foreach ($som as $o => $s) { if ($s > 0) { balance_tracker_credit_account ($o, $s, 'Commissie op bestelling ' . $order->order_id); } } } /** * attiks_minifabriek_action_simplenews_subscribe * */ function attiks_minifabriek_action_simplenews_subscribe($order, $settings) { $newsletter_tid = $settings['simplenews']; if (isset($order->primary_email) && isset($newsletter_tid)) { $mail = $order->primary_email; // Get current subscriptions if any. $account = (object) array('mail' => $mail); $subscription = simplenews_get_subscription($account); if ($subscription->snid == 0) { foreach ($newsletter_tid as $key => $value) { simplenews_subscribe_user($mail, $key, FALSE); } } } } function attiks_minifabriek_action_simplenews_subscribe_form($form_state, $settings = array(), $arguments = array()) { $form['variables'] = $arguments; $options = array(); foreach( taxonomy_get_tree(variable_get('simplenews_vid', '')) as $newsletter) { $options[$newsletter->tid] = $newsletter->name; } $form['simplenews'] = array( '#title' => t('Select newsletter(s)'), '#type' => 'checkboxes', '#required' => 1, '#multiple' => TRUE, '#size' => sizeof($options), '#options' => $options, '#default_value' => isset($settings['simplenews']) ? $settings['simplenews'] : '', ); return $form; } function attiks_minifabriek_load_newsletters() { foreach( taxonomy_get_tree(variable_get('simplenews_vid', '')) as $newsletter) { $options[$newsletter->tid] = $newsletter->name; } return $options; }