Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wordfenc.../lib
File: wfIssues.php
if (empty($issues)) { return; }
[500] Fix | Delete
[501] Fix | Delete
$emailed_issues = wfConfig::get_ser('emailedIssuesList', array());
[502] Fix | Delete
if (!is_array($emailed_issues)) { return; }
[503] Fix | Delete
[504] Fix | Delete
$updated = array();
[505] Fix | Delete
foreach ($emailed_issues as $ei) {
[506] Fix | Delete
$cleared = false;
[507] Fix | Delete
foreach ($issues as $issue) {
[508] Fix | Delete
if ($issue['ignoreP'] == $ei['ignoreP'] || $issue['ignoreC'] == $ei['ignoreC']) {
[509] Fix | Delete
//Discard this one
[510] Fix | Delete
$cleared = true;
[511] Fix | Delete
}
[512] Fix | Delete
}
[513] Fix | Delete
if (!$cleared) {
[514] Fix | Delete
$updated[] = $ei;
[515] Fix | Delete
}
[516] Fix | Delete
}
[517] Fix | Delete
[518] Fix | Delete
wfConfig::set_ser('emailedIssuesList', $updated, false, wfConfig::DONT_AUTOLOAD);
[519] Fix | Delete
}
[520] Fix | Delete
public function deleteIssue($id){
[521] Fix | Delete
$this->clearEmailedStatus(array($this->getIssueByID($id)));
[522] Fix | Delete
$this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id);
[523] Fix | Delete
if (wfCentral::isConnected()) {
[524] Fix | Delete
wfCentral::deleteIssue($id);
[525] Fix | Delete
}
[526] Fix | Delete
}
[527] Fix | Delete
[528] Fix | Delete
public function deleteUpdateIssues($type) {
[529] Fix | Delete
$issues = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$this->issuesTable} WHERE status = 'new' AND type = '%s'", $type);
[530] Fix | Delete
$this->clearEmailedStatus($issues);
[531] Fix | Delete
[532] Fix | Delete
$this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new' AND type = '%s'", $type);
[533] Fix | Delete
[534] Fix | Delete
if (wfCentral::isConnected()) {
[535] Fix | Delete
wfCentral::deleteIssueTypes(array($type));
[536] Fix | Delete
}
[537] Fix | Delete
}
[538] Fix | Delete
[539] Fix | Delete
public function deleteAllUpdateIssues() {
[540] Fix | Delete
$issues = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$this->issuesTable} WHERE status = 'new' AND (type = 'wfUpgrade' OR type = 'wfUpgradeError' OR type = 'wfPluginUpgrade' OR type = 'wfThemeUpgrade')");
[541] Fix | Delete
$this->clearEmailedStatus($issues);
[542] Fix | Delete
[543] Fix | Delete
$this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new' AND (type = 'wfUpgrade' OR type = 'wfUpgradeError' OR type = 'wfPluginUpgrade' OR type = 'wfThemeUpgrade')");
[544] Fix | Delete
[545] Fix | Delete
if (wfCentral::isConnected()) {
[546] Fix | Delete
wfCentral::deleteIssueTypes(array('wfUpgrade', 'wfUpgradeError', 'wfPluginUpgrade', 'wfThemeUpgrade'));
[547] Fix | Delete
}
[548] Fix | Delete
}
[549] Fix | Delete
[550] Fix | Delete
public function updateIssue($id, $status){ //ignoreC, ignoreP, delete or new
[551] Fix | Delete
if($status == 'delete'){
[552] Fix | Delete
if (wfCentral::isConnected()) {
[553] Fix | Delete
wfCentral::deleteIssue($id);
[554] Fix | Delete
}
[555] Fix | Delete
$this->clearEmailedStatus(array($this->getIssueByID($id)));
[556] Fix | Delete
$this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id);
[557] Fix | Delete
} else if($status == 'ignoreC' || $status == 'ignoreP' || $status == 'new'){
[558] Fix | Delete
$this->getDB()->queryWrite("update " . $this->issuesTable . " set status='%s' where id=%d", $status, $id);
[559] Fix | Delete
[560] Fix | Delete
if (wfCentral::isConnected()) {
[561] Fix | Delete
$issue = $this->getDB()->querySelect('SELECT * FROM ' . $this->issuesTable . ' where id=%d', $id);
[562] Fix | Delete
if ($issue) {
[563] Fix | Delete
wfCentral::sendIssues($issue);
[564] Fix | Delete
}
[565] Fix | Delete
}
[566] Fix | Delete
}
[567] Fix | Delete
}
[568] Fix | Delete
public function getIssueByID($id) {
[569] Fix | Delete
$rec = $this->getDB()->querySingleRec("select * from " . $this->issuesTable . " where id=%d", $id);
[570] Fix | Delete
$rec['data'] = unserialize($rec['data']);
[571] Fix | Delete
return $rec;
[572] Fix | Delete
}
[573] Fix | Delete
public function getIssueCounts() {
[574] Fix | Delete
global $wpdb;
[575] Fix | Delete
$counts = $wpdb->get_results('SELECT COUNT(*) AS c, status FROM ' . $this->issuesTable . ' WHERE status = "new" OR status = "ignoreP" OR status = "ignoreC" GROUP BY status', ARRAY_A);
[576] Fix | Delete
$result = array();
[577] Fix | Delete
foreach ($counts as $row) {
[578] Fix | Delete
$result[$row['status']] = $row['c'];
[579] Fix | Delete
}
[580] Fix | Delete
return $result;
[581] Fix | Delete
}
[582] Fix | Delete
public function getIssues($offset = 0, $limit = 100, $ignoredOffset = 0, $ignoredLimit = 100) {
[583] Fix | Delete
/** @var wpdb $wpdb */
[584] Fix | Delete
global $wpdb;
[585] Fix | Delete
[586] Fix | Delete
$siteCleaningTypes = array('file', 'checkGSB', 'checkSpamIP', 'commentBadURL', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'spamvertizeCheck', 'suspiciousAdminUsers');
[587] Fix | Delete
$sortTagging = 'CASE';
[588] Fix | Delete
foreach ($siteCleaningTypes as $index => $t) {
[589] Fix | Delete
$sortTagging .= ' WHEN type = \'' . esc_sql($t) . '\' THEN ' . ((int) $index);
[590] Fix | Delete
}
[591] Fix | Delete
$sortTagging .= ' ELSE 999 END';
[592] Fix | Delete
[593] Fix | Delete
$ret = array(
[594] Fix | Delete
'new' => array(),
[595] Fix | Delete
'ignored' => array()
[596] Fix | Delete
);
[597] Fix | Delete
$userIni = ini_get('user_ini.filename');
[598] Fix | Delete
$q1 = $this->getDB()->querySelect("SELECT *, {$sortTagging} AS sortTag FROM " . $this->issuesTable . " WHERE status = 'new' ORDER BY severity DESC, sortTag ASC, type ASC, time DESC LIMIT %d,%d", $offset, $limit);
[599] Fix | Delete
$q2 = $this->getDB()->querySelect("SELECT *, {$sortTagging} AS sortTag FROM " . $this->issuesTable . " WHERE status = 'ignoreP' OR status = 'ignoreC' ORDER BY severity DESC, sortTag ASC, type ASC, time DESC LIMIT %d,%d", $ignoredOffset, $ignoredLimit);
[600] Fix | Delete
$q = array_merge($q1, $q2);
[601] Fix | Delete
foreach($q as $i){
[602] Fix | Delete
$i['data'] = unserialize($i['data']);
[603] Fix | Delete
$i['timeAgo'] = wfUtils::makeTimeAgo(time() - $i['time']);
[604] Fix | Delete
$i['displayTime'] = wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $i['time']);
[605] Fix | Delete
$i['longMsg'] = wp_kses($i['longMsg'], 'post');
[606] Fix | Delete
if($i['status'] == 'new'){
[607] Fix | Delete
$ret['new'][] = $i;
[608] Fix | Delete
} else if($i['status'] == 'ignoreP' || $i['status'] == 'ignoreC'){
[609] Fix | Delete
$ret['ignored'][] = $i;
[610] Fix | Delete
} else {
[611] Fix | Delete
error_log("Issue has bad status: " . $i['status']);
[612] Fix | Delete
continue;
[613] Fix | Delete
}
[614] Fix | Delete
}
[615] Fix | Delete
foreach($ret as $status => &$issueList){
[616] Fix | Delete
for($i = 0; $i < sizeof($issueList); $i++){
[617] Fix | Delete
if ($issueList[$i]['type'] == 'file' || $issueList[$i]['type'] == 'knownfile') {
[618] Fix | Delete
if (array_key_exists('realFile', $issueList[$i]['data'])) {
[619] Fix | Delete
$localFile = $issueList[$i]['data']['realFile'];
[620] Fix | Delete
$issueList[$i]['data']['realFileToken'] = self::generateRealFileToken($localFile);
[621] Fix | Delete
}
[622] Fix | Delete
else {
[623] Fix | Delete
$localFile = $issueList[$i]['data']['file'];
[624] Fix | Delete
if ($localFile != '.htaccess' && $localFile != $userIni) {
[625] Fix | Delete
$localFile = ABSPATH . '/' . preg_replace('/^[\.\/]+/', '', $localFile);
[626] Fix | Delete
}
[627] Fix | Delete
else {
[628] Fix | Delete
$localFile = ABSPATH . '/' . $localFile;
[629] Fix | Delete
}
[630] Fix | Delete
}
[631] Fix | Delete
[632] Fix | Delete
if(file_exists($localFile)){
[633] Fix | Delete
$issueList[$i]['data']['fileExists'] = true;
[634] Fix | Delete
} else {
[635] Fix | Delete
$issueList[$i]['data']['fileExists'] = '';
[636] Fix | Delete
}
[637] Fix | Delete
}
[638] Fix | Delete
if ($issueList[$i]['type'] == 'database') {
[639] Fix | Delete
$issueList[$i]['data']['optionExists'] = false;
[640] Fix | Delete
if (!empty($issueList[$i]['data']['site_id'])) {
[641] Fix | Delete
$table_options = wfDB::blogTable('options', $issueList[$i]['data']['site_id']);
[642] Fix | Delete
$issueList[$i]['data']['optionExists'] = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM {$table_options} WHERE option_name = %s", $issueList[$i]['data']['option_name'])) > 0;
[643] Fix | Delete
}
[644] Fix | Delete
}
[645] Fix | Delete
$issueList[$i]['issueIDX'] = $i;
[646] Fix | Delete
if (isset($issueList[$i]['data']['cType'])) {
[647] Fix | Delete
$issueList[$i]['data']['ucType'] = ucwords($issueList[$i]['data']['cType']);
[648] Fix | Delete
}
[649] Fix | Delete
}
[650] Fix | Delete
}
[651] Fix | Delete
return $ret; //array of lists of issues by status
[652] Fix | Delete
}
[653] Fix | Delete
public function getPendingIssues($offset = 0, $limit = 100){
[654] Fix | Delete
/** @var wpdb $wpdb */
[655] Fix | Delete
global $wpdb;
[656] Fix | Delete
$issues = $this->getDB()->querySelect("SELECT * FROM {$this->pendingIssuesTable} ORDER BY id ASC LIMIT %d,%d", $offset, $limit);
[657] Fix | Delete
foreach($issues as &$i){
[658] Fix | Delete
$i['data'] = unserialize($i['data']);
[659] Fix | Delete
}
[660] Fix | Delete
return $issues;
[661] Fix | Delete
}
[662] Fix | Delete
public function getFixableIssueCount() {
[663] Fix | Delete
global $wpdb;
[664] Fix | Delete
$issues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE data LIKE '%s:6:\"canFix\";b:1;%'");
[665] Fix | Delete
$count = 0;
[666] Fix | Delete
foreach ($issues as $i) {
[667] Fix | Delete
$i['data'] = unserialize($i['data']);
[668] Fix | Delete
if (isset($i['data']['canFix']) && $i['data']['canFix']) {
[669] Fix | Delete
$count++;
[670] Fix | Delete
}
[671] Fix | Delete
}
[672] Fix | Delete
return $count;
[673] Fix | Delete
}
[674] Fix | Delete
public function getDeleteableIssueCount() {
[675] Fix | Delete
global $wpdb;
[676] Fix | Delete
$issues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE data LIKE '%s:9:\"canDelete\";b:1;%'");
[677] Fix | Delete
$count = 0;
[678] Fix | Delete
foreach ($issues as $i) {
[679] Fix | Delete
$i['data'] = unserialize($i['data']);
[680] Fix | Delete
if (isset($i['data']['canDelete']) && $i['data']['canDelete']) {
[681] Fix | Delete
$count++;
[682] Fix | Delete
}
[683] Fix | Delete
}
[684] Fix | Delete
return $count;
[685] Fix | Delete
}
[686] Fix | Delete
public function getIssueCount() {
[687] Fix | Delete
return (int) $this->getDB()->querySingle("select COUNT(*) from " . $this->issuesTable . " WHERE status = 'new'");
[688] Fix | Delete
}
[689] Fix | Delete
public function getPendingIssueCount() {
[690] Fix | Delete
return (int) $this->getDB()->querySingle("select COUNT(*) from " . $this->pendingIssuesTable . " WHERE status = 'new'");
[691] Fix | Delete
}
[692] Fix | Delete
public function getLastIssueUpdateTimestamp() {
[693] Fix | Delete
return (int) $this->getDB()->querySingle("select MAX(lastUpdated) from " . $this->issuesTable);
[694] Fix | Delete
}
[695] Fix | Delete
public function reconcileUpgradeIssues($report = null, $useCachedValued = false) {
[696] Fix | Delete
if ($report === null) {
[697] Fix | Delete
$report = new wfActivityReport();
[698] Fix | Delete
}
[699] Fix | Delete
[700] Fix | Delete
$updatesNeeded = $report->getUpdatesNeeded($useCachedValued);
[701] Fix | Delete
if ($updatesNeeded) {
[702] Fix | Delete
if (!$updatesNeeded['core']) {
[703] Fix | Delete
$this->deleteUpdateIssues('wfUpgrade');
[704] Fix | Delete
}
[705] Fix | Delete
[706] Fix | Delete
if ($updatesNeeded['plugins']) {
[707] Fix | Delete
$upgradeNames = array();
[708] Fix | Delete
foreach ($updatesNeeded['plugins'] as $p) {
[709] Fix | Delete
$name = $p['Name'];
[710] Fix | Delete
$upgradeNames[$name] = 1;
[711] Fix | Delete
}
[712] Fix | Delete
$upgradeIssues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE status = 'new' AND type = 'wfPluginUpgrade'");
[713] Fix | Delete
foreach ($upgradeIssues as $issue) {
[714] Fix | Delete
$data = unserialize($issue['data']);
[715] Fix | Delete
$name = $data['Name'];
[716] Fix | Delete
if (!isset($upgradeNames[$name])) { //Some plugins don't have a slug associated with them, so we anchor on the name
[717] Fix | Delete
$this->deleteIssue($issue['id']);
[718] Fix | Delete
}
[719] Fix | Delete
}
[720] Fix | Delete
}
[721] Fix | Delete
else {
[722] Fix | Delete
$this->deleteUpdateIssues('wfPluginUpgrade');
[723] Fix | Delete
}
[724] Fix | Delete
[725] Fix | Delete
if ($updatesNeeded['themes']) {
[726] Fix | Delete
$upgradeNames = array();
[727] Fix | Delete
foreach ($updatesNeeded['themes'] as $t) {
[728] Fix | Delete
$name = $t['Name'];
[729] Fix | Delete
$upgradeNames[$name] = 1;
[730] Fix | Delete
}
[731] Fix | Delete
$upgradeIssues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE status = 'new' AND type = 'wfThemeUpgrade'");
[732] Fix | Delete
foreach ($upgradeIssues as $issue) {
[733] Fix | Delete
$data = unserialize($issue['data']);
[734] Fix | Delete
$name = $data['Name'];
[735] Fix | Delete
if (!isset($upgradeNames[$name])) { //Some themes don't have a slug associated with them, so we anchor on the name
[736] Fix | Delete
$this->deleteIssue($issue['id']);
[737] Fix | Delete
}
[738] Fix | Delete
}
[739] Fix | Delete
}
[740] Fix | Delete
else {
[741] Fix | Delete
$this->deleteUpdateIssues('wfThemeUpgrade');
[742] Fix | Delete
}
[743] Fix | Delete
}
[744] Fix | Delete
else {
[745] Fix | Delete
$this->deleteAllUpdateIssues();
[746] Fix | Delete
}
[747] Fix | Delete
[748] Fix | Delete
wfScanEngine::refreshScanNotification($this);
[749] Fix | Delete
}
[750] Fix | Delete
private function getDB(){
[751] Fix | Delete
if(! $this->db){
[752] Fix | Delete
$this->db = new wfDB();
[753] Fix | Delete
}
[754] Fix | Delete
return $this->db;
[755] Fix | Delete
}
[756] Fix | Delete
[757] Fix | Delete
/**
[758] Fix | Delete
* @return string
[759] Fix | Delete
*/
[760] Fix | Delete
public function getIssuesTable() {
[761] Fix | Delete
return $this->issuesTable;
[762] Fix | Delete
}
[763] Fix | Delete
[764] Fix | Delete
private static function getRealFileTokenKey($realFile) {
[765] Fix | Delete
return 'wf-real-file-' . base64_encode($realFile);
[766] Fix | Delete
}
[767] Fix | Delete
[768] Fix | Delete
private static function generateRealFileToken($realFile) {
[769] Fix | Delete
$key = self::getRealFileTokenKey($realFile);
[770] Fix | Delete
return wp_create_nonce($key);
[771] Fix | Delete
}
[772] Fix | Delete
[773] Fix | Delete
public static function verifyRealFileToken($token, $realFile) {
[774] Fix | Delete
$key = self::getRealFileTokenKey($realFile);
[775] Fix | Delete
return wp_verify_nonce($token, $key);
[776] Fix | Delete
}
[777] Fix | Delete
}
[778] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function