function view($id = FALSE)
 {
     $this->view_data['submenu'] = array($this->lang->line('application_back') => 'cprojects', $this->lang->line('application_overview') => 'cprojects/view/' . $id, $this->lang->line('application_media') => 'cprojects/media/' . $id);
     $this->view_data['project'] = Project::find($id);
     $this->view_data['project_has_invoices'] = Invoice::find('all', array('conditions' => array('project_id = ? AND company_id=? AND estimate != ? AND issue_date<=?', $id, $this->client->company->id, 1, date('Y-m-d', time()))));
     $tasks = ProjectHasTask::count(array('conditions' => 'project_id = ' . $id));
     $tasks_done = ProjectHasTask::count(array('conditions' => array('status = ? AND project_id = ?', 'done', $id)));
     @($this->view_data['opentaskspercent'] = $tasks_done / $tasks * 100);
     $this->view_data['time_days'] = round((human_to_unix($this->view_data['project']->end . ' 00:00') - human_to_unix($this->view_data['project']->start . ' 00:00')) / 3600 / 24);
     $this->view_data['time_left'] = $this->view_data['time_days'];
     $this->view_data['timeleftpercent'] = 100;
     if (human_to_unix($this->view_data['project']->start . ' 00:00') < time() && human_to_unix($this->view_data['project']->end . ' 00:00') > time()) {
         $this->view_data['time_left'] = round((human_to_unix($this->view_data['project']->end . ' 00:00') - time()) / 3600 / 24);
         $this->view_data['timeleftpercent'] = $this->view_data['time_left'] / $this->view_data['time_days'] * 100;
     }
     if (human_to_unix($this->view_data['project']->end . ' 00:00') < time()) {
         $this->view_data['time_left'] = 0;
         $this->view_data['timeleftpercent'] = 0;
     }
     @($this->view_data['opentaskspercent'] = $tasks_done / $tasks * 100);
     $tracking = $this->view_data['project']->time_spent;
     if (!empty($this->view_data['project']->tracking)) {
         $tracking = time() - $this->view_data['project']->tracking + $this->view_data['project']->time_spent;
     }
     $this->view_data['timertime'] = $tracking;
     $this->view_data['time_spent_from_today'] = time() - $this->view_data['project']->time_spent;
     $tracking = floor($tracking / 60);
     $tracking_hours = floor($tracking / 60);
     $tracking_minutes = $tracking - $tracking_hours * 60;
     $this->view_data['time_spent'] = $tracking_hours . " " . $this->lang->line('application_hours') . " " . $tracking_minutes . " " . $this->lang->line('application_minutes');
     $this->view_data['time_spent_counter'] = sprintf("%02s", $tracking_hours) . ":" . sprintf("%02s", $tracking_minutes);
     if (!isset($this->view_data['project_has_invoices'])) {
         $this->view_data['project_has_invoices'] = array();
     }
     if ($this->view_data['project']->company_id != $this->client->company->id) {
         redirect('cprojects');
     }
     $this->content_view = 'projects/client_views/view';
 }
