I see that some of these errors can occur if you upgrade to 4.0.21 on an installation that had not been patched since before the December patch, or if the December patch was not successfully applied for some reason. It was actually possible for this error to happen in the December patch as well.
In this case, vBulletin users and XenForo users still using XenForo 1.2 will have to manually patch their installation, or wait until 4.0.22. If you need a manual December patch, please follow the following steps:
- For vBulletin: Delete the contents of [wiki-attach-dir]/proxy
For XenForo: Delete the contents of /internal_data/vw_proxy - MySQL query:
Code:
TRUNCATE TABLE vw_proxy
- MySQL query:
Code:
ALTER TABLE vw_proxy DROP PRIMARY KEY
- MySQL query:
Code:
ALTER TABLE vw_proxy
ADD COLUMN proxyid INT(10) UNSIGNED AUTO_INCREMENT,
ADD COLUMN url BLOB NULL,
CHANGE COLUMN challenge challenge VARCHAR(40) NOT NULL DEFAULT '',
ADD PRIMARY KEY (proxyid),
ADD INDEX challenge (challenge)
- For vBulletin:
MySQL query:
Code:
DELETE FROM datastore
WHERE title = 'vw_proxy_usage'
LIMIT 1
For XenForo: MySQL query:
Code:
DELETE FROM xf_data_registry
WHERE data_key = 'vw_proxy_usage'
LIMIT 1
If you use XenForo 1.3+, you do not require the December patch, so edit
vault/core/model/cron/cleanup/xf.php. Find:
Code:
if (vw_Compat::not('1.3.0 Beta 1') OR !vw_Hard_Core::model('Version')->patched(':XF 1.3.0 Beta 1', 'proxy'))
Before it, add:
Some of the other errors are happening because a required cache rebuild has not completed for some reason. Please go to Wiki Admin Panel > Structures > Content Types, and toggle one of the types off/on. This should rebuild the cache.
There are two undefined index errors which are related to the February patch. Edit
vault/core/controller/dm/base/vw.php. Find:
Code:
$lastdates["$nodeid"] = max($lastdates["$nodeid"], $items["$itemid"]['dateline']);
Replace with:
Code:
if (isset($lastdates["$nodeid"]))
{
$lastdates["$nodeid"] = max($lastdates["$nodeid"], $items["$itemid"]['dateline']);
}
else
{
$lastdates["$nodeid"] = $items["$itemid"]['dateline'];
}
Edit
vault/core/controller/dm/xf.php. Find:
Code:
$idfield = !empty($node['isPage']) ? 'pageid' : $node['idfield'];
if (!empty($node) AND !empty($existing["$idfield"]))
{
$this->set_info('itemid', $existing["$idfield"], false);
}
Replace with:
Code:
if ($node)
{
$idfield = !empty($node['isPage']) ? 'pageid' : $node['idfield'];
if (!empty($existing["$idfield"]))
{
$this->set_info('itemid', $existing["$idfield"], false);
}
}
A few of your undefined index errors are caused by corrupt content (looks like corrupt attachments). You can try the tool in Wiki Admin Panel > Maintenance > Remove Corrupt Content. If that does not work, you must visit the corrupt content (while not in debug mode!), and delete the content in the normal way as if it was normal not-corrupt content. Ignore any undefined index errors generated during this process.
For the smilie issue (I assume this is thrown during Preview), edit
vault/core/controller/dm/page/vw.php. Find:
Code:
$finder->parse($args);
Before it, add:
Code:
$smilie = $this->instance->get_info('parse_smile');
if ($smilie === null)
{
$smilie = true;
if ($this->instance->get_existing('pageid'))
{
$smilie = !($this->instance->get_info('flags') & vw_Hard_Core::model('Bitfield')->get_bit('misc', 'vw_revision_flags', 'nosmile'));
}
}
$args['smilie'] = $smilie;
For the following errors, I will need the full stack traces associated with the error, or I will not be able to help:
- Fatal Error: Call to member function fetch() on boolean
* If your PHP version is lower than 7.0, you will probably not have a stack trace available. In this case, we would need a private ticket with file access and/or full instructions how to cause the error.
Almost none of the errors you mentioned, however, prevent the user from successfully using the wiki (they are all "silent" errors), so your "unusable" claim is false. If you are being blocked from doing things by these error messages, that means that you are running your site in debug mode; if you prefer minor errors not to hinder you from using your site, you probably should not be running debug mode at the time.