LH_Polls provides static identity/path methods: return_plugin_namespace() (lh_polls), return_plugin_text_domain() (lh-polls), return_plugin_name(), return_plugin_version(), return_plugin_file(), return_plugin_dir(), return_plugin_url(). No global constants defined.
Tables are per-site via $wpdb->prefix. On network activation, tables are created for all existing sites (looping get_sites() + switch_to_blog()). New sites get tables via the wpmu_new_blog hook. lh_polls_db_version option is stored per-site.
lh-polls/
lh-polls.php - bootstrap, requires + plugins_loaded instantiation
includes/
class-lh-polls.php - identity methods
class-lh-polls-db.php - DB queries, table creation, caching
class-lh-polls-post-types.php - CPT registration, meta-box wiring, shared save guard, delete cleanup, publish validation
class-lh-polls-settings-metabox.php - Poll Settings metabox (render+save) and its meta registration
class-lh-polls-options-metabox.php - Options metabox (render+save) and publish-validation helper
class-lh-polls-votes-metabox.php - Votes metabox (render+save), required-voters section, delete-vote handler
class-lh-polls-admin-notices.php - validation + unresolved-email admin notices
class-lh-polls-comments.php - comment/vote sync, comment filtering
class-lh-polls-embed.php - oEmbed response, embed document, the_content, shared render_poll_markup()
class-lh-polls-voting.php - vote form handler, validation, redirects, cache purge
class-lh-polls-block.php - block registration, oEmbed wrapper
class-lh-polls-abilities.php - MCP abilities
class-lh-polls-reminders.php - required-voter reminder emails
blocks/lh-polls/
editor.js / editor.css - block editor poll picker
resize.js - parent-page postMessage iframe-resize listener
poll.css / poll.js - embed/standalone poll view styles + behaviour
As of 1.0.11, metabox render/save logic previously in one class-lh-polls-post-types.php god class is split across four dedicated classes (Settings/Options/Votes metaboxes + Admin Notices) — see Changelog.