示例#2
0
    function index()
    {
        if ($this->user->admin == 1) {
            $settings = Setting::first();
            $this->load->helper('curl');
            $object = remote_get_contents('http://fc2.luxsys-apps.com/updates/xml.php?code=' . $settings->pc);
            $object = json_decode($object);
            $this->view_data['update'] = FALSE;
            if (isset($object->error)) {
                if ($object->error == FALSE && $object->lastupdate > $settings->version) {
                    $this->view_data['update'] = $object->lastupdate;
                }
            }
        }
        $year = date('Y', time());
        $this->view_data["year"] = $year;
        $thismonth = date('m');
        $this->view_data["month"] = date('M');
        $tax = $this->view_data['core_settings']->tax;
        //calculate stats
        $result = Invoice::find_by_sql("SELECT paid_date, SUM(`sum`) AS summary FROM `invoices` WHERE estimate != 1 AND status = 'Paid' AND paid_date between '{$year}-01-01' AND '{$year}-12-31' GROUP BY SUBSTR(paid_date,1,7)");
        $this->view_data["stats"] = $result;
        //Projects
        //open
        $this->view_data["projects_open"] = Project::count(array('conditions' => array('progress < ?', 100)));
        //all
        $this->view_data["projects_all"] = Project::count();
        //invoices
        //open
        $this->view_data["invoices_open"] = Invoice::count(array('conditions' => array('status != ? AND estimate != ?', 'Paid', 1)));
        //all
        $this->view_data["invoices_all"] = Invoice::count(array('conditions' => array('estimate != ?', 1)));
        //payments open
        $result = Invoice::find_by_sql("SELECT SUM(`sum`) AS summary FROM `invoices` WHERE estimate != 1 AND status = 'Paid' AND paid_date between '{$year}-{$thismonth}-01' AND '{$year}-{$thismonth}-31'");
        $this->view_data["payments"] = $result;
        //payments outstanding
        $result = Invoice::find_by_sql("SELECT SUM(`sum`) AS summary FROM `invoices` WHERE estimate != 1 AND status != 'Paid'");
        $this->view_data["paymentsoutstanding"] = $result;
        //Events
        $events = array();
        $date = date('Y-m-d', time());
        $eventcount = 0;
        foreach ($this->view_data['menu'] as $key => $value) {
            if ($value->link == "invoices") {
                $sql = 'SELECT * FROM invoices WHERE status != "Paid" AND due_date < "' . $date . '" AND estimate != 1 ORDER BY due_date';
                $res = Invoice::find_by_sql($sql);
                //$res = $res->result();
                foreach ($res as $key2 => $value2) {
                    $eventline = str_replace("{invoice_number}", '<a href="' . base_url() . 'invoices/view/' . $value2->id . '">#' . $this->view_data['core_settings']->invoice_prefix . $value2->reference . '</a>', $this->lang->line('event_invoice_overdue'));
                    $events[$value2->due_date . "." . $value2->id] = $eventline;
                    $eventcount = $eventcount + 1;
                }
            }
            if ($value->link == "projects") {
                $sql = 'SELECT * FROM projects WHERE progress != "100" AND end < "' . $date . '" ORDER BY end';
                $res = Project::find_by_sql($sql);
                //$res = $res->result();
                foreach ($res as $key2 => $value2) {
                    if ($this->user->admin == 0) {
                        $sql = "SELECT id FROM `project_has_workers` WHERE project_id = " . $value->id . " AND user_id = " . $this->user->id;
                        $res = Project::find_by_sql($sql);
                        //$res = $query;
                        if ($res) {
                            $eventline = str_replace("{project_number}", '<a href="' . base_url() . 'projects/view/' . $value2->id . '">#' . $this->view_data['core_settings']->project_prefix . $value2->reference . '</a>', $this->lang->line('event_project_overdue'));
                            $events[$value2->end . "." . $value2->id] = $eventline;
                            $eventcount = $eventcount + 1;
                        }
                    } else {
                        $eventline = str_replace("{project_number}", '<a href="' . base_url() . 'projects/view/' . $value2->id . '">#' . $this->view_data['core_settings']->project_prefix . $value2->reference . '</a>', $this->lang->line('event_project_overdue'));
                        $events[$value2->end . "." . $value2->id] = $eventline;
                        $eventcount = $eventcount + 1;
                    }
                }
            }
            if ($value->link == "subscriptions") {
                $sql = 'SELECT * FROM subscriptions WHERE status != "Inactive" AND end_date > "' . $date . '" AND next_payment <= "' . $date . '" ORDER BY next_payment';
                $res = Subscription::find_by_sql($sql);
                //$res = $res->result();
                foreach ($res as $key2 => $value2) {
                    $eventline = str_replace("{subscription_number}", '<a href="' . base_url() . 'subscriptions/view/' . $value2->id . '">#' . $this->view_data['core_settings']->subscription_prefix . $value2->reference . '</a>', $this->lang->line('event_subscription_new_invoice'));
                    $events[$value2->next_payment . "." . $value2->id] = $eventline;
                    $eventcount = $eventcount + 1;
                }
            }
            if ($value->link == "messages") {
                $sql = 'SELECT privatemessages.id, privatemessages.`status`, privatemessages.subject, privatemessages.message, privatemessages.`time`, privatemessages.`recipient`, clients.`userpic` as userpic_c, users.`userpic` as userpic_u  , users.`email` as email_u , clients.`email` as email_c , CONCAT(users.firstname," ", users.lastname) as sender_u, CONCAT(clients.firstname," ", clients.lastname) as sender_c
							FROM privatemessages
							LEFT JOIN clients ON CONCAT("c",clients.id) = privatemessages.sender
							LEFT JOIN users ON CONCAT("u",users.id) = privatemessages.sender 
							GROUP by privatemessages.id HAVING privatemessages.recipient = "u' . $this->user->id . '"AND privatemessages.status != "deleted" ORDER BY privatemessages.`time` DESC LIMIT 6';
                $query = Privatemessage::find_by_sql($sql);
                $this->view_data["message"] = array_filter($query);
            }
            if ($value->link == "projects") {
                $sql = 'SELECT * FROM project_has_tasks WHERE status != "done" AND user_id = "' . $this->user->id . '" ORDER BY project_id';
                $taskquery = ProjectHasTask::find('all', array('conditions' => array('status != ? and user_id = ?', 'done', $this->user->id), 'order' => 'project_id desc'));
                $this->view_data["tasks"] = $taskquery;
            }
        }
        krsort($events);
        $this->view_data["events"] = $events;
        $this->view_data["eventcount"] = $eventcount;
        $this->content_view = 'dashboard/dashboard';
    }
 function tasks($id = FALSE, $condition = FALSE, $task_id = FALSE)
 {
     $this->view_data['submenu'] = array($this->lang->line('application_back') => 'projects', $this->lang->line('application_overview') => 'projects/view/' . $id);
     switch ($condition) {
         case 'add':
             $this->content_view = 'projects/_tasks';
             if ($_POST) {
                 unset($_POST['send']);
                 unset($_POST['files']);
                 $description = $_POST['description'];
                 $_POST = array_map('htmlspecialchars', $_POST);
                 $_POST['description'] = $description;
                 $_POST['project_id'] = $id;
                 $task = ProjectHasTask::create($_POST);
                 if (!$task) {
                     $this->session->set_flashdata('message', 'error:' . $this->lang->line('messages_save_task_error'));
                 } else {
                     $this->session->set_flashdata('message', 'success:' . $this->lang->line('messages_save_task_success'));
                 }
                 redirect('projects/view/' . $id);
             } else {
                 $this->theme_view = 'modal';
                 $this->view_data['project'] = Project::find($id);
                 $this->view_data['title'] = $this->lang->line('application_add_task');
                 $this->view_data['form_action'] = 'projects/tasks/' . $id . '/add';
                 $this->content_view = 'projects/_tasks';
             }
             break;
         case 'update':
             $this->content_view = 'projects/_tasks';
             $this->view_data['task'] = ProjectHasTask::find($task_id);
             if ($_POST) {
                 unset($_POST['send']);
                 unset($_POST['files']);
                 if (!isset($_POST['public'])) {
                     $_POST['public'] = 0;
                 }
                 $description = $_POST['description'];
                 $_POST = array_map('htmlspecialchars', $_POST);
                 $_POST['description'] = $description;
                 $task_id = $_POST['id'];
                 $task = ProjectHasTask::find($task_id);
                 $task->update_attributes($_POST);
                 if (!$task) {
                     $this->session->set_flashdata('message', 'error:' . $this->lang->line('messages_save_task_error'));
                 } else {
                     $this->session->set_flashdata('message', 'success:' . $this->lang->line('messages_save_task_success'));
                 }
                 redirect('projects/view/' . $id);
             } else {
                 $this->theme_view = 'modal';
                 $this->view_data['project'] = Project::find($id);
                 $this->view_data['title'] = $this->lang->line('application_edit_task');
                 $this->view_data['form_action'] = 'projects/tasks/' . $id . '/update/' . $task_id;
                 $this->content_view = 'projects/_tasks';
             }
             break;
         case 'check':
             $task = ProjectHasTask::find($task_id);
             if ($task->status == 'done') {
                 $task->status = 'open';
             } else {
                 $task->status = 'done';
             }
             $task->save();
             $project = Project::find($id);
             $tasks = ProjectHasTask::count(array('conditions' => 'project_id = ' . $id));
             $tasks_done = ProjectHasTask::count(array('conditions' => array('status = ? AND project_id = ?', 'done', $id)));
             if ($project->progress_calc == 1) {
                 if ($tasks) {
                     $progress = round($tasks_done / $tasks * 100);
                 }
                 $attr = array('progress' => $progress);
                 $project->update_attributes($attr);
             }
             if (!$task) {
                 $this->session->set_flashdata('message', 'error:' . $this->lang->line('messages_save_task_error'));
             }
             $this->theme_view = 'ajax';
             $this->content_view = 'projects';
             break;
         case 'delete':
             $task = ProjectHasTask::find($task_id);
             $task->delete();
             if (!$task) {
                 $this->session->set_flashdata('message', 'error:' . $this->lang->line('messages_delete_task_error'));
             } else {
                 $this->session->set_flashdata('message', 'success:' . $this->lang->line('messages_delete_task_success'));
             }
             redirect('projects/view/' . $id);
             break;
         default:
             $this->view_data['project'] = Project::find($id);
             $this->content_view = 'projects/tasks';
             break;
     }
 }