this cmsms content management system made simple
udt user defined term
has one column that sorts numbers
it sorts incorrectly by the first number and not the entire number
90
8000707
6
567
Code: Select all
global $gCms;
$feusers =& $gCms->modules['FrontEndUsers']['object'];
$comp_dir =& $gCms->modules['CompanyDirectory']['object'];
$download = true;
$db =& $gCms->GetDb();
debug_display($_POST);
$from = time();
switch($_POST['expiration'])
{
case 'custom':
$to = strtotime($_POST['custom_expiration']);
if ( $date < time() ){ $from = $to;$to = time();}
break;
default:
$to = strtotime('+ '.$_POST['expiration'].' days');
break;
}
echo strftime('%D',$from).'---'.strftime('%D',$to);
if ( empty($_POST['status']) || $_POST['status'] == 'approved' || $_POST['status'] == 'tapproved')
{
$query = "SELECT * FROM ".cms_db_prefix()."module_compdir_companies";
$fquery = 'SELECT A.id,A.name,B.value FROM '.cms_db_prefix().'module_compdir_fielddefs A LEFT JOIN '.cms_db_prefix().'module_compdir_fieldvals B ON A.id = B.fielddef_id WHERE B.company_id = ?';
$dbresult = $db->Execute($query);
$csv_output = '';
$delim = '|';
$csv_lines = array();
$option_type = array();
$option_size = array();
$i = 0;
while($dbresult && $row=$dbresult->FetchRow())
{
if ($_POST['master'] == 'true')
{
$members = array(array( 'userid' => $feusers->GetUserID($row['contact_email'] ) ));
}
else
{
$members = $feusers->GetUsersByProperties('company_id',$row['id']);
}
$categories = $db->GetArray("SELECT category_id FROM ".cms_db_prefix()."module_compdir_company_categories WHERE company_id = ?",array($row['id']));
$cat_names = array();
foreach($categories as $onecat)
{
switch ($onecat['category_id'])
{
case ('1'): $cat_names[] = "Agency"; break;
case ('2'): $cat_names[] = "Consultant"; break;
case ('3'): $cat_names[] = "Service Provider"; break;
case ('4'): $cat_names[] = "TrainingClients"; break;
case ('5'): $cat_names[] = "Conference"; break;
}
}
$company_type = implode(', ', $cat_names);
if (!empty($company_type) ) $option_type[str_replace(array(',',' '),'', $company_type)] = $company_type;
if(!empty($_POST['type']) && str_replace(array(',',' '),'', $company_type) != $_POST['type'] ) continue;
$tmp1 = $db->GetArray($fquery,array($row['id']));
$company_fields = $comp_dir->array_to_hash( $tmp1, 'name' );
if (!empty($company_fields['Size office']['value']) ) $option_size[str_replace(array(',',' ','-'),'', $company_fields['Size office']['value'])] = $company_fields['Size office']['value'];
if(!empty($_POST['size']) && str_replace(array(',',' ','-'),'', $company_fields['Size office']['value']) != $_POST['size'] ) continue;
if ($_POST['payment'] == 'check' ) continue;
if ($_POST['payment'] == 'cc' && $company_fields['Amount Charged']['value'] == 'manually' ) continue;
foreach($members as $onemember)
{
if ($_POST['status'] == 'approved' && $feusers->MemberOfGroup($onemember['userid'], '27') ) continue;
if ($_POST['status'] == 'tapproved' && !$feusers->MemberOfGroup($onemember['userid'], '27') ) continue;
$user = $feusers->GetUserInfo($onemember['userid']);
if( !empty($_POST['expiration']) )
{
if( strtotime($user[1]['expires']) < $from || strtotime($user[1]['expires']) > $to ) continue;
}
if ($_POST['master'] == 'false' && strtoupper(trim($row['contact_email'])) == strtoupper(trim($user[1]['username']))) continue;
//if ( $feusers->IsAccountExpired($onemember['userid']) ) continue;
if ( isset($csv_lines[$onemember['userid']]) ) $csv_lines[$onemember['userid']] = array();
$properties = $feusers->GetUserProperties($onemember['userid']);
$props = $comp_dir->array_to_hash($properties, 'title');
if(!empty($_POST['companyname']) && stripos($row['company_name'], $_POST['companyname']) === false ) continue;
if(!empty($_POST['firstname']) && stripos($props['first_name']['data'], $_POST['firstname']) === false ) continue;
if(!empty($_POST['lastname']) && stripos($props['last_name']['data'], $_POST['lastname']) === false ) continue;
if(!empty($_POST['city']) && stripos($props['city']['data'], $_POST['city']) === false ) continue;
switch ($company_fields['Payment Method']['value'])
{
case 'monthly':
$new_renewal = mktime(date("H",$company_fields['RenewalDate']['value']),date("i",$company_fields['RenewalDate']['value']),date("s",$company_fields['RenewalDate']['value']),date("n",$company_fields['RenewalDate']['value'])+1,date("j",$company_fields['RenewalDate']['value']),date("Y",$company_fields['RenewalDate']['value']) );
break;
case 'quarterly':
$new_renewal = mktime(date("H",$company_fields['RenewalDate']['value']),date("i",$company_fields['RenewalDate']['value']),date("s",$company_fields['RenewalDate']['value']),date("n",$company_fields['RenewalDate']['value'])+3,date("j",$company_fields['RenewalDate']['value']),date("Y",$company_fields['RenewalDate']['value']) );
break;
case 'annually':
case 'check':
$new_renewal = mktime(date("H",$company_fields['RenewalDate']['value']),date("i",$company_fields['RenewalDate']['value']),date("s",$company_fields['RenewalDate']['value']),date("n",$company_fields['RenewalDate']['value']),date("j",$company_fields['RenewalDate']['value']),date("Y",$company_fields['RenewalDate']['value'])+1 );
break;
}
$csv_lines[$onemember['userid']][] = $onemember['userid'];
$csv_lines[$onemember['userid']][] = $user[1]['username'];
$csv_lines[$onemember['userid']][] = $row['company_name'];
$csv_lines[$onemember['userid']][] = $props['phone']['data'];
$csv_lines[$onemember['userid']][] = $props['last_name']['data'];
$csv_lines[$onemember['userid']][] = $props['first_name']['data'];
//$csv_lines[$onemember['userid']][] = $row['address'];
$csv_lines[$onemember['userid']][] = $company_fields['Company City']['value'];
$csv_lines[$onemember['userid']][] = $company_fields['Company State']['value'];
//$csv_lines[$onemember['userid']][] = $company_fields['Country']['value'];
//$csv_lines[$onemember['userid']][] = $company_fields['Zip']['value'];
(strtoupper(trim($row['contact_email'])) == strtoupper(trim($user[1]['username'])))?$csv_lines[$onemember['userid']][] ='Master':$csv_lines[$onemember['userid']][] = '';
($feusers->MemberOfGroup($onemember['userid'], '27') )?$csv_lines[$onemember['userid']][] ='T Approved':$csv_lines[$onemember['userid']][] = 'A Approved';
//$csv_lines[$onemember['userid']][] = $props['title_input']['data'];
//$csv_lines[$onemember['userid']][] = $props['phone']['data'];
$csv_lines[$onemember['userid']][] = strftime('%F',strtotime($user[1]['expires']));
$csv_lines[$onemember['userid']][] = $company_fields['Payment Method']['value'];
$csv_lines[$onemember['userid']][] = $company_fields['Amount Charged']['value'];
$csv_lines[$onemember['userid']][] = ''; //$company_fields['ExpireNotify']['value'];
//$csv_lines[$onemember['userid']][] = $company_fields['Sub_Card']['value'];
$csv_lines[$onemember['userid']][] = (empty($new_renewal))?'':strftime('%F',$new_renewal );
$csv_lines[$onemember['userid']][] = strftime('%F',strtotime($user[1]['createdate']));
$csv_lines[$onemember['userid']][] = $company_fields['Size office']['value'];
$csv_lines[$onemember['userid']][] = $company_type;
}
}
}
if ( (empty($_POST['status']) || !($_POST['status'] == 'approved' || $_POST['status'] == 'tapproved') ) && (empty($_POST['type']) || $_POST['type'] == 'Agency') )
{
$pending_users = $feusers->GetFullUsersInGroup('6');
foreach($pending_users as $userid => $one_user)
{
if ($_POST['payment'] == 'check' ) continue;
if ( ($_POST['status'] == 'started' || $_POST['status'] == 'tstarted') && !$feusers->MemberOfGroup($userid, '15') ) continue;
if ( ($_POST['status'] == 'billing' || $_POST['status'] == 'tbilling') && $feusers->MemberOfGroup($userid, '15') ) continue;
if ( ($_POST['status'] == 'billing' || $_POST['status'] == 'started') && $feusers->MemberOfGroup($userid, '27') ) continue;
if ( ($_POST['status'] == 'tbilling' || $_POST['status'] == 'tstarted')&& !$feusers->MemberOfGroup($userid, '27') ) continue;
if ($_POST['master'] == 'false' && ($feusers->MemberOfGroup($userid, '3') || $feusers->MemberOfGroup($userid, '27')) ) continue;
if ($_POST['master'] == 'true' && !($feusers->MemberOfGroup($userid, '3') || $feusers->MemberOfGroup($userid, '27')) ) continue;
if( !empty($_POST['expiration']) )
{
if( strtotime($one_user['expires']) < $from || strtotime($one_user['expires']) > $to ) continue;
}
$props = $comp_dir->array_to_hash($one_user['props'], 'title');
if(!empty($_POST['companyname']) && stripos($props['Company_Name']['data'], $_POST['companyname']) === false ) continue;
if(!empty($_POST['firstname']) && stripos($props['first_name']['data'], $_POST['firstname']) === false ) continue;
if(!empty($_POST['lastname']) && stripos($props['last_name']['data'], $_POST['lastname']) === false ) continue;
if(!empty($_POST['city']) && stripos($props['city']['data'], $_POST['city']) === false ) continue;
if(!empty($_POST['size']) && str_replace(array(',',' ','-'),'', $props['Agency_Size_Office']['data']) != $_POST['size'] ) continue;
if ( isset($csv_lines[$userid]) ) $csv_lines[$userid] = array();
$csv_lines[$userid][] = $userid;
$csv_lines[$userid][] = $one_user['username'];
$csv_lines[$userid][] = $props['Company_Name']['data'];
$csv_lines[$userid][] = $props['phone']['data'];
$csv_lines[$userid][] = $props['last_name']['data'];
$csv_lines[$userid][]= $props['first_name']['data'];
$csv_lines[$userid][] = $props['city']['data'];
$csv_lines[$userid][] = $props['state']['data'];
($feusers->MemberOfGroup($userid, '3') || $feusers->MemberOfGroup($userid, '27'))?$csv_lines[$userid][]='Master':$csv_lines[$userid][] = '';
($feusers->MemberOfGroup($userid, '27') )?$type ='T ':$type = 'A ';
($feusers->MemberOfGroup($userid, '15') )?$csv_lines[$userid][]=$type.'Started':$csv_lines[$userid][]=$type.'Billing';
$csv_lines[$userid][] = strftime('%F',strtotime($one_user['expires']));
$csv_lines[$userid][] = $props['payment_term']['data'];
$csv_lines[$userid][] = $props['amount_charged']['data'];
$csv_lines[$userid][]= '';
$csv_lines[$userid][] = '';
$csv_lines[$userid][] = strftime('%F',strtotime($one_user['createdate']));
$csv_lines[$userid][] = $props['Agency_Size_Office']['data'];
$csv_lines[$userid][] = 'Agency';
}
}
$csv_header = array("UserID","Email Address","Company","Work Phone","Last Name","First Name","City","State","Master","Status","Member Expiration","Payment Method","Billing Amount","CC Expiry","Check Due","Member Since","Office Size","Company Type");
if ($_GET['showtemplate'] != 'false')
{
echo $feusers->ProcessTemplateFromData('{JQueryTools action=incjs exclude="fancybox,form,lightbox"}');
echo '<__script__ type="text/javascript">jQuery(document).ready(function($) { jQuery(".cms_sortable").tablesorter({widthFixed: true, widgets: ["zebra"]}); });</__script>';
if ($download)
{
// echo '<center><a href="'.$_SERVER['SCRIPT_URI'].'?showtemplate=false" style="text-decoration:none;"><button type="button">Download File</button></a></center>';
}
echo '<form method="post">';
echo '<label for="master">Master/Non-Master: </label><select name="master"><option value="">Select One</option><option value="true" '.(($_POST['master'] == 'true')?'selected':'').'>Master</option><option value="false" '.(($_POST['master'] == 'false')?'selected':'').'>Non-Master</option></select><br />';
echo '<label for="status">Status: </label><select name="status"><option value="">Select One</option><option value="approved" '.(($_POST['status'] == 'approved')?'selected':'').'>Approved</option><option value="billing" '.(($_POST['status'] == 'billing')?'selected':'').'>Billing</option><option value="started" '.(($_POST['status'] == 'started')?'selected':'').'>Started</option><option value="tapproved" '.(($_POST['status'] == 'tapproved')?'selected':'').'>T Approved</option><option value="tbilling" '.(($_POST['status'] == 'tbilling')?'selected':'').'>T Billing</option><option value="tstarted" '.(($_POST['status'] == 'tstarted')?'selected':'').'>T Started</option></select><br />';
echo '<label for="payment">Payment Method: </label><select name="payment"><option value="">Select One</option><option value="cc" '.(($_POST['payment'] == 'cc')?'selected':'').'>Credit Card</option><option value="check" '.(($_POST['payment'] == 'check')?'selected':'').'>Check</option></select><br />';
echo '<label for="expiration">Member Expiration: </label><select name="expiration"><option value="">Select One</option><option value="60" '.(($_POST['expiration'] == '62')?'selected':'').'>Next two months</option><option value="31" '.(($_POST['expiration'] == '30')?'selected':'').'>Next month</option><option value="7" '.(($_POST['expiration'] == '7')?'selected':'').'>Next week</option><option value="custom" '.(($_POST['expiration'] == 'custom')?'selected':'').'>Custom date range</option></select><br /><label for="custom_expiration">Expiration Date: </label><input name="custom_expiration" value="'.$_POST['custom_date'].'"/><br />';
echo '<label for="type">Company Type: </label><select name="type"><option value="">Select One</option>';
foreach( $option_type as $typename => $onetype )
{
echo '<option value="'.$typename.'" '.(($_POST['type'] == $typename)?'selected':'').'>'.$onetype.'</option>';
}
echo '</select><br />';
echo '<label for="size">Company Size: </label><select name="size"><option value="">Select One</option>';
foreach( $option_size as $sizename => $onesize )
{
echo '<option value="'.$sizename.'" '.(($_POST['type'] == $sizename)?'selected':'').'>'.$onesize.'</option>';
}
echo '</select><br />';
echo '<label for="companyname">Company Name: </label><input name="companyname" value="'.$_POST['companyname'].'"/><br />';
echo '<label for="firstname">First Name: </label><input name="firstname" value="'.$_POST['firstname'].'"/><br />';
echo '<label for="lastname">Last Name: </label><input name="lastname" value="'.$_POST['lastname'].'"/><br />';
echo '<label for="city">City: </label><input name="city" value="'.$_POST['city'].'"/><br />';
echo '<input type="submit" value="Filter" name="filter" /><a href="http://www.mirren.org/members-list/"><button>Clear</button></a></form>';
echo '<table class="cms_sortable tablesorter" BORDER=1 CELLPADDING=3><thead><tr><th style="color:#ffffff;">'.implode('</th><th style="color:#ffffff;">', $csv_header).'</th></tr></thead><tbody>';
foreach($csv_lines as $one_row)
{
$i++;
echo '<tr><td NOWRAP>'.implode('</td><td NOWRAP>', $one_row).'</td></tr>';
}
echo '</tbody></table>';
}
else
{
//Then force the output normally and exit so we don't get a footer
header("Content-disposition: attachment; filename=members_list." . date("Y-m-d") . ".csv");
header("Content-type: text/csv");
print '"'.implode('"'.$delim.'"', $csv_header)."\"\n";
foreach($csv_lines as $one_row)
{
print '"'.implode('"'.$delim.'"', $one_row)."\"\n";
}
exit;
}
echo $i;