/** * Standard modular run function. * * @param MEMBER The ID of the member we are getting link hooks for * @return array List of tuples for results. Each tuple is: type,title,url */ function run($member_id) { if (!has_zone_access(get_member(), 'adminzone') && $member_id !== get_member()) { return array(); } require_code('ocf_join'); if (!referrer_is_qualified($member_id)) { return array(); } require_lang('referrals'); $keep = symbol_tempcode('KEEP'); return array(array('usage', do_lang_tempcode('REFERRALS'), find_script('referrer_report') . '?member_id=' . strval($member_id) . $keep->evaluate())); }
function referrer_report_script($ret = false) { $member_id = get_param_integer('member_id', NULL); if (!has_zone_access(get_member(), 'adminzone') && $member_id !== get_member()) { access_denied('ZONE_ACCESS', 'adminzone'); } require_lang('referrals'); $csv = get_param_integer('csv', 0) == 1; $where = db_string_not_equal_to('i_email_address', '') . ' AND i_inviter<>' . strval($GLOBALS['FORUM_DRIVER']->get_guest_id()); if ($member_id !== NULL) { $where .= ' AND referrer.id=' . strval($member_id); } $max = get_param_integer('max', $csv ? 10000 : 30); $start = get_param_integer('start', 0); $data = array(); $table = 'f_invites i LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'f_members referrer ON referrer.id=i_inviter LEFT JOIN ' . $GLOBALS['FORUM_DB']->get_table_prefix() . 'f_members referee ON referee.m_email_address=i_email_address'; $referrals = $GLOBALS['FORUM_DB']->query('SELECT i_time AS time,referrer.id AS referrer_id,referrer.m_username AS referrer,referrer.m_email_address AS referrer_email,referee.id AS referee_id,referee.m_username AS referee,referee.m_email_address AS referee_email,i_taken AS qualified FROM ' . $GLOBALS['FORUM_DB']->get_table_prefix() . $table . ' WHERE ' . $where . ' ORDER BY i_time DESC', $max, $start); $max_rows = $GLOBALS['FORUM_DB']->query_value_null_ok_full('SELECT COUNT(*) FROM ' . $GLOBALS['FORUM_DB']->get_table_prefix() . $table . ' WHERE ' . $where); if (count($referrals) == 0) { inform_exit(do_lang_tempcode('NO_ENTRIES')); } foreach ($referrals as $ref) { $data_row = array(); $data_row[do_lang('DATE_TIME')] = get_timezoned_date($ref['time'], true, true, false, true); if (is_null($member_id)) { if ($csv) { $deleted = true; $data_row[do_lang('TYPE_REFERRER')] = is_null($ref['referrer']) ? do_lang($deleted ? 'REFEREE_DELETED' : 'REFEREE_NOT_SIGNED_UP') : $ref['referrer']; } else { $data_row[do_lang('TYPE_REFERRER')] = is_null($ref['referrer_id']) ? '' : strval($ref['referrer_id']); } $data_row[do_lang('TYPE_REFERRER') . ' (' . do_lang('EMAIL_ADDRESS') . ')'] = $ref['referrer_email']; $data_row[do_lang('QUALIFIED_REFERRER')] = do_lang(referrer_is_qualified($ref['referrer_id']) ? 'YES' : 'NO'); } $deleted = false; if (is_null($ref['referee'])) { $deleted = $ref['qualified'] == 1; //!is_null($GLOBALS['SITE_DB']->query_value_null_ok('adminlogs','id',array('the_type'=>'DELETE_MEMBER','param_b'=>TODO Unfortunately we can't tell))); } if ($csv) { $data_row[do_lang('REFEREE')] = is_null($ref['referee']) ? do_lang($deleted ? 'REFEREE_DELETED' : 'REFEREE_NOT_SIGNED_UP') : $ref['referee']; } else { $data_row[do_lang('REFEREE')] = is_null($ref['referee_id']) ? '' : strval($ref['referee_id']); } $data_row[do_lang('REFEREE') . ' (' . do_lang('EMAIL_ADDRESS') . ')'] = is_null($ref['referee_email']) ? '' : $ref['referee_email']; $data_row[do_lang('QUALIFIED_REFERRAL')] = do_lang($ref['qualified'] == 1 ? 'YES' : 'NO'); $data[] = $data_row; } if ($csv) { require_code('files2'); make_csv($data, (is_null($member_id) ? get_site_name() : $GLOBALS['FORUM_DRIVER']->get_username($member_id)) . ' referrals.csv'); } else { require_code('templates_results_table'); $fields_title = new ocp_tempcode(); $fields = new ocp_tempcode(); foreach ($data as $i => $data_row) { if ($i == 0) { $fields_title->attach(results_field_title(array_keys($data_row))); } foreach ($data_row as $key => $val) { if ($key == do_lang('REFEREE') || $key == do_lang('TYPE_REFERRER')) { if ($val == '') { $val = do_lang('UNKNOWN'); } else { $val = $GLOBALS['FORUM_DRIVER']->member_profile_hyperlink($val, true); } } $data_row[$key] = escape_html($val); } $fields->attach(results_entry($data_row)); } $table = results_table(do_lang('REFERRALS'), $start, 'start', $max, 'max', $max_rows, $fields_title, $fields); if ($ret) { return $table; } $title = get_page_title('REFERRALS'); $out = new ocp_tempcode(); $out->attach($title); $out->attach($table); $out = globalise($out, NULL, '', true); $out->evaluate_echo(); } return NULL; }