prefix . 'docsino_' . $name; } /** * Whether a valid DocsInOrder Pro license is active on this site. * * The free plugin never checks a license itself. DocsInOrder Pro answers * through this filter, so the licensing provider (Freemius today) can be * swapped without touching the free plugin. * * @return bool */ function docsino_is_pro_active() { return (bool) apply_filters( 'docsino_is_pro_active', false ); } /** * Whether a specific Pro feature is available on this site. * * @param string $feature Feature key, e.g. 'auto_reminders'. * @return bool */ function docsino_has_feature( $feature ) { return (bool) apply_filters( 'docsino_has_feature', false, (string) $feature ); } /** * Capability required to manage document requests. * * @return string */ function docsino_capability() { return (string) apply_filters( 'docsino_capability', 'manage_docs_in_order' ); } /** * Version string for one of the plugin's CSS or JS files: the plugin version plus * the file's last-modified time. The file's address changes whenever the file * does, so browsers, host caches and CDNs such as Cloudflare always fetch the * current copy after an update. * * @param string $relative_path Path inside the plugin folder, e.g. "assets/css/admin.css". * @return string */ function docsino_asset_version( $relative_path ) { $file = DOCSINO_PLUGIN_DIR . ltrim( $relative_path, '/' ); $time = file_exists( $file ) ? (int) filemtime( $file ) : 0; return $time ? DOCSINO_VERSION . '-' . $time : DOCSINO_VERSION; }