Интеграция на CodeIgniter и PHPList

Здравейте на всички. Имах един наистина доста натоварен месец и по тази причина не съм ъпдейтвал блога от доста време. Затова пък сега ви давам един малък бонус :) . Бях зает с доста неща, включително писането на библиотека за CodeIgniter свързана с интеграцията на PHPList. Преди да я реализирам потърсих в гугъл за готова такава, но за жалост не намерих. И впоследствие си написах моя собствена за около час и ми свърши перфектна работа:) Ето и библиотеката Enjoy.

Бележка: Имайте в предвид, че CI и PHPLIST имат една исъща декларирана функция – redirect. Трябва да я преименувате или в CI или в PHPLIST.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
* CodeIgniter phplist Library
*
* CodeIgniter phplist bridge allowing adding users to lists and blacklisting them
*
* @author Georgi Budinov
* @version	1.0
* @link http://georgi.budinov.com
*/
class Phplist_library
{
    public $CI;

    /**
     * Constructor.
     */
    public function __construct()
    {
    	global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;
        if (!isset($this->CI))
		{
			$this->CI =& get_instance();
		}

		$rootPath = $this->CI->config->item('root_path');

		define('BULLETIN_ROOT_PATH', $rootPath.'bulletin/');

		$phplist_root_path = (defined('PHPLIST_ROOT_PATH')) ? PHPLIST_ROOT_PATH : BULLETIN_ROOT_PATH;

		// Include needed files
		include($phplist_root_path . 'admin/defaultconfig.inc');
		include($phplist_root_path . 'config/config.php');
		include($phplist_root_path . 'admin/mysql.inc');
		include($phplist_root_path . 'admin/connect.php');
    }

    /**
     *
     * @param $email
     * @param $lists
     * @return mixed
     */
    public function user_add($email, $lists = array())
    {
    	if(!$email) return false;

    	if(is_array($lists) && count($lists))
    	{
    		$userID = addNewUser($email);

    		if($userID > 0)
    		{
    			foreach($lists as $list)
    			{
    				$this->userAddToList($userID, $list);
    			}
    		}
    	}
    	else
    	{
        	return addNewUser($email);
    	}
    }

	public function get_lists()
    {
    	$results = $this->getLists();

    	return $results;
    }

	public function user_add_list($email, $list)
    {
    	if(!$email || !$list) return;

    	$userid = $this->getUserIDByEmail($email);

    	if($userid > 0)
    	{
    		$this->userAddToList($userid, $list);
    	}
    	else
    	{
    		return;
    	}
    }

	public function user_remove_list($email, $list)
    {
    	if(!$email || !$list) return;

    	$userid = $this->getUserIDByEmail($email);

    	if($userid > 0)
    	{
    		$this->userRemoveToList($userid, $list);
    	}
    	else
    	{
    		return;
    	}
    }

    /**
     *
     * @param $email
     * @return mixed
     */
    public function user_blacklist($email)
    {
    	if(!$email) return;

    	return addUserToBlackList($email);
    }

	/**
     *
     * @param $email
     * @return mixed
     */
    public function user_unblacklist($email)
    {
    	if(!$email) return;

    	$userid = $this->getUserIDByEmail($email);

    	if($userid > 0)
    	{
    		return unBlackList($userid);
    	}
    	else
    	{
    		return false;
    	}
    }

	private function getUserIDByEmail($email = '') {
	  global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;
	  if (!$email) return;

	  # workaround for integration webbler/phplist
	  if (!isset($table_prefix))
	    $table_prefix = "phplist_";

	  if (isset($tables["attribute"])) {
	    $att_table = $tables["attribute"];
	    $user_att_table = $tables["user_attribute"];
	    $usertable = $tables["user"];
	  } else {
	    $att_table = "attribute";
	    $user_att_table = "user_attribute";
	    $usertable = "user";
	  }
	  $email = mysql_real_escape_string($email, $database_connection);
	  $userid = Sql_Fetch_Row_Query("select id from {$usertable} where email = \"$email\"");
	  $id = $userid[0];

	  return $id;
	}

	private function userAddToList($id = 0, $listID = 0)
	{
		global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;

		$id = intval($id);
		$listID = intval($listID);
		if(!$id || !$listID) return false;

		$query = "replace into ".$tables["listuser"]." (userid,listid,entered) values($id,$listID,now())";
	    $result = Sql_query($query);
	}

	private function userRemoveToList($id = 0, $listID = 0)
	{
		global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;

		$id = intval($id);
		$listID = intval($listID);
		if(!$id || !$listID) return false;

		$query = "delete from ".$tables["listuser"]." where userid = $id and listid = $listID";
	    $result = Sql_query($query);
	}

