| 1 |
<?php |
<?php |
| 2 |
|
|
| 3 |
// $Id$ |
// $Id: fee.module,v 1.1 2007/06/10 15:58:43 kbahey Exp $ |
| 4 |
|
|
| 5 |
// Variables |
// Variables |
| 6 |
define('FEE_EMAIL', 'fee_email'); |
define('FEE_EMAIL', 'fee_email'); |
| 120 |
function fee_check_fee() { |
function fee_check_fee() { |
| 121 |
global $user; |
global $user; |
| 122 |
|
|
| 123 |
$num_rows = db_result(db_query("SELECT COUNT(*) FROM {fees} WHERE uid = %d", $user->uid)); |
if ($user->uid) { |
| 124 |
if ($user->uid && !$num_rows) { |
if (fee_check_fee_uid($user->uid)) { |
| 125 |
return FALSE; |
return TRUE; |
| 126 |
|
} |
| 127 |
|
} |
| 128 |
|
|
| 129 |
|
if ($user->uid == 0) { |
| 130 |
|
return TRUE; |
| 131 |
|
} |
| 132 |
|
|
| 133 |
|
return FALSE; |
| 134 |
|
} |
| 135 |
|
|
| 136 |
|
function fee_check_fee_uid($uid) { |
| 137 |
|
$num_rows = db_result(db_query("SELECT COUNT(*) FROM {fees} WHERE uid = %d", $uid)); |
| 138 |
|
if ($num_rows) { |
| 139 |
|
return TRUE; |
| 140 |
} |
} |
| 141 |
return TRUE; |
return FALSE; |
| 142 |
} |
} |
| 143 |
|
|
| 144 |
function fee_menu($may_cache) { |
function fee_menu($may_cache) { |
| 365 |
|
|
| 366 |
switch($mode) { |
switch($mode) { |
| 367 |
case 'add': |
case 'add': |
| 368 |
db_query("INSERT INTO {fees} (id, uid, time_paid, method_id, currency, amount, mail, name) |
db_query("INSERT INTO {fees} (id, uid, time_paid, method_id, currency, amount, net_amount, mail, name) |
| 369 |
VALUES (0, %d, %d, %d, '%s', %f, '%s', '%s')", |
VALUES (0, %d, %d, %d, '%s', %f, %f, '%s', '%s')", |
| 370 |
$form['uid'], |
$form['uid'], |
| 371 |
strtotime($form['time_paid']), |
strtotime($form['time_paid']), |
| 372 |
$form['method'], |
$form['method'], |
| 373 |
$form['currency'], |
$form['currency_code'], |
| 374 |
$form['amount'], |
$form['amount'], |
| 375 |
|
$form['net_amount'], |
| 376 |
$form['mail'], |
$form['mail'], |
| 377 |
$form['name']); |
$form['name']); |
| 378 |
drupal_set_message(t('The fee has been added.')); |
drupal_set_message(t('The fee has been added.')); |
| 382 |
|
|
| 383 |
case 'edit': |
case 'edit': |
| 384 |
db_query("UPDATE {fees} |
db_query("UPDATE {fees} |
| 385 |
SET uid = %d, time_paid = %d, method_id = %d, currency = '%s', amount = %f, mail = '%s', name = '%s' |
SET uid = %d, time_paid = %d, method_id = %d, currency = '%s', amount = %f, net_amount = %f, mail = '%s', name = '%s' |
| 386 |
WHERE id = %d", |
WHERE id = %d", |
| 387 |
$form['uid'], |
$form['uid'], |
| 388 |
strtotime($form['time_paid']), |
strtotime($form['time_paid']), |
| 389 |
$form['method'], |
$form['method'], |
| 390 |
$form['currency'], |
$form['currency_code'], |
| 391 |
$form['amount'], |
$form['amount'], |
| 392 |
|
$form['net_amount'], |
| 393 |
$form['mail'], |
$form['mail'], |
| 394 |
$form['name'], |
$form['name'], |
| 395 |
$form['id']); |
$form['id']); |
| 673 |
} |
} |
| 674 |
} |
} |
| 675 |
|
|
| 676 |
|
function fee_load_fee($uid) { |
| 677 |
|
$result = db_query("SELECT * FROM {fees} WHERE uid = %d", $uid); |
| 678 |
|
$row = db_fetch_object($result); |
| 679 |
|
return $row; |
| 680 |
|
} |
| 681 |
|
|
| 682 |
|
function fee_views_tables() { |
| 683 |
|
$tables['fees'] = array( |
| 684 |
|
'name' => 'fees', |
| 685 |
|
'join' => array( |
| 686 |
|
'type' => 'left', |
| 687 |
|
'left' => array( |
| 688 |
|
'table' => 'node', |
| 689 |
|
'field' => 'uid' |
| 690 |
|
), |
| 691 |
|
'right' => array( |
| 692 |
|
'table' => 'fees', |
| 693 |
|
'field' => 'uid' |
| 694 |
|
), |
| 695 |
|
), |
| 696 |
|
'fields' => array( |
| 697 |
|
'uid' => array( |
| 698 |
|
'name' => t('Fee: Paid'), |
| 699 |
|
'handler' => array( |
| 700 |
|
'fee_views_handler_field_paid' => t('Paid?'), |
| 701 |
|
'sortable' => true, |
| 702 |
|
), |
| 703 |
|
), |
| 704 |
|
'time_paid' => array( |
| 705 |
|
'name' => t('Fee: Time Paid'), |
| 706 |
|
'handler' => array( |
| 707 |
|
'fee_views_handler_field_time_paid' => t('Time Paid'), |
| 708 |
|
), |
| 709 |
|
), |
| 710 |
|
'method_id' => array( |
| 711 |
|
'name' => t('Fee: Method'), |
| 712 |
|
'handler' => array( |
| 713 |
|
'fee_views_handler_field_method' => t('Method'), |
| 714 |
|
), |
| 715 |
|
), |
| 716 |
|
'currency' => array( |
| 717 |
|
'name' => t('Fee: Currency'), |
| 718 |
|
'handler' => array( |
| 719 |
|
'fee_views_handler_field_currency' => t('Currency'), |
| 720 |
|
), |
| 721 |
|
), |
| 722 |
|
'amount' => array( |
| 723 |
|
'name' => t('Fee: Gross Amount'), |
| 724 |
|
'handler' => array( |
| 725 |
|
'fee_views_handler_field_amount' => t('Gross Amount'), |
| 726 |
|
), |
| 727 |
|
), |
| 728 |
|
'net_amount' => array( |
| 729 |
|
'name' => t('Fee: Net Amount'), |
| 730 |
|
'handler' => array( |
| 731 |
|
'fee_views_handler_field_net_amount' => t('Net Amount'), |
| 732 |
|
), |
| 733 |
|
), |
| 734 |
|
), |
| 735 |
|
'filters' => array( |
| 736 |
|
'uid' => array( |
| 737 |
|
'name' => t('Fee: Paid'), |
| 738 |
|
'list' => 'views_handler_filter_paid_list', |
| 739 |
|
'handler' => 'views_handler_filter_paid', |
| 740 |
|
'operator' => 'views_handler_operator_or', |
| 741 |
|
), |
| 742 |
|
), |
| 743 |
|
); |
| 744 |
|
return $tables; |
| 745 |
|
} |
| 746 |
|
|
| 747 |
|
function fee_views_handler_field_paid($fieldinfo, $fielddata, $value, $data) { |
| 748 |
|
$node = node_load(array('nid' => $data->nid)); |
| 749 |
|
if (fee_check_fee_uid($node->uid)) { |
| 750 |
|
$result = t('Yes'); |
| 751 |
|
} |
| 752 |
|
else { |
| 753 |
|
$result = t('No'); |
| 754 |
|
} |
| 755 |
|
|
| 756 |
|
return $result; |
| 757 |
|
} |
| 758 |
|
|
| 759 |
|
function fee_views_handler_field_time_paid($fieldinfo, $fielddata, $value, $data) { |
| 760 |
|
$node = node_load(array('nid' => $data->nid)); |
| 761 |
|
$fee = fee_load_fee($node->uid); |
| 762 |
|
|
| 763 |
|
return format_date($fee->time_paid); |
| 764 |
|
} |
| 765 |
|
|
| 766 |
|
function fee_views_handler_field_method($fieldinfo, $fielddata, $value, $data) { |
| 767 |
|
$node = node_load(array('nid' => $data->nid)); |
| 768 |
|
if ($node->nid) { |
| 769 |
|
$fee = fee_load_fee($node->uid); |
| 770 |
|
$methods = fee_get_methods(); |
| 771 |
|
} |
| 772 |
|
return $methods[$fee->method_id]; |
| 773 |
|
} |
| 774 |
|
|
| 775 |
|
function fee_views_handler_field_currency($fieldinfo, $fielddata, $value, $data) { |
| 776 |
|
$node = node_load(array('nid' => $data->nid)); |
| 777 |
|
if ($node->nid) { |
| 778 |
|
$fee = fee_load_fee($node->uid); |
| 779 |
|
|
| 780 |
|
$currency = fee_get_currency(); |
| 781 |
|
} |
| 782 |
|
return $currency[$fee->currency]; |
| 783 |
|
} |
| 784 |
|
|
| 785 |
|
function fee_views_handler_field_amount($fieldinfo, $fielddata, $value, $data) { |
| 786 |
|
$node = node_load(array('nid' => $data->nid)); |
| 787 |
|
if ($node->nid) { |
| 788 |
|
$fee = fee_load_fee($node->uid); |
| 789 |
|
} |
| 790 |
|
if ($fee->amount) { |
| 791 |
|
$ret = number_format($fee->amount, 2); |
| 792 |
|
} |
| 793 |
|
else { |
| 794 |
|
$ret = NULL; |
| 795 |
|
} |
| 796 |
|
return $ret; |
| 797 |
|
} |
| 798 |
|
|
| 799 |
|
function fee_views_handler_field_net_amount($fieldinfo, $fielddata, $value, $data) { |
| 800 |
|
$node = node_load(array('nid' => $data->nid)); |
| 801 |
|
if ($node->nid) { |
| 802 |
|
$fee = fee_load_fee($node->uid); |
| 803 |
|
} |
| 804 |
|
if ($fee->net_amount) { |
| 805 |
|
$ret = number_format($fee->net_amount, 2); |
| 806 |
|
} |
| 807 |
|
else { |
| 808 |
|
$ret = NULL; |
| 809 |
|
} |
| 810 |
|
return $ret; |
| 811 |
|
} |
| 812 |
|
|
| 813 |
|
function views_handler_filter_paid_list($op, $filter) { |
| 814 |
|
return array(t('Yes'), t('No')); |
| 815 |
|
} |
| 816 |
|
|
| 817 |
|
function views_handler_filter_paid($op, $filter, $filterinfo, &$query) { |
| 818 |
|
$table = $filterinfo['table']; |
| 819 |
|
$column = $filterinfo['field']; |
| 820 |
|
|
| 821 |
|
$field = "$table.$column"; |
| 822 |
|
$query->ensure_table($table); |
| 823 |
|
|
| 824 |
|
$where = array(); |
| 825 |
|
$args = array(); |
| 826 |
|
|
| 827 |
|
$operator = "="; |
| 828 |
|
|
| 829 |
|
if( !is_array($filter['value']) ) $filter['value'] = array($filter['value']); |
| 830 |
|
|
| 831 |
|
switch($filter['value'][0]) { |
| 832 |
|
case 0: |
| 833 |
|
$where[] = "$field > 0"; |
| 834 |
|
break; |
| 835 |
|
case 1: |
| 836 |
|
$where[] = "$field IS NULL"; |
| 837 |
|
break; |
| 838 |
|
} |
| 839 |
|
|
| 840 |
|
$operator = ($filter['operator'] == 'NOR') ? 'AND' : $filter['operator']; |
| 841 |
|
$where = implode(" $operator ", $where); |
| 842 |
|
$query->add_where("$where", $args); |
| 843 |
|
} |