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 get_tasks_by_access_role($list_id, $project_id = null) { if (cpm_user_can_access($project_id)) { //for manager lavel $tasks = $this->get_tasks($list_id); } else { if (cpm_user_can_access($project_id, 'todo_view_private')) { //for settings role true $tasks = $this->get_tasks($list_id, true); } else { //for settings role false $tasks = $this->get_tasks($list_id, false); } } return $tasks; }
/** * Create a new todolist. * * @param int $project_id * @param array $data * * - tasklist_name (string, required) * - tasklist_detail (string) * - tasklist_privacy (string) * - tasklist_milestone (integer) * * - Method: POST * - URL: http://example.com/cpm-json/projects/project_id/lists * * @since 1.2 * @return array $response */ public function create_list($project_id, $data) { $project_id = (int) $project_id; $list_id = (int) $list_id; if (!$project_id) { return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404)); } $manage_capability = cpm_manage_capability(); if (!$manage_capability && !cpm_is_single_project_manager($project_id)) { if (!cpm_project_user_role_pre_chache($project_id)) { return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404)); } if (!cpm_user_can_access($project_id, 'create_todolist')) { return new WP_Error('permission', __('Sorry! you do not have permission to create todo list', 'cpm'), array('status' => 404)); } } if (empty($data['tasklist_name'])) { return new WP_Error('task_list_name', __('Task List Name Required', 'cpm')); } $data['tasklist_milestone'] = isset($data['tasklist_milestone']) ? $data['tasklist_milestone'] : '-1'; $data['tasklist_privacy'] = isset($data['tasklist_privacy']) ? $data['tasklist_privacy'] : 'no'; $list_id = cpm()->task->add_list($project_id, $data); $get_list = cpm()->task->get_task_list($list_id); $response = new WP_JSON_Response(); $response->set_data($get_list); return $response; }
function cpm_check_milestone_privicy($_get_shorcode_attr, $activity) { $message = true; foreach ($_get_shorcode_attr as $hook => $attr) { $post = get_post($attr['id']); if (isset($post->post_type) && $post->post_type == 'milestone') { $message_privacy = get_post_meta($post->ID, '_milestone_privacy', true); if ($message_privacy == 'yes' && !cpm_user_can_access($activity->comment_post_ID, 'milestone_view_private')) { $message = false; } } } return $message; }
} } } } else { cpm_show_message(__('No Milestone Found!', 'cpm')); } ?> <div class="cpm-new-milestone-form"> <h3><?php _e('Add new milestone', 'cpm'); ?> </h3> <?php if (cpm_user_can_access($project_id, 'create_milestone')) { echo cpm_milestone_form($project_id); } ?> </div> <div class="cpm-milestones"> <?php if ($late_milestones) { ?> <h3 class="title"><?php _e('Late Milestones', 'cpm'); ?> </h3> <?php
$parent = get_post($parent_id); } else { $parent = get_post($attachment->post_parent); } $post_type_object = get_post_type_object($parent->post_type); if ($parent->post_type == 'task') { $is_private = get_post_meta($attachment->post_parent, '_task_privacy', true); if (!cpm_user_can_access($project_id, 'todo_view_private', $is_private)) { continue; } $task_list = get_post($parent->post_parent); $topic_url = cpm_url_single_task($project_id, $task_list->ID, $parent->ID); } else { if ($parent->post_type == 'task_list') { $is_private = get_post_meta($attachment->post_parent, '_tasklist_privacy', true); if (!cpm_user_can_access($project_id, 'tdolist_view_private', $is_private)) { continue; } $topic_url = cpm_url_single_tasklist($project_id, $parent->ID); } else { if ($parent->post_type == 'message') { $is_private = get_post_meta($attachment->post_parent, '_message_privacy', true); if (!cpm_user_can_access_file($project_id, 'msg_view_private', $is_private)) { continue; } $topic_url = cpm_url_single_message($project_id, $parent->ID); } } } $file_url = sprintf('%s&file_id=%d&project_id=%d', $base_image_url, $file['id'], $project_id); if ($file['type'] == 'image') {
/** * Create a new task. * * @param int $project_id * @param int $list_id * @param array $data * * - task_text (string, required) * - task_privacy (string) * - task_assign (array) * - task_due (date format) * - task_start (date format) * * - Method: POST * - URL: http://example.com/cpm-json/projects/project_id/lists/list_id/tasks * * @since 1.2 * @return array $response */ public function create_task($project_id, $list_id, $data) { $project_id = (int) $project_id; $list_id = (int) $list_id; if (!$project_id) { return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404)); } if (!$list_id) { return new WP_Error('json_post_invalid_id', __('Invalid todo list ID.'), array('status' => 404)); } if (empty($data['task_text'])) { return new WP_Error('task_text', __('Task Name Required', 'cpm')); } $posts_list = cpm()->task->get_task_list($list_id); $manage_capability = cpm_manage_capability(); if (!$manage_capability && !cpm_is_single_project_manager($project_id)) { if (!cpm_project_user_role_pre_chache($project_id)) { return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404)); } if (!cpm_user_can_access($project_id, 'create_todolist')) { return new WP_Error('permission', __('Sorry! you do not have permission to create todo list', 'cpm'), array('status' => 404)); } if (!cpm_user_can_access($project_id, 'create_todo')) { return new WP_Error('permission', __('Sorry! you do not have permission to create todo', 'cpm'), array('status' => 404)); } } add_filter('cpm_new_task_notification', array($this, 'change_notification_status')); $task_id = cpm()->task->add_task($list_id, $data); $get_task = cpm()->task->get_task($task_id); $response = new WP_JSON_Response(); $response->set_data($get_task); return $response; }
function cpm_user_can_access_file($project_id, $section, $is_private) { if ($is_private == 'no') { return true; } return cpm_user_can_access($project_id, $section); }
printf('<span class="excerpt"> - %s</span>', cpm_excerpt($message->post_content, 70)); } ?> </a> </td> <td class="date"><span><?php echo date_i18n('j M, Y', strtotime($message->post_date)); ?> </span></td> <td class="comment-count"><span><?php echo cpm_get_number($message->comment_count); ?> </span></td> <td class="cpm-actions"> <?php if ($message->post_author == get_current_user_id() || cpm_user_can_access($project_id)) { ?> <a href="#" class="delete-message cpm-icon-delete" title="<?php esc_attr_e('Delete this message', 'cpm'); ?> " <?php cpm_data_attr(array('msg_id' => $message->ID, 'project_id' => $project_id, 'confirm' => __('Are you sure to delete this message?', 'cpm'))); ?> > <span><?php _e('Delete', 'cpm'); ?> </span> </a> <span class="<?php echo $private_class;
<?php $task_obj = CPM_Task::getInstance(); $list = $task_obj->get_task_list($tasklist_id); if ($list->private == 'yes' && !cpm_user_can_access($project_id, 'tdolist_view_private')) { echo '<h2>' . __('You do no have permission to access this page', 'cpm') . '</h2>'; return; } 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('To-do List', 'cpm'); ?> : <?php echo get_the_title($list->ID); ?> </h3> <ul class="cpm-todolists"> <?php if ($list) { ?>
<?php $task_obj = CPM_Task::getInstance(); if (cpm_user_can_access($project_id, 'tdolist_view_private')) { $lists = $task_obj->get_task_lists($project_id, true); } else { $lists = $task_obj->get_task_lists($project_id); } cpm_get_header(__('To-do List', 'cpm'), $project_id); ?> <h3 class="cpm-nav-title"> <?php _e('To-do Lists', 'cpm'); if (cpm_user_can_access($project_id, 'create_todolist')) { ?> <a id="cpm-add-tasklist" href="#" class="add-new-h2"><?php _e('Add New To-do List', 'cpm'); ?> </a> <?php } ?> </h2> <div class="cpm-new-todolist-form"> <?php echo cpm_tasklist_form($project_id); ?> </div>
<?php $msg_obj = CPM_Message::getInstance(); $message = $msg_obj->get($message_id); if (!$message) { echo '<h2>' . __('Error: Message not found', 'cpm') . '</h2>'; return; } if ($message->private == 'yes' && !cpm_user_can_access($project_id, 'msg_view_private')) { echo '<h2>' . __('You do no have permission to access this page', 'cpm') . '</h2>'; return; } cpm_get_header(__('Messages', 'cpm'), $project_id); $private_class = $message->private == 'yes' ? 'cpm-lock' : 'cpm-unlock'; ?> <h3 class="cpm-nav-title"> <a href="<?php echo cpm_url_message_index($project_id); ?> "><?php _e('← back', 'cpm'); ?> </a> </h3> <div class="cpm-single"> <h3 class="cpm-entry-title"><?php echo get_the_title($message_id); ?>
<?php $task_obj = CPM_Task::getInstance(); $list = $task_obj->get_task_list($tasklist_id); $task = $task_obj->get_task($task_id); if ($task->task_privacy == 'yes' && !cpm_user_can_access($project_id, 'todo_view_private')) { echo '<h2>' . __('You do no have permission to access this page', 'cpm') . '</h2>'; return; } cpm_get_header(__('To-do List', 'cpm'), $project_id); ?> <h3 class="cpm-nav-title"> <?php _e('To-do List', 'cpm'); ?> : <a href="<?php echo cpm_url_single_tasklist($project_id, $list->ID); ?> "><?php echo get_the_title($list->ID); ?> </a> </h3> <div class="cpm-single-task"> <?php echo cpm_task_html($task, $project_id, $list->ID, true); ?> </div>
/** * Delete project * * @param int $project_id * @param boolen $force * * - URL: http://example.com/cpm-json/projects/project_id/?force=1 * - Method: DELETE * * @since 1.2 * @return array */ public function delete_project($project_id, $force = false) { $id = intval($project_id); if (!$id) { return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404)); } $manage_capability = cpm_manage_capability(); if (!$manage_capability && !cpm_project_user_role_pre_chache($id)) { return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404)); } if (!cpm_user_can_access($id)) { return new WP_Error('project_edit_capability', __('You do not have permission to delete this project', 'cpm')); } $post = get_post($id, ARRAY_A); if (empty($post['ID'])) { return new WP_Error('json_post_invalid_id', __('Invalid post ID.'), array('status' => 404)); } cpm()->project->delete($id, $force); if ($force) { return array('message' => __('Permanently deleted post')); } else { return array('message' => __('Deleted post')); } }
<div class="cpm-scroll"> <?php if (count($project->users)) { foreach ($project->users as $id => $user_meta) { echo get_avatar($id, 48, '', $user_meta['name']); } } ?> </div> </footer> </a> <?php $progress = $project_obj->get_progress_by_tasks($project->ID); echo cpm_task_completeness($progress['total'], $progress['completed']); if (cpm_user_can_access($project->ID)) { cpm_project_actions($project->ID); } ?> </article> <?php } ?> <?php cpm_pagination($total_projects, $limit, $pagenum); ?> <?php } else {
/** * Check comment create permission * * @param int $project_id * @param int $post_id * * @since 1.2 * @return boolen | array */ function check_create_comment_permission($project_id, $post_id) { $post_id = intval($post_id); $project_id = intval($project_id); if (!$post_id) { return array('key' => 'json_post_invalid_id', 'message' => __('Invalid post ID.')); } if (!$project_id) { return array('key' => 'json_post_invalid_id', 'message' => __('Invalid project ID.')); } $post = get_post($post_id); $post_type = $post->post_type; switch ($post_type) { case 'message': $manage_capability = cpm_manage_capability(); if ($manage_capability || cpm_is_single_project_manager($project_id)) { return true; } else { if (!cpm_project_user_role_pre_chache($project_id)) { return array('key' => 'permission', 'message' => __('Sorry! you are not assigned in this project', 'cpm')); } else { if (!cpm_user_can_access($project_id, 'create_message')) { return array('key' => 'permission', 'message' => __('Sorry! you do not have permission to view this comments', 'cpm')); } } } break; case 'task': $manage_capability = cpm_manage_capability(); if ($manage_capability || cpm_is_single_project_manager($project_id)) { $condition = true; } else { if (!cpm_project_user_role_pre_chache($project_id)) { return array('key' => 'permission', 'message' => __('Sorry! you are not assinged in this project', 'cpm'), array('status' => 404)); } else { if (!cpm_user_can_access($project_id, 'tdolist_view_private')) { return array('key' => 'permission', 'message' => __('Sorry! you do no have permission to view this comment', 'cpm'), array('status' => 404)); } else { if (!cpm_user_can_access($project_id, 'create_todo')) { return array('key' => 'permission', 'message' => __('Sorry! you do no have permission to view this comment', 'cpm'), array('status' => 404)); } } } } break; case 'task_list': $manage_capability = cpm_manage_capability(); if ($manage_capability || cpm_is_single_project_manager($project_id)) { return true; } else { if (!cpm_project_user_role_pre_chache($project_id)) { return array('key' => 'permission', 'message' => __('Sorry! you are not assinged in this project', 'cpm'), array('status' => 404)); } else { if (!cpm_user_can_access($project_id, 'create_todolist')) { return array('key' => 'permission', 'message' => __('Sorry! you do no have permission to view this comment', 'cpm'), array('status' => 404)); } } } break; } return true; }
/** * Generates navigational menu for a project * * @param int $project_id * @return array */ function nav_links($project_id) { $links = array(__('Activity', 'cpm') => cpm_url_project_details($project_id), __('Messages', 'cpm') => cpm_url_message_index($project_id), __('To-do Lists', 'cpm') => cpm_url_tasklist_index($project_id), __('Milestones', 'cpm') => cpm_url_milestone_index($project_id), __('Files', 'cpm') => cpm_url_file_index($project_id)); $links = apply_filters('cpm_project_nav_links', $links, $project_id); if (cpm_user_can_access($project_id)) { $links[__('Settings', 'cpm')] = cpm_url_settings_index($project_id); } return $links; }
/** * Create a new milestone. * * @param int $project_id * @param array $data * * - milestone_name (string, required) * - milestone_due (date format) * - milestone_detail (string) * - milestone_privacy (string) * * - Method: POST * - URL: http://example.com/cpm-json/projects/project_id/milestones * * @since 1.2 * @return array $response */ public function create_milestone($project_id, $data) { $project_id = intval($project_id); if (!$project_id) { return new WP_Error('json_post_invalid_id', __('Invalid project ID.'), array('status' => 404)); } if (isset($data['milestone_name']) && empty($data['milestone_name'])) { return new WP_Error('milestone_name', __('Milestone Name Required', 'cpm')); } $manage_capability = cpm_manage_capability(); if (!$manage_capability && !cpm_is_single_project_manager($project_id)) { if (!cpm_project_user_role_pre_chache($project_id)) { return new WP_Error('permission', __('Sorry! you are not assigned in this project', 'cpm'), array('status' => 404)); } if (!cpm_user_can_access($project_id, 'create_milestone')) { return new WP_Error('permission', __('Sorry! you do not have permission to create milestone', 'cpm'), array('status' => 404)); } } $milestone_id = cpm()->milestone->create($project_id, $data); $get_milestone = cpm()->milestone->get($milestone_id); $response = new WP_JSON_Response(); $response->set_data($get_milestone); return $response; }
echo $project_id; ?> " placeholder="<?php _e('Search...', 'cpm'); ?> " id="cpm-single-project-search"></div> </div> <h2 class="nav-tab-wrapper"> <?php echo $pro_obj->nav_menu($project_id, $cpm_active_menu); ?> </h2> <?php if (cpm_user_can_access($project_id)) { ?> <script type="text/javascript"> jQuery(function($) { $( "#cpm-create-user-wrap" ).dialog({ autoOpen: false, modal: true, dialogClass: 'cpm-ui-dialog', width: 400, height: 353, position:['middle', 100] }); }) </script> <?php }
/** * List all projects * * @since 1.0 */ function list_projects() { $project_obj = CPM_Project::getInstance(); $projects = $project_obj->get_projects(); $status_class = isset($_GET['status']) ? $_GET['status'] : 'active'; if (function_exists('cpm_project_count')) { $count = cpm_project_count(); } ?> <div class="icon32" id="icon-themes"><br></div> <h2><?php _e('Project Manager', 'cpm'); ?> </h2> <?php if (function_exists('cpm_project_filters')) { cpm_project_filters(); } ?> <div class="cpm-projects"> <?php if (function_exists('cpm_project_filters')) { ?> <ul class="list-inline order-statuses-filter"> <li<?php echo $status_class == 'all' ? ' class="active"' : ''; ?> > <a href="<?php echo cpm_url_all(); ?> "><?php _e('All', 'cpm'); ?> </a> </li> <li<?php echo $status_class == 'active' ? ' class="active"' : ''; ?> > <a class="cpm-active" href="<?php echo cpm_url_active(); ?> "><?php printf(__('Active (%d)', 'cpm'), $count['active']); ?> </a> </li> <li<?php echo $status_class == 'archive' ? ' class="active"' : ''; ?> > <a class="cpm-archive-head" href="<?php echo cpm_url_archive(); ?> "><?php printf(__('Completed (%d)', 'cpm'), $count['archive']); ?> </a> </li> </ul> <?php } ?> <?php if (cpm_manage_capability('project_create_role')) { ?> <nav class="cpm-new-project"> <a href="#" id="cpm-create-project"><span><?php _e('New Project', 'cpm'); ?> </span></a> </nav> <?php } ?> <?php foreach ($projects as $project) { if (!$project_obj->has_permission($project)) { continue; } ?> <article class="cpm-project"> <?php if (cpm_is_project_archived($project->ID)) { ?> <div class="cpm-completed-wrap"><div class="ribbon-green"><?php _e('Completed', 'cpm'); ?> </div></div> <?php } ?> <a href="<?php echo cpm_url_project_details($project->ID); ?> "> <h5><?php echo get_the_title($project->ID); ?> </h5> <div class="cpm-project-detail"><?php echo cpm_excerpt($project->post_content, 55); ?> </div> <div class="cpm-project-meta"> <?php echo cpm_project_summary($project->info); ?> </div> <footer class="cpm-project-people"> <div class="cpm-scroll"> <?php if (count($project->users)) { foreach ($project->users as $id => $user_meta) { echo get_avatar($id, 48, '', $user_meta['name']); } } ?> </div> </footer> </a> <?php $progress = $project_obj->get_progress_by_tasks($project->ID); echo cpm_task_completeness($progress['total'], $progress['completed']); if (cpm_user_can_access($project->ID)) { cpm_project_actions($project->ID); } ?> </article> <?php } ?> </div> <div id="cpm-project-dialog" title="<?php _e('Start a new project', 'cpm'); ?> " style="display: none;"> <?php if ($project_obj->has_admin_rights()) { ?> <?php cpm_project_form(); ?> <?php } ?> </div> <div id="cpm-create-user-wrap"> <?php if ($project_obj->has_admin_rights()) { ?> <?php cpm_user_create_form(); ?> <?php } ?> </div> <script type="text/javascript"> jQuery(function($) { $( "#cpm-project-dialog, #cpm-create-user-wrap" ).dialog({ autoOpen: false, modal: true, dialogClass: 'cpm-ui-dialog', width: 485, height: 425, position:['middle', 100] }); }); jQuery(function($) { $( "#cpm-create-user-wrap" ).dialog({ autoOpen: false, modal: true, dialogClass: 'cpm-ui-dialog', width: 400, height: 353, position:['middle', 100] }); }); </script> <?php }