array(
'label' => __( 'Calendar', 'taskbuilder' ),
'plugin' => 'taskbuilder-calendar/taskbuilder-calendar.php',
'icon' => 'calendar.svg',
'placement' => 'menu',
'details_url' => 'https://taskbuilder.net/task-calendar/',
'description' => __( 'Calendar can help to schedule tasks to gain control over your work and keep your day organized.', 'taskbuilder' ),
),
'email_piping' => array(
'label' => __( 'Email Piping', 'taskbuilder' ),
'plugin' => 'taskbuilder-email-piping/wppm-email-piping.php',
'icon' => 'email-piping.svg',
'placement' => 'settings',
'details_url' => 'https://taskbuilder.net/email-piping/',
'description' => __( 'Email Piping converts incoming emails directly into actionable tasks within your project management system.', 'taskbuilder' ),
),
'custom_fields' => array(
'label' => __( 'Custom Fields', 'taskbuilder' ),
'plugin' => 'taskbuilder-custom-field/taskbuildet-custom-field.php',
'icon' => 'cf.svg',
'placement' => 'menu',
'details_url' => 'https://taskbuilder.net/custom-fields/',
'description' => __( 'Custom Fields lets you collect extra information for your tasks and projects beyond the built-in fields.', 'taskbuilder' ),
),
'time_tracker' => array(
'label' => __( 'Time Tracker', 'taskbuilder' ),
'plugin' => 'taskbuilder-timer/wppm-timer.php',
'icon' => 'time-tracker.svg',
'placement' => 'none',
'details_url' => 'https://taskbuilder.net/time-tracker/',
'description' => __( 'Time Tracker records and tracks the time spent on each individual task, like a stop-watch for a task.', 'taskbuilder' ),
),
'gantt_chart' => array(
'label' => __( 'Gantt Chart', 'taskbuilder' ),
'plugin' => 'taskbuilder-gantt-chart/wppm-gantt-chart.php',
'icon' => 'gantt_chart.svg',
'placement' => 'toolbar',
'details_url' => 'https://taskbuilder.net/gantt-chart/',
'description' => __( 'Gantt Chart helps you visualize upcoming deadlines and keep a bird\'s-eye view of the whole project.', 'taskbuilder' ),
),
'duplicate_project' => array(
'label' => __( 'Duplicate Project', 'taskbuilder' ),
'plugin' => 'taskbuilder_clone_project/wppm-clone-project.php',
'icon' => 'clone_project.svg',
'placement' => 'toolbar',
'details_url' => 'https://taskbuilder.net/duplicate-project/',
'description' => __( 'Duplicate Project lets you clone an existing project with its tasks and checklists in one click.', 'taskbuilder' ),
),
'reports' => array(
'label' => __( 'Reports', 'taskbuilder' ),
'plugin' => 'taskbuilder-reports/wppm-reports.php',
'icon' => 'reports-icon.svg',
'placement' => 'menu',
'details_url' => 'https://taskbuilder.net/report/',
'description' => __( 'Reports lets you create detailed project progress reports to view, print, or download as PDF/CSV.', 'taskbuilder' ),
),
'buddypress' => array(
'label' => __( 'Buddypress Integration', 'taskbuilder' ),
'plugin' => 'taskbuilder-buddypress-integration/taskbuilder-buddypress-integration.php',
'icon' => 'user_group.svg',
'placement' => 'settings',
'details_url' => 'https://taskbuilder.net/buddypress/',
'description' => __( 'Buddypress Integration lets you manage projects by department, giving groups frontend access to their tasks.', 'taskbuilder' ),
),
'woocommerce' => array(
'label' => __( 'WooCommerce Integration', 'taskbuilder' ),
'plugin' => 'taskbuilder-woocommerce-integration/taskbuilder-woocommerce-integration.php',
'icon' => 'taskbuilder_wc.svg',
'placement' => 'settings',
'details_url' => 'https://taskbuilder.net/woocommerce/',
'description' => __( 'WooCommerce Integration automatically creates a task with order details after an order is received.', 'taskbuilder' ),
),
'due_date_reminder' => array(
'label' => __( 'Due Date Reminder', 'taskbuilder' ),
'plugin' => 'taskbuilder_due_date_reminder/wppm-due-date-reminder.php',
'icon' => 'due_date_reminder_icon.svg',
'placement' => 'settings',
'details_url' => 'https://taskbuilder.net/due-date-reminder/',
'description' => __( 'Due Date Reminder emails your team before a task\'s due date so deadlines never slip.', 'taskbuilder' ),
),
'users_group' => array(
'label' => __( 'Users Group', 'taskbuilder' ),
'plugin' => 'taskbuilder-usergroup/taskbuilder-usergrop.php',
'icon' => 'user_group.svg',
'placement' => 'menu',
'details_url' => 'https://taskbuilder.net/usergroup/',
'description' => __( 'Users Group lets you assign groups of users to a project and its tasks, just like individual users.', 'taskbuilder' ),
),
'recurrent_task' => array(
'label' => __( 'Recurrent Task', 'taskbuilder' ),
'plugin' => 'taskbuilder-recurrent-task/taskbuilder-recurrent-task.php',
'icon' => 'recurrent_task.svg',
'placement' => 'settings',
'details_url' => 'https://taskbuilder.net/recurrent-task/',
'description' => __( 'Recurrent Task automates repeating tasks on daily, weekly, or monthly intervals so nothing is re-entered by hand.', 'taskbuilder' ),
),
'overdue_notifier' => array(
'label' => __( 'Overdue Notifier', 'taskbuilder' ),
'plugin' => 'taskbuilder_overdue_notifier/wppm-overdue-notifier.php',
'icon' => 'overdue.svg',
'placement' => 'settings',
'details_url' => 'https://taskbuilder.net/overdue-notifier/',
'description' => __( 'Overdue Notifier automatically emails assigned users the moment a task becomes overdue.', 'taskbuilder' ),
),
);
}
}
if ( ! function_exists( 'wppm_is_pro_addon_active' ) ) {
function wppm_is_pro_addon_active( $addon_key ) {
$addons = wppm_get_pro_addons();
if ( empty( $addons[ $addon_key ]['plugin'] ) ) {
return true;
}
if ( ! function_exists( 'is_plugin_active' ) ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
return is_plugin_active( $addons[ $addon_key ]['plugin'] );
}
}
if ( ! function_exists( 'wppm_pro_upgrade_url' ) ) {
function wppm_pro_upgrade_url() {
return 'https://taskbuilder.net/pricing/';
}
}
/**
* Small gold "Pro" crown icon used in place of a text badge, wherever a
* locked pro addon is advertised (sidebar menu, settings pills, toolbar
* buttons, teaser pages). Kept as raw markup so PHP and JS-built strings
* can share the exact same icon.
*/
if ( ! function_exists( 'wppm_pro_badge_svg' ) ) {
function wppm_pro_badge_svg( $size = 14 ) {
$size = (int) $size;
return '';
}
}
/**
* Pro addons that still need advertising for a given placement
* ('menu', 'settings', 'toolbar'), keyed the same as wppm_get_pro_addons().
*/
/**
* Small inline padlock icon, used wherever a locked pro addon needs a lock
* glyph. Kept as an SVG (rather than a Font Awesome class) because this
* plugin never enqueues Font Awesome itself - on pages where no other
* active plugin happens to load it, the "fa-lock" class rendered no glyph
* at all, leaving only the CSS-drawn circle behind it.
*/
if ( ! function_exists( 'wppm_pro_lock_svg' ) ) {
function wppm_pro_lock_svg( $size = 14, $color = '#ffffff' ) {
$size = (int) $size;
$color = esc_attr( $color );
return '';
}
}
if ( ! function_exists( 'wppm_get_locked_pro_addons_by_placement' ) ) {
function wppm_get_locked_pro_addons_by_placement( $placement ) {
$locked = array();
foreach ( wppm_get_pro_addons() as $key => $addon ) {
if ( $addon['placement'] === $placement && ! wppm_is_pro_addon_active( $key ) ) {
$locked[ $key ] = $addon;
}
}
return $locked;
}
}