The Official Website of AgoraCart and Agora.cgi
AgoraCart.com Demos Download AgoraCart User Manuals & Wiki Gold Members Forum Go Gold Now! Gold Version Memberships

AgoraCart.com

About
Features
Download
Payment Gateways
Send a Donation
Founders Club
BLOG: News & Updates

Showcases & Demos

AgoraCart Demos
Shop Live Stores

Downloads & Add-ons

Gold Version Downloads
DBwizz Database Mgr.
AgoraCart.com Store

Help & Support

User Manuals
Gold Version Users Forum
Gold Version Chat
Tech Support
Certified Agora Pros
Certified Designers
Hire a Freelancer

Gold Version Members

Member Benefits
Join Today!
Gold Members Home
Gold Version Users Forum
Gold Version Chat Rooms
Gold Version Downloads

For Store Owners

Merchant Accounts
Cool Resources
Advertise Here
"Powered by" Logos
Web Hosting Search

Misc.

Contact Us
MEET's Talking Guide
The Ancient Greek Agora






AgoraCart Free User Forums

This is the official FAQ and Cool Tips guide For the AgoraCart shopping Cart software


Official Sponsors of the AgoraCart Project:

       


RegisterSearchFAQLog in
Reply to topic Page 1 of 1
add-on management tool for search in order data
Author Message
Reply with quote
Post add-on management tool for search in order data 
Dear all,

I wrote a script to search order data in Agora system, and I would like to share it for everyone to use. Don't know where to put it so just paste it here.

You should be able to put it right under the protected/ directory, and it should work fine.

I have modify some required order fields in my agora system, so not sure if my are still the same with the standard agora, but they should be easy to modify.

The filename I named this script is "search_orders-ext_lib.pl"

Code:
#/usr/local/bin/perl -T

$versions{'search_orders'} = "20060309";

{
 local ($modname) = 'search_orders';
 &register_extension($modname,"Search",$versions{$modname});
 &add_settings_choice("Search Orders"," Search Orders ",
        "SearchOrders");
 &register_menu('SearchInput',"display_search_result",
        $modname,"Search Result");
 &register_menu('SearchOrders',"search_Orders",
   $modname,"Search from Order Logfiles");
 &add_item_to_manager_menu("Search Orders","SearchOrders=yes","");
}

############################################################

sub display_search_result
{
&ReadParse;

$sc_cn_name = "";
$sc_cn_street_addr="";
$sc_cn_city_addr="";
$sc_cn_postalcode="蝔嶜";
$sc_cn_email="?";
$sc_cn_phone="";
$sc_cn_order_num="?嶜朅";
$of_dir='./log_files';
$inorder = 0;
$i = 0;
$j = 0;

foreach $file (@arr = <$of_dir/littlewonders.log*>) {
  open F, "$file" or die "can't open $file\n";
  while(<F>) {
    if (/^\*-\*-\*-/) {
        $inorder = 1;
    }
    if ( $inorder ) {
        $orders{$i}[$j++] = $_;
        if (/\Q$sc_cn_name\E:\s+(.+)$/) {
            $save = $1;
            $cust_data{$i}{NAME}=$save;
            if ($1 =~ /\Q$in{'Search_Full_Name'}\E/) {
                $checked_keys{$i}=1;
            }
        }
        if ( /\Q$sc_cn_email\E:\s+(.+)$/ ) {
            $save = $1;
            $cust_data{$i}{EMAIL}=$save;
            if ($1 =~ /\Q$in{'Search_Email_Address'}\E/i) {
                $checked_keys{$i}=1;
            }
        }
        if ( /\Q$sc_cn_order_num\E:\s+(.+)$/ ) {
            $save = $1;
            $cust_data{$i}{ORDERNO}=$save;
            if ($1 == $in{'Search_Order_Number'}) {
                $checked_keys{$i}=1;
            }
        }
        if ( /\Q$sc_cn_phone\E:\s+(.+)$/ ) {
            $save = $1;
            $cust_data{$i}{TELNO}=$save;
            $save =~ s/\D//g;
            $clean = $in{'Search_Phone_Number'};
            $clean =~ s/\D//g;
            if ($save =~ /\Q$clean\E/) {
                $checked_keys{$i}=1;
            }
        }
        $cust_data{$i}{ADDRCITY}=$1 if /\Q$sc_cn_city_addr\E:\s+(.+)$/;
        $cust_data{$i}{ADDRSTREET}=$1 if /\Q$sc_cn_street_addr\E:\s+(.+)$/;
        $cust_data{$i}{POSTAL}=$1 if /\Q$sc_cn_postalcode\E:\s+(.+)$/;
    }
    if (/^-\*-\*-\*/) {
        $inorder= 0;
        $j= 0;
        $i++;
    }
  }
  close F;
}

print &$manager_page_header("Search Data from Orders","","","","");
print "<center><table width=600 BORDER=1 CELLPADDING=0><tr><td>";
if ($in{'Show_Details'} =~ /yes/i) {
  foreach $key (sort keys %checked_keys) {
    foreach $line (@{$orders{$key}}) {
        print "<a>$line</a><br>";
    }
  }
} else {
  foreach $key (sort keys %checked_keys) {
        print "<a>", "-" x 118, "</a><br>";
        print "<a>$sc_cn_order_num: $cust_data{$key}{ORDERNO} $orders{$key}[1]</a><br>";
        print "<a>", "-" x 118, "</a><br>";
        print "<a>$sc_cn_name: $cust_data{$key}{NAME}</a><br>";
        print "<a>$sc_cn_email: $cust_data{$key}{EMAIL}</a><br>";
        print "<a>$sc_cn_phone: $cust_data{$key}{TELNO}</a><br>";
        print "<a>$sc_cn_postalcode: $cust_data{$key}{POSTAL}</a><br>";
        print "<a>$sc_cn_street_addr: $cust_data{$key}{ADDRCITY}";
        print "$cust_data{$key}{ADDRSTREET}</a><br>";
  }
}
print "</td></tr></table></center>";
print &$manager_page_footer;

}
#########################################################################

