PHP Classes

PHP TOC Library: Connect to AIM network with the TOC protocol

Recommend this page to a friend!
  Info   View files View files (5)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2004-07-18 (12 years ago) RSS 2.0 feedNot yet rated by the usersTotal: 1,259 All time: 2,945 This week: 1,542Up
Version License Categories
phptoclib 1.0GNU Lesser Genera...Networking, Chat
Description Author

This class was developed with the intent to allow users to connect to and use the AIM services.

The class features full support for sending and receiveing messages, chat, and soon direct IM connectivity.

Basically, it can do close to everything that AIM can do. You can create a bot, check peoples online status, practically anything.

This is similar to perl's NET::AIM with more features. It offers complete customization through the use of event invoked functions. This allows you access to all the messages sent, but they are parsed into an easy to use format allowing you to respond to all incoming messages in whatever way you choose.

Name: Jeremy B <contact>
Classes: 1 package by
Country: United States United States
Age: 29
All time rank: 1965254 in United States United States
Week rank: 1142 Up121 in United States United States Up

phpTOCLib version 1 beta

This is released under the LGPL. AIM,TOC,OSCAR, and all other related protocols/terms are 
copyright AOL/Time Warner. This project is in no way affiliated with them, nor is this
project supported by them.

Some of the code is loosely based off of a script by Jeffrey Grafton. Mainly the decoding of packets, and the
function for roasting passwords is entirly his.

TOC documentation used is available at

phpTOCLib aims to be a PHP equivalent to the PERL module NET::AIM. Due to some limitations, 
this is difficult. Many features have been excluded in the name of simplicity, and leaves
you alot of room to code with externally, providing function access to the variables that
need them.

I have aimed to make this extensible, and easy to use, therefore taking away some built in
functionality that I had originally out in. This project comes after several months of
researching the TOC protocol.

testscript.php is included with the class. It needs to be executed from the command line
(ie:php -q testscript.php) and you need to call php.exe with the -q
testscript is provided as a demonstaration only. It may be used as a base for your code.


by Rajiv Makhijani
	 - Fixed Bug in Setting Permit/Deny Mode
	 - Fixes so Uninitialized string offset notice doesn't appear
	 - Replaced New Lines Outputed for Each Flap Read with " . " so
	   that you can still tell it is active but it does not take so much space
	 - Removed "eh?" message
	 - Added MySQL Database Connection Message
	 - New Functions:
		update_profile(profile data string, powered by boolean)
			* The profile data string is the text that goes in the profile.
			* The powered by boolean if set to true displays a link to the
			  sourceforge page of the script.
	- Silent option added to set object not to output any information
		- To follow silent rule use sEcho function instead of Echo
by Jeremy (pickleman78)
(05/26/04) beta 1 release
	-Complete overhaul of class design and message handling
	-Fixed bug involving sign off after long periods of idling
	-Added new function $Aim->registerHandler
	-Added the capability to handle all AIM messages
		-Processing the messages is still the users responsibility
	-Did a little bit of code cleanup
	-Added a few internal functions to make the classes internal life easier
	-Improved AIM server error message processing
	-Updated this document (hopefully Rajiv will clean it up some, since I'm a terrible documenter)


Several methods are provided in the class that allow for simple access to some of the 
common features of AIM. Below are details.

$Aim->Aim($sn,$password,$pdmode, $silent=false)
The constructor, it takes 4 arguments. 
$sn is your screen name
$password is you password, in plain text
$pdmode is the permit deny mode. This can be as follows:
1 - Allow All
2 - Deny All
3 - Permit only those on your permit list
4 - Permit all those not on your deny list
$silent if set to true prints out nothing

So, if your screen-name is JohnDoe746 and your password is fertu, and you want to allow
all users of the AIM server to contact you, you would code as follows
$myaim=new Aim("JohnDoe746","fertu",1);

This adds the buddy passed to the function to your permit list.
ie: $myaim->add_permit("My friend22");

Blocks a user. This will switch your pd mode to 4. After using this, for the user to remain
out of contact with you, it is required to provide the constructor with a pd mode of 4
ie:$myaim->block_buddy("Annoying guy 4");

Sends $message to $user. If you set the 3rd argument to true, then the recipient will receive it in
the same format as an away message. (Auto Response from me:)
A message longer than 65535 will be truncated
ie:$myaim->send_im("myfriend","This is a happy message");

Sends an update buddy command to the server and allows some internal values about yourself
to be set.

Call this to connect to the server. This must be called before any other methods will work

Returns $this->myLastReceived['decoded']. This should be the only peice of the gotten data
you need to concern yourself with. This is a preferred method of accessing this variable to prevent
accidental modification of $this->myLastReceived. Accidently modifying this variable can
cause some internal failures.

This is a wrapper for $Aim->sflap_read(), and only returns the $this->myLastReceived['data']
portion of the message. It is preferred that you do not call $Aim->sflap_read() and use this
function instead. This function has a return value. Calling this prevents the need to call

This allows you to update the bots warning level when warned.

Returns the $this->myBuddyList array. Use this instead of modifying the internal variable

Returns the $this->myPermitList array. Use this instead of modifying the internal variable

Returns the $this->myBlockedList array. Use this instead of modifying the internal variable

Warn $user. If anon is set to true, then it warns the user anonomously

$Aim->update_profile($information, $poweredby=false)
Updates Profile to $information.  If $poweredby is true a link to
sourceforge page for this script is appended to profile

This is by far the best thing about the new release. 
For more information please reas supplement.txt. It is not included here because of the sheer size of the document.
supplement.txt contains full details on using registerHandler and what to expect for each input.

For convenience, I have provided some functions to simplify message processing. 

They can be read about in the file "supplement.txt". I chose not to include the text here because it
is a huge document

There are a few things you should note about AIM
1)An incoming message has HTML tags in it. You are responsible for stripping those tags
2)Outgoing messages can have HTML tags, but will work fine if they don't. To include things
  in the time feild next to the users name, send it as a comment

The class is released under the LGPL. If you have any bug reports, comments, questions
feature requests, or want to help/show me what you've created with this(I am very interested in this), 
please drop me an email: This code was written by 
Jeremy(a.k.a pickleman78) and Rajiv M (a.k.a compwiz562).

Special thanks:
I'd like to thank all of the people who have contributed ideas, testing, bug reports, and code additions to
this project. I'd like to especially thank Rajiv, who has done do much for the project, and has kept this documnet
looking nice. He also has done alot of testing of this script too. I'd also like to thank SpazLink for his help in
testing. And finally I'd like to thank Jeffery Grafton, whose script inspired me to start this project.
  Files folder image Files  
File Role Description
Plain text file aimclassw.php Class The main class file
Plain text file errors.php Conf. Error text. Required for proper functionality
Accessible without login Plain text file README.txt Doc. Main documentation file
Accessible without login Plain text file supplement.txt Doc. An addition to the documents that explain several methods in detail
Accessible without login Plain text file testscript.php Example Working example bot

 Version Control Unique User Downloads Download Rankings  
This week:0
All time:2,945
This week:1,542Up