Example #1
0
 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;
 }
 public static function getInstance()
 {
     if (!self::$_instance) {
         self::$_instance = new CPM_Task();
     }
     return self::$_instance;
 }
Example #3
0
 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();
 }
Example #4
0
/**
 * 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', '');
        }
    }
}
Example #5
0
 /**
  * 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();
     }
 }
Example #6
0
/**
 * 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;
        }
    }
}
Example #7
0
 /**
  * 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);
 }
Example #9
0
 /**
  * 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);
         }
     }
 }
Example #10
0
 public function addNewPost($post_id)
 {
     include_once ABSPATH . 'wp-admin/includes/plugin.php';
     global $wpdb;
     $temppost_id = $post_id;
     $post_id = explode("-", $post_id);
     if ($post_id[0] != 'new') {
         return $post_id;
     }
     if (count($post_id) > 2) {
         array_shift($post_id);
         $post_id[1] = implode("-", $post_id);
     }
     foreach ($_POST['fields'] as $key => $value) {
         $currentacf = $key;
         // Get fields and make their shortcodes
         if (is_plugin_active('acf-front-end-form-premium/acf-frontend-form-premium.php')) {
             $t = get_field_object($key);
             add_shortcode('acffef', array($this, 'generate_scodes'));
             $this->val[$t['name']] = $value;
         }
     }
     $sql_query = "\n\t\t\tSELECT {$wpdb->postmeta}.post_id\n\t\t\tFROM {$wpdb->postmeta}\n\t\t\tWHERE {$wpdb->postmeta}.meta_key = '{$currentacf}'\n\t\t";
     $results = $wpdb->get_results($sql_query, ARRAY_A);
     $this->acfdisplay = $results[0]["post_id"];
     $subject = get_option("acffef/subject");
     // Get fields shortcode and use that in title
     if (is_plugin_active('acf-front-end-form-premium/acf-frontend-form-premium.php')) {
         $subject = stripslashes_deep($subject);
         if (strpos($subject, 'field_name') !== false) {
             $subject = do_shortcode($subject);
         }
     }
     $post = array('post_status' => 'publish', 'post_title' => $subject, 'post_type' => $post_id[1]);
     $post_type = $post_id[1];
     $post_id = wp_insert_post($post);
     $_POST['return'] = add_query_arg(array('post_id' => $post_id, '?' => '#message'), $_POST['return']);
     do_action('notifyACFFE');
     /*
      * Integration with Project Manager 
      */
     if (get_option("acffef/cpmintegrate") == 1) {
         $quickQuery = $wpdb->prepare('SELECT ID FROM ' . $wpdb->posts . ' WHERE post_name = %s AND post_type = project', sanitize_title_with_dashes($post_type));
         $projectID = $wpdb->get_var($quickQuery);
         $cpmController = new CPM_Project();
         $_POST['project_name'] = ucwords($post_type);
         $_POST['project_description'] = "Automatically created by Front End Form Extension for ACF";
         if (empty($projectID)) {
             $projectID = $cpmController->create();
         }
         $cpmController = new CPM_Task();
         $_POST['tasklist_name'] = "Support Requests";
         $_POST['tasklist_detail'] = "Automatically created by Front End Form Extension for ACF";
         $cpmController->add_list($projectID);
     }
     return $post_id;
 }
 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'));
            }
        }
    }
}
Example #13
0
 /**
  * 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);
 }
Example #14
0
 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;
 }
Example #15
0
/**
 * 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 
}
<?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('&larr; 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 
Example #17
0
$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;