diff --git a/.gitignore b/.gitignore index 7aa315be2..40d900a2f 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,18 @@ ehthumbs.db Thumbs.db .idea/ -/nbproject/private/ \ No newline at end of file +/nbproject/private/ +data_files/ +qa-plugin/ajax-images +qa-plugin/api +qa-plugin/Donut-admin +qa-lang/fr +qa-plugin/neayi +qa-plugin/q2a-ask-with-tags-list +qa-plugin/q2a-breadcrumbs +qa-plugin/q2a-email-notification +qa-plugin/q2a-markdown-editor +qa-plugin/q2a-open-login +qa-plugin/q2a-social-share +qa-theme/Donut-theme +qa-plugin/QA-Google-Analytics-Plugin diff --git a/qa-include/Q2A/Plugin/PluginManager.php b/qa-include/Q2A/Plugin/PluginManager.php index ebf7ce21b..dd6f2a1e0 100644 --- a/qa-include/Q2A/Plugin/PluginManager.php +++ b/qa-include/Q2A/Plugin/PluginManager.php @@ -136,7 +136,12 @@ public function getFilesystemPlugins($fullPath = false) { $result = array(); - $fileSystemPluginFiles = glob(QA_PLUGIN_DIR . '*/qa-plugin.php'); + $plugins = glob(QA_PLUGIN_DIR . '*'); + foreach ($plugins as $aPlugin) + { + if (file_exists($aPlugin . '/qa-plugin.php')) + $fileSystemPluginFiles[] = $aPlugin . '/qa-plugin.php' . "\n"; + } foreach ($fileSystemPluginFiles as $pluginFile) { $directory = dirname($pluginFile) . '/'; diff --git a/qa-include/app/admin.php b/qa-include/app/admin.php index bd998edcb..3757a21a3 100644 --- a/qa-include/app/admin.php +++ b/qa-include/app/admin.php @@ -148,7 +148,11 @@ function qa_admin_theme_options() if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } $metadataUtil = new Q2A_Util_Metadata(); - foreach (glob(QA_THEME_DIR . '*', GLOB_ONLYDIR) as $directory) { + foreach (glob(QA_THEME_DIR . '*') as $directory) { + + if (!file_exists($directory . '/qa-theme.php')) + continue; + $theme = basename($directory); $metadata = $metadataUtil->fetchFromAddonPath($directory); if (empty($metadata)) { diff --git a/qa-include/app/blobs.php b/qa-include/app/blobs.php index 41a64ad6c..5b2f23edd 100644 --- a/qa-include/app/blobs.php +++ b/qa-include/app/blobs.php @@ -213,5 +213,18 @@ function qa_blob_exists($blobid) require_once QA_INCLUDE_DIR . 'db/blobs.php'; - return qa_db_blob_exists($blobid); + $db_blob_exists = qa_db_blob_exists($blobid); + + if (!$db_blob_exists) + return false; + + if (!defined('QA_BLOBS_DIRECTORY')) + return true; + else + { + $blob = qa_db_blob_read($blobid); + + $filename = qa_get_blob_filename($blobid, $blob['format']); + return is_readable($filename); + } } diff --git a/qa-include/db/users.php b/qa-include/db/users.php index a8ddcd8fe..f2300a4af 100644 --- a/qa-include/db/users.php +++ b/qa-include/db/users.php @@ -83,6 +83,14 @@ function qa_db_user_delete($userid) { qa_db_query_sub('UPDATE ^posts SET lastuserid=NULL WHERE lastuserid=$', $userid); qa_db_query_sub('DELETE FROM ^userpoints WHERE userid=$', $userid); + + // Delete blobs including the files: + require_once QA_INCLUDE_DIR . 'app/blobs.php'; + + $blobIds = qa_db_read_all_values(qa_db_query_sub('SELECT avatarblobid FROM ^users WHERE userid=$', $userid)); + foreach ($blobIds as $blobid) + qa_delete_blob($blobid); + qa_db_query_sub('DELETE FROM ^blobs WHERE blobid=(SELECT avatarblobid FROM ^users WHERE userid=$)', $userid); qa_db_query_sub('DELETE FROM ^users WHERE userid=$', $userid); @@ -92,6 +100,7 @@ function qa_db_user_delete($userid) qa_db_query_sub('UPDATE ^posts SET userid=NULL WHERE userid=$', $userid); qa_db_query_sub('DELETE FROM ^userlogins WHERE userid=$', $userid); qa_db_query_sub('DELETE FROM ^userprofile WHERE userid=$', $userid); + qa_db_query_sub('DELETE FROM ^usermetas WHERE userid=$', $userid); qa_db_query_sub('DELETE FROM ^userfavorites WHERE userid=$', $userid); qa_db_query_sub('DELETE FROM ^userevents WHERE userid=$', $userid); qa_db_query_sub('DELETE FROM ^uservotes WHERE userid=$', $userid);