Интеграция на 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
Все още няма коментари.