TagEngine simplifies and automates the handeling of tags and tag maps in a system that requires one or more types of entities to be tagged.
Use tabels.sql to create the tag engine tabels and insert test data (tag types).
To utilize this class, first import TagEngine.php into your project, and require it.
This class also utilizes a MySQLi wrapper that can be found here: http://github.com/ajillion/PHP-MySQLi-Database-Class
It can easily be modified to support the ORM of your choice, or none at all if you enjoy using the crappy mysql_connect procedural method of database access.
require_once('Mysqlidb.php');
require_once('TagEngine.php');
After that, create a new instance of the MySQLi wrapper and the TagEngine.
Be sure to pass the newly created database object to the TagEnigne when you instantiate it.
$db = new Mysqlidb('host', 'username', 'password', 'databaseName');
$tagEngine = new TagEngine($db);
Allows changing of the default TagEngine settings.
setTables('myTagsTable', 'myTagTypesTable', 'myTagMapsTable'); // Set up the tag engine tabels
$tagEngine->setTagLen(4); // Set the minimum number of characters a tag must have.
Creates tag maps to existing tags, and adds tags that do not exist yet.
$tagEngine->mapTags(100, 'img', 'tag1,tag2,tag3'); // Create's 3 new tags and maps them to the relative id
// of 100 with a type of img (Image).
Retrives the tag id for the given tag name.
$tagEngine->getTagId('tag3'); // Retreive the tag id for 'tag3'.
Retrives the tag name of the given tag id
$tagEngine->getTagName(1); // Gets the tag name for tag id 1
Checks to see if the given tag exists.
if ($tagEngine->tagExists('tag5')) // If the tag exists the method returns true, if it does not it returns false.
{
echo 'true';
}else{
echo 'false';
}
Retrives the id of the given type.
$tagEngine->getTagTypeId('img'); // Gets the id for type 'img' (Image)
Retrives tags mapped to an entity of a particular type and returns them in a zero indexed array.
$tagEngine->getTags(100, 'img'); // Gets all tags that are mapped to relative id 100 and type img (Image).
Removes all tag maps for the given relative id and type. Also removes the tag if it is no longer mapped to any other entity.
$tagEngine->cleanTags(100, 'img'); // Removes all tag maps to relative id 100 of type 'img' (Image) and deletes the tags
// that weremapped to it (tag1,tag2,tag3) since they are no longer in use.
Manualy remove one tag map with the given parameters.
$tagEngine->removeTagMap(100, 'img', 1); // Remove the tag map to relative id 100 of type 'img' (Image) where the tag id is 1