<?php # sql functions, currently only set up to work with MySql # replace functions in this file to make it work with other Databases if (!function_exists("mysqli_connect")) { print "Fatal Error: Mysql is not supported in your PHP, recompile and try again."; exit; } function Sql_Connect($host,$user,$password,$database) { $compress = (empty($GLOBALS['database_connection_compression'])) ? 0 : MYSQL_CLIENT_COMPRESS; $secure = (empty($GLOBALS['database_connection_ssl'])) ? 0 : MYSQL_CLIENT_SSL; if ($host && $user) { $db = @mysqli_connect($host, $user, $password, false, $compress | $secure); } $errno = mysqli_connect_errno(); if (!$errno) { $res = mysqli_select_db($db,$database); $errno = mysqli_errno($db); } if ($errno) { if (isset($GLOBALS['plugins']) && is_array($GLOBALS['plugins'])) { foreach ($GLOBALS['plugins'] as $pluginname => $plugin) { $plugin->processDBerror($errno); } } switch ($errno) { case 1049: # unknown database print "Unknown database, cannot continue"; exit; case 1045: # access denied print "Cannot connect to database, access denied. Please check your configuration or contact the administrator."; exit; case 2002: print "Cannot connect to database, Sql server is not running. Please check your configuration or contact the administrator."; exit; case 1040: # too many connections print "Sorry, the server is currently too busy, please try again later."; exit; case 2005: # "unknown host" print "Unknown database host to connected to, please check your configuration"; exit; case 2006: # "gone away" print "Sorry, the server is currently too busy, please try again later."; exit; case 0: break; default: if (isset($GLOBALS['database_connection'])) { print SQL_Error($GLOBALS['database_connection'],$errno); } else { print "Cannot connect to Database, please check your configuration"; } } exit; } if (!$db) { print "Cannot connect to Database, please check your configuration"; exit; } mysqli_query ($db,"SET NAMES 'utf8'"); unset($GLOBALS['lastquery']); return $db; } function Sql_has_error ($dbconnection) { return mysqli_errno($dbconnection); } function Sql_Error ($dbconnection,$errno = 0) { $msg = mysqli_error($dbconnection); if (!isset($GLOBALS['lastquery'])) { $GLOBALS['lastquery'] = ""; } if (empty($GLOBALS['commandline'])) { /* output('DB error'.$errno); print debug_print_backtrace(); */ return '<div id="dberror">Database error '. $errno.' while doing query '.$GLOBALS['lastquery']. ' ' .$msg.'</div>'; } else { cl_output('Database error '.$errno.' while doing query '.$GLOBALS['lastquery']. ' ' .$msg); } if (function_exists("logevent")) { logevent("Database error: $msg"); } # return "<table class="x" border=1><tr><td class=\"error\">Database Error</td></tr><tr><td><!--$errno: -->$msg</td></tr></table>"; } function Sql_Check_error($dbconnection,$errno = 0) { if (!$errno) $errno = Sql_has_error($dbconnection); if ($errno) { switch ($errno) { case 1049: # unknown database Fatal_Error("unknown database, cannot continue"); exit; case 1045: # access denied Fatal_Error("Cannot connect to database, access denied. Please contact the administrator"); exit; case 2002: Fatal_Error("Cannot connect to database, Sql server is not running. Please contact the administrator"); exit; case 1040: # too many connections Fatal_Error("Sorry, the server is currently too busy, please try again later."); exit; case 0: break; default: print Sql_error($dbconnection,$errno); } return 1; } } function Sql_Query($query,$ignore = 0) { if (empty($GLOBALS['database_connection'])) { $GLOBALS['database_connection'] = Sql_Connect( $GLOBALS['database_host'], $GLOBALS['database_user'], $GLOBALS['database_password'], $GLOBALS['database_name']); } if (isset($GLOBALS['lastquery'])) { unset($GLOBALS['lastquery']); } if (isset($GLOBALS["developer_email"])) { sqllog($query,'/tmp/queries.log'); # time queries to see how slow they are, so they can # be optimized $now = gettimeofday(); $start = $now["sec"] * 1000000 + $now["usec"]; $GLOBALS['lastquery'] = $query; # keep track of queries to see which ones to optimize if (function_exists('stripos')) { if (!stripos($query,'WebblerSessions') && !stripos($query,'cache')) { $store = $query; $store = preg_replace('/\d+/','X',$store); $store = trim($store); @mysqli_query($GLOBALS['database_connection'],sprintf('update querycount set count = count + 1 where query = "%s" and frontend = %d',$store,$frontend)); if (mysqli_affected_rows($GLOBALS['database_connection']) != 2) { @mysqli_query($GLOBALS['database_connection'],sprintf('insert into querycount set count = count + 1 , query = "%s",phplist = 1',$store)); } } } } $GLOBALS["pagestats"]["number_of_queries"]++; $result = mysqli_query($GLOBALS['database_connection'],$query); if (!$ignore) { if (Sql_Check_Error($GLOBALS["database_connection"])) { # dbg("Sql error in $query"); cl_output('Sql error '. $query); } } if (isset($GLOBALS["developer_email"])) { # log time queries take $now = gettimeofday(); $end = $now["sec"] * 1000000 + $now["usec"]; $elapsed = $end - $start; if ($elapsed > 300000) { $query = substr($query,0,200); sqllog(' ['.$elapsed.'] '.$query,"/tmp/phplist-sqltimer.log"); } else { # sqllog(' ['.$elapsed.'] '.$query,"/tmp/phplist-sqltimer.log"); } } return $result; } function Sql_Close() { mysqli_close($GLOBALS["database_connection"]); unset($GLOBALS["database_connection"]); } function Sql_Query_Params($query,$params,$ignore = 0) { if (empty($GLOBALS['database_connection'])) { $GLOBALS['database_connection'] = Sql_Connect( $GLOBALS['database_host'], $GLOBALS['database_user'], $GLOBALS['database_password'], $GLOBALS['database_name']); } if (!is_array($params)) $params = Array($params); foreach ($params as $index => $par) { $qmark = strpos ( $query , '?'); if ($qmark === FALSE) { # dbg("Error, more parameters than placeholders"); } else { ## first replace the ? with some other placeholder, in case the parameters contain ? themselves $query = substr($query,0,$qmark).'"PARAM'.$index.'MARAP"'.substr($query,$qmark+1); } } foreach ($params as $index => $par) { if (is_numeric($par)) { $query = str_replace('"PARAM'.$index.'MARAP"',sql_escape($par),$query); } else { $query = str_replace('PARAM'.$index.'MARAP',sql_escape($par),$query); } } return Sql_Query($query,$ignore); } function sqllog($msg,$logfile = "") { if (!$logfile) return; $fp = @fopen($logfile,"a"); $line = "[".date("d M Y, H:i:s")."] ".getenv("REQUEST_URI").'('.$GLOBALS["pagestats"]["number_of_queries"].") $msg \n"; @fwrite($fp,$line); @fclose($fp); } function Sql_Verbose_Query($query,$ignore = 0) { if (isset($GLOBALS['developer_email'])) { print "<b>$query</b><br>\n"; } flush(); if (!empty($GLOBALS["commandline"])) { ob_end_clean(); print "Sql: $query\n"; ob_start(); } return Sql_Query($query,$ignore); } function Sql_Fetch_Array($dbresult) { return mysqli_fetch_array($dbresult); } function Sql_Fetch_Assoc($dbresult) { return mysqli_fetch_assoc($dbresult); } function Sql_Fetch_Row($dbresult) { if ($dbresult) { return mysqli_fetch_row($dbresult); } return false; } function Sql_Fetch_Row_Query($query,$ignore = 0) { $req = Sql_Query($query,$ignore); return Sql_Fetch_Row($req); } function Sql_Fetch_Array_Query($query,$ignore = 0) { $req = Sql_Query($query,$ignore); return Sql_Fetch_Array($req); } function Sql_Fetch_Assoc_Query($query,$ignore = 0) { $req = Sql_Query($query,$ignore); return Sql_Fetch_Assoc($req); } function Sql_Affected_Rows() { return mysqli_affected_rows($GLOBALS["database_connection"]); } function Sql_Num_Rows($result = "") { return mysqli_num_rows($result); } function Sql_Insert_Id() { return mysqli_insert_id($GLOBALS["database_connection"]); } function Sql_Result($result,$index,$column) { return mysqli_result($result,$index,$column); } function Sql_Free_Result($dbresult) { mysqli_free_result($dbresult); }; function Sql_Table_exists($table,$refresh = 0) { ## table is the full table name including the prefix if (!empty($_GET['pi']) || $refresh || !isset($_SESSION) || !isset($_SESSION["dbtables"]) || !is_array($_SESSION["dbtables"])) { $_SESSION["dbtables"] = array(); # need to improve this. http://bugs.mysql.com/bug.php?id=19588 $req = Sql_Query('select table_name from information_schema.tables where table_schema = "'.$GLOBALS['database_name'].'"'); while ($row = Sql_Fetch_Row($req)) { array_push($_SESSION["dbtables"],$row[0]); } } return in_array($table,$_SESSION["dbtables"]); } function Sql_Table_Column_Exists($table,$column) { ## table is the full table name including the prefix if (Sql_Table_exists($table)) { # need to improve this. http://bugs.mysql.com/bug.php?id=19588 $req = Sql_Query("show columns from $table"); while ($row = Sql_Fetch_Row($req)) { if ($row[0] == $column) return 1; } } } function Sql_Check_For_Table($table) { ## table is the full table name including the prefix, or the abbreviated one without prefix return Sql_Table_exists($table) || (isset($GLOBALS['tables'][$table]) && Sql_Table_exists($GLOBALS['tables'][$table])); } function createTable($table) { ## table is the abbreviated table name one without prefix if (!isset($GLOBALS['tables'][$table])) return false; include dirname(__FILE__).'/structure.php'; if (!empty($DBstruct[$table]) && is_array($DBstruct[$table])) { Sql_Create_table($GLOBALS['tables'][$table],$DBstruct[$table]); return true; } return false; } function Sql_create_Table ($table,$structure) { $query = "CREATE TABLE $table (\n"; while (list($column, $val) = each($structure)) { if (preg_match('/index_\d+/',$column)) { $query .= "index " . $structure[$column][0] . ","; } elseif (preg_match('/unique_\d+/',$column)) { $query .= "unique " . $structure[$column][0] . ","; } else { $query .= "$column " . $structure[$column][0] . ","; } } # get rid of the last , $query = substr($query,0,-1); $query .= "\n) default character set utf8"; # submit it to the database $res = Sql_Query($query,1); unset($_SESSION["dbtables"]); } function Sql_Drop_Table($table) { # print '<br/>DROP '.$table; return mysqli_query($GLOBALS['database_connection'],'drop table if exists '.$table); } function sql_escape($text) { if (!empty($GLOBALS['database_connection'])) { return mysqli_real_escape_string($GLOBALS['database_connection'],$text); } else { ## better than returning $text. This is very much in the beginning when the DB connection hasn't been created yet. return ''; } } function Sql_Replace ($table,$values,$pk) { $query = ' replace into '.$table.' set '; foreach ($values as $key => $val) { if (is_numeric($val) || $val == 'current_timestamp') { $query .= ' '.$key .'= '.sql_escape($val).','; } else { $query .= ' '.$key .'="'.sql_escape($val).'",'; } } $query = substr($query,0,-1); # output($query); return Sql_Query($query); } function Sql_Set_Search_Path($searchpath) { return; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
FCKeditor | Folder | 0755 |
|
|
PEAR | Folder | 0755 |
|
|
PHPMailer | Folder | 0755 |
|
|
PHPMailer6 | Folder | 0755 |
|
|
actions | Folder | 0755 |
|
|
auth | Folder | 0755 |
|
|
commonlib | Folder | 0755 |
|
|
css | Folder | 0755 |
|
|
data | Folder | 0755 |
|
|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
inc | Folder | 0755 |
|
|
info | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
lan | Folder | 0755 |
|
|
locale | Folder | 0755 |
|
|
oldmailer | Folder | 0755 |
|
|
onyxrss | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
styles | Folder | 0755 |
|
|
tests | Folder | 0755 |
|
|
ui | Folder | 0755 |
|
|
uploadimages | Folder | 0755 |
|
|
.gitignore | File | 20 B | 0644 |
|
.htaccess | File | 171 B | 0644 |
|
.minceconf | File | 994 B | 0644 |
|
AnalyticsQuery.php | File | 985 B | 0644 |
|
CsvReader.php | File | 1.27 KB | 0644 |
|
EmailSender.php | File | 477 B | 0644 |
|
about.php | File | 4.22 KB | 0644 |
|
accesscheck.php | File | 1.51 KB | 0644 |
|
addprefix.php | File | 966 B | 0644 |
|
adduser.php | File | 46 B | 0644 |
|
admin.php | File | 10.68 KB | 0644 |
|
adminattributes.php | File | 6.39 KB | 0644 |
|
admins.php | File | 4.54 KB | 0644 |
|
adodb.inc | File | 6.49 KB | 0644 |
|
analytics.php | File | 2.84 KB | 0644 |
|
attributes.php | File | 102 B | 0644 |
|
blacklistemail.php | File | 1.04 KB | 0644 |
|
bounce.php | File | 10.09 KB | 0644 |
|
bouncemgt.php | File | 1.39 KB | 0644 |
|
bouncerule.php | File | 3 KB | 0644 |
|
bouncerules.php | File | 5.86 KB | 0644 |
|
bounces.php | File | 6.01 KB | 0644 |
|
catlists.php | File | 2.64 KB | 0644 |
|
checkbouncerules.php | File | 1.34 KB | 0644 |
|
checki18n.php | File | 2.69 KB | 0644 |
|
checkprerequisites.php | File | 1.05 KB | 0644 |
|
class.html.mime.mail-outlookfix.inc | File | 19.93 KB | 0644 |
|
class.html.mime.mail.inc | File | 19.35 KB | 0644 |
|
class.image.inc | File | 5.77 KB | 0644 |
|
class.phplistmailer.php | File | 24.23 KB | 0644 |
|
class.phplistmailerbase.php | File | 1.5 KB | 0644 |
|
community.php | File | 1.78 KB | 0644 |
|
communityfeed.php | File | 2.36 KB | 0644 |
|
configure.php | File | 5.25 KB | 0644 |
|
connect.php | File | 74.36 KB | 0644 |
|
convertstats.php | File | 5.51 KB | 0644 |
|
converttoutf8.php | File | 3.77 KB | 0644 |
|
cron.php | File | 3.37 KB | 0644 |
|
date.php | File | 6.08 KB | 0644 |
|
dbcheck.php | File | 111 B | 0644 |
|
defaultFrontendTexts.php | File | 9.57 KB | 0644 |
|
defaultconfig.inc | File | 23.52 KB | 0644 |
|
defaultconfig.php | File | 24.92 KB | 0644 |
|
defaultplugin.php | File | 23.31 KB | 0644 |
|
defaults.php | File | 2.83 KB | 0644 |
|
defaultsystemtemplate.php | File | 1.83 KB | 0644 |
|
defaulttest.php | File | 1.12 KB | 0644 |
|
dlusers.php | File | 232 B | 0644 |
|
domainbounces.php | File | 507 B | 0644 |
|
domainstats.php | File | 2.83 KB | 0644 |
|
editattributes.php | File | 6.7 KB | 0644 |
|
editlist.php | File | 6.79 KB | 0644 |
|
error_log | File | 274 B | 0644 |
|
eventlog.php | File | 4.49 KB | 0644 |
|
export.php | File | 4.84 KB | 0644 |
|
exportuserdata.php | File | 6.36 KB | 0644 |
|
fckphplist.php | File | 43.21 KB | 0644 |
|
footer.inc | File | 1.19 KB | 0644 |
|
footer.old.inc | File | 1.82 KB | 0644 |
|
gchart.php | File | 869 B | 0644 |
|
generatebouncerules.php | File | 5.24 KB | 0644 |
|
getrss.php | File | 3.94 KB | 0644 |
|
header.inc | File | 1.75 KB | 0644 |
|
home.php | File | 16.36 KB | 0644 |
|
hostedprocessqueuesetup.php | File | 1.64 KB | 0644 |
|
htaccess | File | 311 B | 0644 |
|
image.php | File | 795 B | 0644 |
|
import.php | File | 2.54 KB | 0644 |
|
import1.php | File | 9.41 KB | 0644 |
|
import2.php | File | 243 B | 0644 |
|
import3.php | File | 20.26 KB | 0644 |
|
import4.php | File | 15.63 KB | 0644 |
|
importadmin.php | File | 14.5 KB | 0644 |
|
importlib.php | File | 2.86 KB | 0644 |
|
importsimple.php | File | 5.84 KB | 0644 |
|
index.php | File | 22.53 KB | 0644 |
|
index.php.old | File | 22.53 KB | 0644 |
|
info.php | File | 1.01 KB | 0644 |
|
init.php | File | 21.7 KB | 0644 |
|
initialise.php | File | 10.02 KB | 0644 |
|
initlanguages.php | File | 794 B | 0644 |
|
languages.php | File | 22.43 KB | 0644 |
|
lib.php | File | 59.85 KB | 0644 |
|
list.php | File | 11.79 KB | 0644 |
|
listbounces.php | File | 4.64 KB | 0644 |
|
login.php | File | 6.05 KB | 0755 |
|
logout.php | File | 224 B | 0644 |
|
massremove.php | File | 1.81 KB | 0644 |
|
massunconfirm.php | File | 1.52 KB | 0644 |
|
mclicks.php | File | 9.55 KB | 0644 |
|
members.php | File | 16.58 KB | 0644 |
|
mergeduplicates.php | File | 4.28 KB | 0644 |
|
message.php | File | 7.27 KB | 0644 |
|
messages.php | File | 18.94 KB | 0644 |
|
mimePart.php | File | 10.7 KB | 0644 |
|
minify.txt | File | 201 B | 0644 |
|
msgbounces.php | File | 3.79 KB | 0644 |
|
msgstatus.php | File | 1.18 KB | 0644 |
|
mviews.php | File | 7.88 KB | 0644 |
|
mysql.inc | File | 11.19 KB | 0644 |
|
mysqli.inc | File | 11.58 KB | 0644 |
|
pageaction.php | File | 1.08 KB | 0644 |
|
pagetop.php | File | 1.17 KB | 0644 |
|
phpListAdminAuthentication.php | File | 7.2 KB | 0644 |
|
pluginlib.php | File | 6.39 KB | 0644 |
|
plugins.php | File | 10.32 KB | 0644 |
|
preparesend.php | File | 627 B | 0644 |
|
processbounces.php | File | 29.71 KB | 0644 |
|
processqueue.php | File | 3.73 KB | 0644 |
|
purgerss.php | File | 1.38 KB | 0644 |
|
readtestmail.php | File | 11.26 KB | 0644 |
|
reconcileusers.php | File | 25.16 KB | 0644 |
|
redirecttoupdater.php | File | 170 B | 0644 |
|
reindex.php | File | 1.69 KB | 0644 |
|
rsslib.php | File | 2.8 KB | 0644 |
|
runcommand.php | File | 583 B | 0644 |
|
send.php | File | 5.58 KB | 0644 |
|
send_core.php | File | 56.08 KB | 0644 |
|
sendemaillib.php | File | 64.2 KB | 0644 |
|
sendprepared.php | File | 4.33 KB | 0644 |
|
sessionlib.php | File | 2.92 KB | 0644 |
|
setpermissions.php | File | 1.57 KB | 0644 |
|
setup.php | File | 3.21 KB | 0644 |
|
sidebar.php | File | 2.67 KB | 0644 |
|
spage.php | File | 3.29 KB | 0644 |
|
spageedit.php | File | 17.07 KB | 0644 |
|
statsmgt.php | File | 1.22 KB | 0644 |
|
statsoverview.php | File | 7.62 KB | 0644 |
|
stresstest.php | File | 5.1 KB | 0644 |
|
structure.php | File | 26.79 KB | 0644 |
|
subscribelib2.php | File | 66.02 KB | 0644 |
|
subscriberstats.php | File | 591 B | 0644 |
|
suppressionlist.php | File | 1.71 KB | 0644 |
|
system.php | File | 784 B | 0644 |
|
systemstats.php | File | 7.71 KB | 0644 |
|
template.php | File | 12.72 KB | 0644 |
|
templates.php | File | 3.02 KB | 0644 |
|
tests.php | File | 1.57 KB | 0644 |
|
uclicks.php | File | 6.52 KB | 0644 |
|
update.php | File | 187 B | 0644 |
|
updateLib.php | File | 2.77 KB | 0644 |
|
updatetlds.php | File | 399 B | 0644 |
|
updatetranslation.php | File | 1.94 KB | 0644 |
|
upgrade.php | File | 29.03 KB | 0644 |
|
user.php | File | 2.35 KB | 0644 |
|
usercheck.php | File | 2.27 KB | 0644 |
|
userclicks.php | File | 8 KB | 0644 |
|
userhistory.php | File | 127 B | 0644 |
|
usermgt.php | File | 1.83 KB | 0644 |
|
users.php | File | 393 B | 0644 |
|
vCard.php | File | 1.9 KB | 0644 |
|
viewmessage.php | File | 610 B | 0644 |
|
viewrss.php | File | 4.07 KB | 0644 |
|
viewtemplate.php | File | 1.82 KB | 0644 |
|
vote.php | File | 38 B | 0644 |
|