sub search_Orders
{
print &$manager_page_header("Search Data from Orders","","","","");

print <<ENDOFTEXT;

<FORM METHOD="POST" ACTION="manager.cgi">

<CENTER>

<TABLE WIDTH="600" BORDER="0" CELLPADDING="0">
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>

<TR BGCOLOR="#EFEFEF">
<TD COLSPAN="2"><font size="+1">Search Customer Database:</font></TD>
</TR>
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Full_Name"
VALUE=""
SIZE="30" MAXLENGTH="30"></TD>
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Phone #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Phone_Number"
VALUE=""
SIZE="30">
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Email addr:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Email_Address"
VALUE=""
SIZE="60"></TD>
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Order_Number"
VALUE=""
SIZE="10" MAXLENGTH="10"></TD>
</TR>

<TR>
<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
<TD><input type="checkbox" name="Show_Details" value="YES">Show Order Details</TD>
</TR>

<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>

</TABLE>
</CENTER>
<CENTER>
<FONT FACE=Verdana SIZE=2>
<P>

<INPUT TYPE=submit NAME = "SearchInput"  VALUE = " Search ">
<BR>
</CENTER>
</FORM>
ENDOFTEXT
print &$manager_page_footer;
}
############################################################
1; #We are a library


View user's profile Send private message Visit poster's website
Reply with quote
Post  
Sorry, I put on the wrong version, the one for my Chinese Agora system. Now here is the one for English version:

Code:
#/usr/local/bin/perl -T

$versions{'search_orders'} = "20060309";

{
 local ($modname) = 'search_orders';
 &register_extension($modname,"Search",$versions{$modname});
 &add_settings_choice("Search Orders"," Search Orders ",
        "SearchOrders");
 &register_menu('SearchInput',"display_search_result",
        $modname,"Search Result");
 &register_menu('SearchOrders',"search_Orders",
   $modname,"Search from Order Logfiles");
 &add_item_to_manager_menu("Search Orders","SearchOrders=yes","");
}

############################################################

sub display_search_result
{
&ReadParse;

$sc_cn_name = "NAME";
$sc_cn_street_addr="ADDRESS";
$sc_cn_city_addr="CITY";
$sc_cn_postalcode="POSTALCODE";
$sc_cn_email="EMAIL";
$sc_cn_phone="PHONE";
$sc_cn_order_num="INVOICE";
$of_dir='./log_files';
$inorder = 0;
$i = 0;
$j = 0;

foreach $file (@arr = <$of_dir/littlewonders.log*>) {
  open F, "$file" or die "can't open $file\n";
  while(<F>) {
    if (/^\*-\*-\*-/) {
        $inorder = 1;
    }
    if ( $inorder ) {
        $orders{$i}[$j++] = $_;
        if (/\Q$sc_cn_name\E:\s+(.+)$/) {
            $save = $1;
            $cust_data{$i}{NAME}=$save;
            if ($1 =~ /\Q$in{'Search_Full_Name'}\E/i) {
                $checked_keys{$i}=1;
            }
        }
        if ( /\Q$sc_cn_email\E:\s+(.+)$/ ) {
            $save = $1;
            $cust_data{$i}{EMAIL}=$save;
            if ($1 =~ /\Q$in{'Search_Email_Address'}\E/i) {
                $checked_keys{$i}=1;
            }
        }
        if ( /\Q$sc_cn_order_num\E:\s+(.+)$/ ) {
            $save = $1;
            $cust_data{$i}{ORDERNO}=$save;
            if ($1 == $in{'Search_Order_Number'}) {
                $checked_keys{$i}=1;
            }
        }
        if ( /\Q$sc_cn_phone\E:\s+(.+)$/ ) {
            $save = $1;
            $cust_data{$i}{TELNO}=$save;
            $save =~ s/\D//g;
            $clean = $in{'Search_Phone_Number'};
            $clean =~ s/\D//g;
            if ($save =~ /\Q$clean\E/) {
                $checked_keys{$i}=1;
            }
        }
        $cust_data{$i}{ADDRCITY}=$1 if /\Q$sc_cn_city_addr\E:\s+(.+)$/;
        $cust_data{$i}{ADDRSTREET}=$1 if /\Q$sc_cn_street_addr\E:\s+(.+)$/;
        $cust_data{$i}{POSTAL}=$1 if /\Q$sc_cn_postalcode\E:\s+(.+)$/;
    }
    if (/^-\*-\*-\*/) {
        $inorder= 0;
        $j= 0;
        $i++;
    }
  }
  close F;
}

print &$manager_page_header("Search Data from Orders","","","","");
print "<center><table width=600 BORDER=1 CELLPADDING=0><tr><td>";
if ($in{'Show_Details'} =~ /yes/i) {
  foreach $key (sort keys %checked_keys) {
    foreach $line (@{$orders{$key}}) {
        print "<a>$line</a><br>";
    }
  }
} else {
  foreach $key (sort keys %checked_keys) {
        print "<a>", "-" x 118, "</a><br>";
        print "<a><b>$sc_cn_order_num:</b> $cust_data{$key}{ORDERNO} $orders{$key}[1]</a><br>";
        print "<a>", "-" x 118, "</a><br>";
        print "<a><b>$sc_cn_name:</b> $cust_data{$key}{NAME}</a><br>";
        print "<a><b>$sc_cn_email:</b> $cust_data{$key}{EMAIL}</a><br>";
        print "<a><b>$sc_cn_phone:</b> $cust_data{$key}{TELNO}</a><br>";
        print "<a><b>$sc_cn_postalcode:</b> $cust_data{$key}{POSTAL}</a><br>";
        print "<a><b>$sc_cn_street_addr:</b> $cust_data{$key}{ADDRSTREET}";
        print ", $cust_data{$key}{ADDRCITY}</a><br>";
  }
}
print "</td></tr></table></center>";
print &$manager_page_footer;

}
#########################################################################