	private function getLists()
	{
		global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;

		$results = array();
		$result = Sql_query("SELECT * FROM {$tables['list']} order by listorder");
		while ($row = Sql_fetch_array($result))
		{
			$results[$row['id']] = $row;
		}

		return $results;
	}
}

/* End of file phplist_library.php */
/* Location: ./application/libraries/phplist_library.php */

<?php if (!defined(‘BASEPATH’)) exit(‘No direct script access allowed’);

/**
* CodeIgniter phplist Library
*
* CodeIgniter phplist bridge allowing adding users to lists and blacklisting them
*
* @author Georgi Budinov
* @version 1.0
* @link http://georgi.budinov.com
*/
class Phplist_library
{
public $CI;

/**
* Constructor.
*/
public function __construct()
{
global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;
if (!isset($this->CI))
{
$this->CI =& get_instance();
}

$rootPath = $this->CI->config->item(‘root_path’);

define(‘BULLETIN_ROOT_PATH’, $rootPath.’bulletin/’);

$phplist_root_path = (defined(‘PHPLIST_ROOT_PATH’)) ? PHPLIST_ROOT_PATH : BULLETIN_ROOT_PATH;

// Include needed files
include($phplist_root_path . ‘admin/defaultconfig.inc’);
include($phplist_root_path . ‘config/config.php’);
include($phplist_root_path . ‘admin/mysql.inc’);
include($phplist_root_path . ‘admin/connect.php’);
}

/**
*
* @param $email
* @param $lists
* @return mixed
*/
public function user_add($email, $lists = array())
{
if(!$email) return false;

if(is_array($lists) && count($lists))
{
$userID = addNewUser($email);

if($userID > 0)
{
foreach($lists as $list)
{
$this->userAddToList($userID, $list);
}
}
}
else
{
return addNewUser($email);
}
}

public function get_lists()
{
$results = $this->getLists();

return $results;
}

public function user_add_list($email, $list)
{
if(!$email || !$list) return;

$userid = $this->getUserIDByEmail($email);

if($userid > 0)
{
$this->userAddToList($userid, $list);
}
else
{
return;
}
}

public function user_remove_list($email, $list)
{
if(!$email || !$list) return;

$userid = $this->getUserIDByEmail($email);

if($userid > 0)
{
$this->userRemoveToList($userid, $list);
}
else
{
return;
}
}

/**
*
* @param $email
* @return mixed
*/
public function user_blacklist($email)
{
if(!$email) return;

return addUserToBlackList($email);
}

/**
*
* @param $email
* @return mixed
*/
public function user_unblacklist($email)
{
if(!$email) return;

$userid = $this->getUserIDByEmail($email);

if($userid > 0)
{
return unBlackList($userid);
}
else
{
return false;
}
}

private function getUserIDByEmail($email = “) {
global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;
if (!$email) return;

# workaround for integration webbler/phplist
if (!isset($table_prefix))
$table_prefix = „phplist_“;

if (isset($tables["attribute"])) {
$att_table = $tables["attribute"];
$user_att_table = $tables["user_attribute"];
$usertable = $tables["user"];
} else {
$att_table = „attribute“;
$user_att_table = „user_attribute“;
$usertable = „user“;
}
$email = mysql_real_escape_string($email, $database_connection);
$userid = Sql_Fetch_Row_Query(„select id from {$usertable} where email = \“$email\“");
$id = $userid[0];

return $id;
}

private function userAddToList($id = 0, $listID = 0)
{
global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;

$id = intval($id);
$listID = intval($listID);
if(!$id || !$listID) return false;

$query = „replace into „.$tables["listuser"].“ (userid,listid,entered) values($id,$listID,now())“;
$result = Sql_query($query);
}

private function userRemoveToList($id = 0, $listID = 0)
{
global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;

$id = intval($id);
$listID = intval($listID);
if(!$id || !$listID) return false;

$query = „delete from „.$tables["listuser"].“ where userid = $id and listid = $listID“;
$result = Sql_query($query);
}

private function getLists()
{
global $tables, $table_prefix, $config, $usertable_prefix, $database_connection;

$results = array();
$result = Sql_query(„SELECT * FROM {$tables['list']} order by listorder“);
while ($row = Sql_fetch_array($result))
{
$results[$row['id']] = $row;
}

return $results;
}
}

/* End of file phplist_library.php */
/* Location: ./application/libraries/phplist_library.php */

Прочети статията на: English

  1. Все още няма коментари.

  1. Все още няма нито един trackback.