function get_events() { $projects = CPM_Project::getInstance()->get_projects(); unset($projects['total_projects']); if (cpm_get_option('task_start_field') == 'on') { $enable_start = true; } else { $enable_start = false; } $events = array(); if ($projects) { foreach ($projects as $project) { $project_id = $project->ID; if (absint($_POST['project_id']) && $project_id != absint($_POST['project_id'])) { continue; } //Get Milestones $milestones = CPM_Milestone::getInstance()->get_by_project($project_id); if ($milestones) { foreach ($milestones as $milestone) { //Milestone Event $events[] = array('id' => $milestone->ID, 'title' => $milestone->post_title, 'start' => $milestone->due_date, 'url' => cpm_url_milestone_index($project_id), 'color' => '#32b1c8', 'className' => $milestone->completed == 1 ? 'milestone competed' : 'milestone'); } } //Get Tasks if (cpm_user_can_access($project_id, 'tdolist_view_private')) { $task_lists = CPM_Task::getInstance()->get_task_lists($project_id, true); } else { $task_lists = CPM_Task::getInstance()->get_task_lists($project_id); } if ($task_lists) { foreach ($task_lists as $task_list) { $tasks = CPM_Task::getInstance()->get_tasks_by_access_role($task_list->ID, $project_id); foreach ($tasks as $task) { $image = ''; if (is_array($task->assigned_to)) { foreach ($task->assigned_to as $key => $user_id) { $image .= get_avatar($user_id, 16); } } else { $image .= get_avatar($task->assigned_to, 16); } //Tasks Event if ($enable_start) { if (isset($task->start_date) && !empty($task->start_date)) { $start_date = $task->start_date; } else { $start_date = $task->due_date; } $events[] = array('id' => $task->ID, 'img' => $task->assigned_to == -1 ? '' : $image, 'title' => $task->post_title, 'start' => $start_date, 'end' => $task->due_date, 'complete_status' => $task->completed == 1 ? 'yes' : 'no', 'url' => cpm_url_single_task($project_id, $task_list->ID, $task->ID), 'color' => 'transparent', 'textColor' => '#c86432', 'className' => date('Y-m-d', time()) < $task->due_date ? 'cpm-calender-todo cpm-task-running' : 'cpm-calender-todo cpm-expire-task'); } else { $events[] = array('id' => $task->ID, 'img' => $task->assigned_to == -1 ? '' : $image, 'title' => $task->post_title, 'start' => $task->due_date, 'complete_status' => $task->completed == 1 ? 'yes' : 'no', 'url' => cpm_url_single_task($project_id, $task_list->ID, $task->ID), 'color' => 'transparent', 'textColor' => '#c86432', 'className' => date('Y-m-d', time()) < $task->due_date ? 'cpm-calender-todo cpm-task-running' : 'cpm-calender-todo cpm-expire-task'); } } } } } } return $events; }
function instantiate() { $project = CPM_Project::getInstance(); $message = CPM_Message::getInstance(); $task = CPM_Task::getInstance(); $milestone = CPM_Milestone::getInstance(); $activity = new CPM_Activity(); $ajax = new CPM_Ajax(); $notification = new CPM_Notification(); }
/** * Update start meta * * @param object $project */ function cpm_update_task_start_meta($project) { $instant = CPM_Task::getInstance(); $task_lists = $instant->get_task_lists($project->ID); foreach ($task_lists as $task_list) { $tasks = $instant->get_tasks($task_list->ID); foreach ($tasks as $task) { update_post_meta($task->ID, '_start', ''); } } }
/** * Instantiate all the required classes * * @since 0.1 */ function instantiate() { CPM_Project::getInstance(); CPM_Message::getInstance(); CPM_Task::getInstance(); CPM_Milestone::getInstance(); new CPM_Activity(); new CPM_Ajax(); new CPM_Notification(); // instantiate admin settings only on admin page if (is_admin()) { new CPM_Admin(); } }
<?php $task_obj = CPM_Task::getInstance(); $list = $task_obj->get_task_list($tasklist_id); cpm_get_header(__('To-do List', 'cpm'), $project_id); ?> <h3 class="cpm-nav-title"> <a href="<?php echo cpm_url_tasklist_index($project_id); ?> "><?php _e('← back', 'cpm'); ?> </a> <span class="sep">|</span> <?php _e('Task List', 'cpm'); ?> : <?php echo get_the_title($list->ID); ?> </h3> <ul class="cpm-todolists"> <?php if ($list) { ?> <li id="cpm-list-<?php echo $list->ID; ?> "><?php
function delete_tasklist() { check_ajax_referer('cpm_nonce'); do_action('cpm_delete_tasklist_prev', $_POST['list_id']); CPM_Task::getInstance()->delete_list($_POST['list_id'], true); do_action('cpm_delete_tasklist_after', $_POST['list_id']); echo json_encode(array('success' => true)); exit; }
/** * Delete project child elements * * Delete all child task lists, messages and milestones when * a project is deleted. * * @param int $project_id * * @since 0.5.4 * * @return void */ function cpm_delete_project_child($project_id) { $childrens = get_posts(array('post_type' => array('task_list', 'message', 'milestone'), 'post_pre_page' => '-1', 'post_parent' => $project_id)); foreach ($childrens as $key => $children) { switch ($children->post_type) { case 'task_list': CPM_Task::getInstance()->delete_list($children->ID, true); break; case 'message': CPM_Message::getInstance()->delete($children->ID, true); break; case 'milestone': CPM_Milestone::getInstance()->delete($children->ID, true); break; } } }
/** * Register the plugin menu * * @since 0.1 */ function admin_menu() { $capability = 'read'; //minimum level: subscriber $count_task = CPM_Task::getInstance()->mytask_count(); $current_task = isset($count_task['current_task']) ? $count_task['current_task'] : 0; $outstanding = isset($count_task['outstanding']) ? $count_task['outstanding'] : 0; $active_task = $current_task + $outstanding; $mytask_text = __('My Tasks', 'cpm'); if ($active_task) { $mytask_text = sprintf(__('My Tasks %s', 'cpm'), '<span class="awaiting-mod count-1"><span class="pending-count">' . $active_task . '</span></span>'); } $hook = add_menu_page(__('Project Manager', 'cpm'), __('Project Manager', 'cpm'), $capability, 'cpm_projects', array($this, 'admin_page_handler'), 'dashicons-networking', 3); add_submenu_page('cpm_projects', __('Projects', 'cpm'), __('Projects', 'cpm'), $capability, 'cpm_projects', array($this, 'admin_page_handler')); $hook_my_task = add_submenu_page('cpm_projects', __('My Tasks', 'cpm'), $mytask_text, $capability, 'cpm_task', array($this, 'my_task')); $hook_calender = add_submenu_page('cpm_projects', __('Calendar', 'cpm'), __('Calendar', 'cpm'), $capability, 'cpm_calendar', array($this, 'admin_page_handler')); if (current_user_can('manage_options')) { add_submenu_page('cpm_projects', __('Categories', 'cpm'), __('Categories', 'cpm'), $capability, 'edit-tags.php?taxonomy=project_category'); } add_submenu_page('cpm_projects', __('Add-ons', 'cpm'), __('Add-ons', 'cpm'), 'manage_options', 'cpm_addons', array($this, 'admin_page_addons')); add_action('admin_print_styles-' . $hook, array($this, 'admin_scripts')); add_action('admin_print_styles-' . $hook_my_task, array($this, 'my_task_scripts')); add_action('admin_print_styles-' . $hook_calender, array($this, 'calender_scripts')); }
function get_tasklists($milestone_id) { return CPM_Task::getInstance()->get_tasklist_by_milestone($milestone_id); }
/** * Delete task item * * @param init $task_id * * @since 1.1 * * @return void */ function delete_task_list_item($list_id) { $delete = CPM_Project::getInstance()->delete_project_item($list_id); if ($delete) { $tasks = CPM_Task::getInstance()->get_tasks($list_id, true); foreach ($tasks as $task) { $item_id = $this->get_item_id($task_id); $this->delete_task_item($item_id); CPM_Project::getInstance()->delete_project_item($task->ID); } } }
/** * Generates markup for a single milestone * * @since 0.1 * @param object $milestone * @param int $project_id */ function cpm_show_milestone($milestone, $project_id) { $milestone_obj = CPM_Milestone::getInstance(); $task_obj = CPM_Task::getInstance(); $due = strtotime($milestone->due_date); $is_left = cpm_is_left(time(), $due); $milestone_completed = (int) $milestone->completed; if ($milestone_completed) { $class = 'complete'; } else { $class = $is_left == true ? 'left' : 'late'; } $string = $is_left == true ? __('left', 'cpm') : __('late', 'cpm'); $milestone_private = $milestone->private == 'yes' ? 'cpm-lock' : 'cpm-unlock'; ?> <div class="cpm-milestone <?php echo $class; ?> "> <div class="milestone-detail"> <h3> <?php echo $milestone->post_title; ?> <?php if (!$milestone_completed) { ?> <span class="time-left">(<?php printf('%s %s - %s', human_time_diff(time(), $due), $string, cpm_get_date($milestone->due_date)); ?> )</span> <?php } ?> <?php if (cpm_user_can_delete_edit($project_id, $milestone)) { ?> <ul class="cpm-links cpm-right"> <li> <a class="cpm-icon-edit" <?php cpm_data_attr(array('id' => $milestone->ID, 'project_id' => $project_id)); ?> href="#" title="<?php esc_attr_e('Edit milestone', 'cpm'); ?> "><span><?php _e('Edit', 'cpm'); ?> </span></a> </li> <li> <a class="cpm-icon-delete cpm-milestone-delete" <?php cpm_data_attr(array('project' => $project_id, 'id' => $milestone->ID, 'confirm' => __('Are you sure?', 'cpm'))); ?> title="<?php esc_attr_e('Delete milestone', 'cpm'); ?> " href="#"><span><?php _e('Delete', 'cpm'); ?> </span></a> </li> <?php if ($milestone->completed == '0') { ?> <li><a class="cpm-icon-tick grey cpm-milestone-complete" data-project="<?php echo $project_id; ?> " data-id="<?php echo esc_attr($milestone->ID); ?> " title="<?php esc_attr_e('Mark as complete', 'cpm'); ?> " href="#"><span><?php _e('Mark as complete', 'cpm'); ?> </span></a></li> <?php } else { ?> <li><a class="cpm-icon-tick green cpm-milestone-open" data-project="<?php echo $project_id; ?> " data-id="<?php echo esc_attr($milestone->ID); ?> " title="<?php esc_attr_e('Mark un-complete', 'cpm'); ?> " href="#"><span><?php _e('Reopen', 'cpm'); ?> </span></a></li> <?php } ?> <li> <span class="<?php echo $milestone_private; ?> "></span> </li> </ul> <?php } ?> </h3> <div class="detail"> <?php echo cpm_get_content($milestone->post_content); ?> </p> </div> </div> <div class="cpm-milestone-edit-form"></div> <?php if (cpm_user_can_access($project_id, 'tdolist_view_private')) { $tasklists = $milestone_obj->get_tasklists($milestone->ID, true); } else { $tasklists = $milestone_obj->get_tasklists($milestone->ID); } if (cpm_user_can_access($project_id, 'msg_view_private')) { $messages = $milestone_obj->get_messages($milestone->ID, true); } else { $messages = $milestone_obj->get_messages($milestone->ID); } if ($tasklists) { ?> <h3><?php _e('To-do List', 'cpm'); ?> </h3> <ul class="dash"> <?php foreach ($tasklists as $tasklist) { ?> <li> <a href="<?php echo cpm_url_single_tasklist($project_id, $tasklist->ID); ?> "><?php echo stripslashes($tasklist->post_title); ?> </a> <div class="cpm-right"> <?php $complete = $task_obj->get_completeness($tasklist->ID, $project_id); echo cpm_task_completeness($complete['total'], $complete['completed']); ?> </div> <div class="cpm-clear"></div> </li> <?php } ?> </ul> <?php } ?> <?php if ($messages) { ?> <h3><?php _e('Messages', 'cpm'); ?> </h3> <ul class="dash"> <?php foreach ($messages as $message) { ?> <li> <a href="<?php echo cpm_url_single_message($project_id, $message->ID); ?> "><?php echo stripslashes($message->post_title); ?> </a> (<?php echo cpm_get_date($message->post_date, true); ?> | <?php echo get_the_author_meta('display_name', $message->post_author); ?> ) </li> <?php } ?> </ul> <?php } ?> <?php if ($milestone_completed) { ?> <span class="cpm-milestone-completed"> <?php _e('Completed on:', 'cpm'); ?> <?php echo cpm_get_date($milestone->completed_on, true); ?> </span> <?php } ?> </div> <?php }
function get_tasklists($milestone_id, $privacy = false) { return CPM_Task::getInstance()->get_tasklist_by_milestone($milestone_id, $privacy); }
/** * Insert task type item * * @param init $item_id * @param init $task_list_id * * @since 1.1 * * @return type */ function cpm_insert_tasks($project_id, $task_list_id) { global $wpdb; $table_name = $wpdb->prefix . 'cpm_tasks'; $tasks = CPM_Task::getInstance()->get_tasks($task_list_id, true); foreach ($tasks as $task) { $complete = $task->completed ? $task->completed_on : '0000-00-00 00:00:00'; CPM_Project::getInstance()->new_project_item($project_id, $task->ID, $task->task_privacy, 'task', false, $complete, $task->completed, $task_list_id); $last_insert_id = $wpdb->insert_id; if (count($task->assigned_to)) { foreach ($task->assigned_to as $assigned) { if ($last_insert_id) { $data = array('item_id' => $last_insert_id, 'user_id' => $assigned, 'start' => isset($task->start_date) && $task->start_date ? $task->start_date : $task->post_date, 'due' => $task->due_date ? $task->due_date : '0000-00-00 00:00:00'); $wpdb->insert($table_name, $data, array('%d', '%d', '%s', '%s')); } } } else { if ($last_insert_id) { $data = array('item_id' => $last_insert_id, 'user_id' => -1, 'start' => isset($task->start_date) && $task->start_date ? $task->start_date : $task->post_date, 'due' => $task->due_date ? $task->due_date : '0000-00-00 00:00:00'); $wpdb->insert($table_name, $data, array('%d', '%d', '%s', '%s')); } } } }
/** * Instantiate all the required classes * * @since 0.1 */ function instantiate() { $this->project = CPM_Project::getInstance(); $this->message = CPM_Message::getInstance(); $this->task = CPM_Task::getInstance(); $this->milestone = CPM_Milestone::getInstance(); $this->activity = CPM_Activity::getInstance(); $this->ajax = CPM_Ajax::getInstance(); $this->notification = CPM_Notification::getInstance(); if (function_exists('json_api_init')) { $this->api = CPM_API::instance(); } // instantiate admin settings only on admin page if (is_admin()) { $this->admin = new CPM_Admin(); $this->upgrade = new CPM_Upgrade(); } do_action('cpm_instantiate', $this); }
$this_user = true; $disabled = ''; if (isset($_GET['user_id']) && !empty($_GET['user_id'])) { if (!cpm_manage_capability() && $current_user->ID != $_GET['user_id']) { printf('<h1>%s</h1>', __('You do no have permission to access this page', 'cpm')); return; } if ($current_user->ID != $_GET['user_id']) { $this_user = false; } $current_user = get_user_by('id', $_GET['user_id']); $title = sprintf("%s's tasks", $current_user->display_name); } else { $title = __('My Tasks', 'cpm'); } $task = CPM_Task::getInstance(); $project = $task->get_mytasks($current_user->ID); $count = $task->mytask_count(); if (isset($_GET['tab']) && $_GET['tab'] == 'outstanding') { $page_status = 'outstanding'; } else { if (isset($_GET['tab']) && $_GET['tab'] == 'complete') { $page_status = 'complete'; } else { $page_status = ''; } } ?> <div class="wrap cpm my-tasks"> <h2 class="cpm-my-task"><?php echo $title;