sub search_Orders
{
print &$manager_page_header("Search Data from Orders","","","","");

print <<ENDOFTEXT;

<FORM METHOD="POST" ACTION="manager.cgi">

<CENTER>

<TABLE WIDTH="600" BORDER="0" CELLPADDING="0">
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>

<TR BGCOLOR="#EFEFEF">
<TD COLSPAN="2"><font size="+1">Search Customer Database:</font></TD>
</TR>
<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Full_Name"
VALUE=""
SIZE="30" MAXLENGTH="30"></TD>
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Phone #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Phone_Number"
VALUE=""
SIZE="30">
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Email addr:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Email_Address"
VALUE=""
SIZE="60"></TD>
</TR>

<TR>
<TD WIDTH="150">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order #:</TD>
<TD WIDTH="450"><INPUT TYPE="text"
NAME="Search_Order_Number"
VALUE=""
SIZE="10" MAXLENGTH="10"></TD>
</TR>

<TR>
<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
<TD><input type="checkbox" name="Show_Details" value="YES">Show Order Details</TD>
</TR>

<TR>
<TD COLSPAN="2"><FONT SIZE="-1"><hr></FONT></TD>
</TR>

</TABLE>
</CENTER>
<CENTER>
<FONT FACE=Verdana SIZE=2>
<P>

<INPUT TYPE=submit NAME = "SearchInput"  VALUE = " Search ">
<BR>
</CENTER>
</FORM>
ENDOFTEXT
print &$manager_page_footer;
}
############################################################
1; #We are a library


View user's profile Send private message Visit poster's website
Reply with quote
Post  
oh, one more thing ...

you need to modify the name of the order logfile ... mine is "littlewonders.log" in the code ...

View user's profile Send private message Visit poster's website
Reply with quote
Post  
very cool! thank you for sharing. if i ever get more than one sale then searching a huge log would be a great asset. grin. just teasing.
this is pretty cool.
thanks!
d

Reply with quote
Post  
My pleasure ...

I actually use this tool for my wife's online shop, and it is very good for getting information we need ... when the customer calls and asking questions about their order ... especially we are getting a better business now Wink

View user's profile Send private message Visit poster's website
Reply with quote
Post  
oh yeah, i remember little wonders. great to hear business is picking up!
thanks again for the script.
d

Reply with quote
Post  
Thanks a lot!
Just FYI, the shop has been moved to a registered domain http://littlewonders.com.tw

View user's profile Send private message Visit poster's website
Reply with quote
Post Search Orders 
Hi,

Tried to implement this clever idea but get this :

Error loading library ./protected/search_orders-ext_lib.pl:

Can't find string terminator "ENDOFTEXT" anywhere before EOF at ./protected/search_orders-ext_lib.pl line 118. Compilation failed in require at (eval 22) line 1.

Please fix the error and try again.


Regards,

Rik

Reply with quote
Post  
Rik,
I don't know what you may have used to edit or create this file, but it may be that, or you didn't get all of the code, or it wasn't uploaded in ASCII...

HTH!


_________________
God Bless!
Bonnie - AgoraCart Moderator

Get a Gold Membership
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger ICQ Number
Display posts from previous:
Reply to topic Page 1 of 1
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum