function _fetchCustomRecordTypes() { switch ($this->custom_record_type) { case "TaskCustomFields": $field_types = "TaskType"; break; case "CompanyCustomFields": $field_types = "CompanyType"; break; } $this->custom_record_types = dPgetSysVal($field_types); }
// Make sure we can read the module if (getDenyRead($m)) { $AppUI->redirect("m=public&a=access_denied"); } // Define log types define("STATUS_LOG", 1); define("TASK_LOG", 2); // Pull in some standard arrays $ict = dPgetSysVal('HelpDeskCallType'); $ics = dPgetSysVal('HelpDeskSource'); $ios = dPgetSysVal('HelpDeskOS'); $iap = dPgetSysVal('HelpDeskApplic'); $ipr = dPgetSysVal('HelpDeskPriority'); $isv = dPgetSysVal('HelpDeskSeverity'); $ist = dPgetSysVal('HelpDeskStatus'); $isa = dPgetSysVal('HelpDeskAuditTrail'); $field_event_map = array(1 => "item_title", 2 => "item_requestor", 3 => "item_requestor_email", 4 => "item_requestor_phone", 5 => "item_assigned_to", 6 => "item_notify", 7 => "item_company_id", 8 => "item_project_id", 9 => "item_calltype", 10 => "item_source", 11 => "item_status", 12 => "item_priority", 13 => "item_severity", 14 => "item_os", 15 => "item_application", 16 => "item_summary"); // Help Desk class class CHelpDeskItem extends CDpObject { var $item_id = NULL; var $item_title = NULL; var $item_summary = NULL; var $item_calltype = NULL; var $item_source = NULL; var $item_os = NULL; var $item_application = NULL; var $item_priority = NULL; var $item_severity = NULL; var $item_status = NULL; var $item_project_id = NULL;
ini_set('memory_limit', $dPconfig['reset_memory_limit']); include $AppUI->getLibraryClass('jpgraph/src/jpgraph'); include $AppUI->getLibraryClass('jpgraph/src/jpgraph_gantt'); // get the prefered date format $df = $AppUI->getPref('SHDATEFORMAT'); $user_id = intval(dPgetParam($_REQUEST, 'user_id', $AppUI->user_id)); $proFilter = dPgetParam($_REQUEST, 'proFilter', '-1'); $company_id = intval(dPgetParam($_REQUEST, 'company_id', 0)); $department = intval(dPgetParam($_REQUEST, 'department', 0)); $showLabels = dPgetParam($_REQUEST, 'showLabels', 0); $showInactive = dPgetParam($_REQUEST, 'showInactive', 0); $sortTasksByName = dPgetParam($_REQUEST, 'sortTasksByName', 0); $addPwOiD = dPgetParam($_REQUEST, 'addPwOiD', 0); $m_orig = dPgetParam($_REQUEST, 'm_orig', $m); $a_orig = dPgetParam($_REQUEST, 'a_orig', $a); $projectStatus = dPgetSysVal('ProjectStatus'); $projectStatus = arrayMerge(array('-2' => $AppUI->_('All w/o in progress'), '-3' => $AppUI->_($AppUI->user_id == $user_id ? 'My projects' : "User's projects")), $projectStatus); $pjobj =& new CProject(); $working_hours = $dPconfig['daily_working_hours']; $q = new DBQuery(); /* * Load department info for the case where one * wants to see the ProjectsWithOwnerInDeparment (PwOiD) * instead of the projects related to the given department. */ $owner_ids = array(); if ($addPwOiD && $department > 0) { $q->addTable('users'); $q->addQuery('user_id'); $q->addJoin('contacts', 'c', 'c.contact_id = user_contact'); $q->addWhere('c.contact_department = ' . $department);
$titleBlock = new CTitleBlock('Files', 'folder5.png', $m, $m . '.' . $a); $titleBlock->addCell($AppUI->_('Filter') . ':'); $titleBlock->addCell(arraySelect($projects, 'project_id', 'onchange="javascript:document.pickProject.submit()" size="1" class="text"', $project_id), '', '<form name="pickProject" action="?m=files" method="post">', '</form>'); /* * override the file module's $canEdit variable passed from the main index.php * in order to check on file folder permissions */ $canAuthor_folders = getPermission('file_folders', 'add'); if ($canAuthor) { $titleBlock->addCell('<input type="submit" class="button" value="' . $AppUI->_('new file') . '" />', '', '<form action="?m=files&a=addedit&folder=' . $folder . '" method="post">', '</form>'); } if ($canAuthor_folders) { $titleBlock->addCell('<input type="submit" class="button" value="' . $AppUI->_('new folder') . '" />', '', '<form action="?m=files&a=addedit_folder" method="post">', '</form>'); } $titleBlock->show(); $file_types = dPgetSysVal('FileType'); $fts = $file_types; if ($tab != -1) { array_unshift($file_types, 'All Files'); } $tabBox = new CTabBox('?m=files', DP_BASE_DIR . '/modules/files/', $tab); $tabbed = $tabBox->isTabbed(); $i = 0; foreach ($file_types as $file_type) { $tabBox->add('index_table', $file_type); ++$i; } if ($canAccess_folders) { $tabBox->add('folders_table', 'Folder Explorer'); } $tabBox->show();
} $tab = $AppUI->getState('LinkIdxTab') !== NULL ? $AppUI->getState('LinkIdxTab') : 0; $active = intval(!$AppUI->getState('LinkIdxTab')); require_once $AppUI->getModuleClass('projects'); // get the list of visible companies $extra = array('from' => 'links', 'where' => 'project_id = link_project'); $project = new CProject(); $projects = $project->getAllowedRecords($AppUI->user_id, 'project_id,project_name', 'project_name', null, $extra); $projects = arrayMerge(array('0' => $AppUI->_('All', UI_OUTPUT_JS)), $projects); // setup the title block $titleBlock = new CTitleBlock('Links', 'folder5.png', $m, "{$m}.{$a}"); $titleBlock->addCell($AppUI->_('Search') . ':'); $titleBlock->addCell('<input type="text" class="text" size="10" name="search" onchange="javascript:document.searchfilter.submit();" value=' . "'{$search}'" . 'title="' . $AppUI->_('Search in name and description fields', UI_OUTPUT_JS) . '"/>', '', '<form action="?m=links" method="post" id="searchfilter">', '</form>'); $titleBlock->addCell($AppUI->_('Filter') . ':'); $titleBlock->addCell(arraySelect($projects, 'project_id', 'onchange="javascript:document.pickProject.submit()" size="1" class="text"', $project_id), '', '<form name="pickProject" action="?m=links" method="post">', '</form>'); if ($canEdit) { $titleBlock->addCell('<input type="submit" class="button" value="' . $AppUI->_('new link') . '" />', '', '<form action="?m=links&a=addedit" method="post">', '</form>'); } $titleBlock->show(); $link_types = dPgetSysVal('LinkType'); if ($tab != -1) { array_unshift($link_types, 'All Links'); } array_map(array($AppUI, '_'), $link_types); $tabBox = new CTabBox('?m=links', DP_BASE_DIR . '/modules/links/', $tab); $i = 0; foreach ($link_types as $link_type) { $tabBox->add('index_table', $link_type); ++$i; } $tabBox->show();
} $tab = $AppUI->getState('ProjVwTab') !== NULL ? $AppUI->getState('ProjVwTab') : 0; // check if this record has dependencies to prevent deletion $msg = ''; $obj = new CProject(); // Now check if the proect is editable/viewable. $denied = $obj->getDeniedRecords($AppUI->user_id); if (in_array($project_id, $denied)) { $AppUI->redirect("m=public&a=access_denied"); } $canDelete = $obj->canDelete($msg, $project_id); // get critical tasks (criteria: task_end_date) $criticalTasks = $project_id > 0 ? $obj->getCriticalTasks($project_id) : NULL; // get ProjectPriority from sysvals $projectPriority = dPgetSysVal('ProjectPriority'); $projectPriorityColor = dPgetSysVal('ProjectPriorityColor'); $working_hours = $dPconfig['daily_working_hours'] ? $dPconfig['daily_working_hours'] : 8; $q = new DBQuery(); //check that project has tasks; otherwise run seperate query $q->addTable('tasks'); $q->addQuery("COUNT(distinct tasks.task_id) AS total_tasks"); $q->addWhere('task_project = ' . $project_id); $hasTasks = $q->loadResult(); $q->clear(); // load the record data // GJB: Note that we have to special case duration type 24 and this refers to the hours in a day, NOT 24 hours if ($hasTasks) { $q->addTable('projects'); $q->addQuery("company_name, CONCAT_WS(', ',contact_last_name,contact_first_name) user_name, projects.*," . " SUM(t1.task_duration * t1.task_percent_complete" . " * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" . " / SUM(t1.task_duration * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" . " AS project_percent_complete"); $q->addJoin('companies', 'com', 'company_id = project_company'); $q->addJoin('users', 'u', 'user_id = project_owner');
function notify($assignees, $update = false, $clash = false) { global $AppUI, $locale_char_set, $dPconfig; $mail_owner = $AppUI->getPref('MAILALL'); $assignee_list = explode(",", $assignees); $owner_is_assigned = in_array($this->event_owner, $assignee_list); if ($mail_owner && !$owner_is_assigned && $this->event_owner) { array_push($assignee_list, $this->event_owner); } // Remove any empty elements otherwise implode has a problem foreach ($assignee_list as $key => $x) { if (!$x) { unset($assignee_list[$key]); } } if (!count($assignee_list)) { return; } $q = new DBQuery(); $q->addTable('users', 'u'); $q->addTable('contacts', 'con'); $q->addQuery('user_id, contact_first_name,contact_last_name, contact_email'); $q->addWhere('u.user_contact = con.contact_id'); $q->addWhere("user_id in (" . implode(',', $assignee_list) . ")"); $users = $q->loadHashList('user_id'); $date_format = $AppUI->getPref('SHDATEFORMAT'); $time_format = $AppUI->getPref('TIMEFORMAT'); $fmt = $date_format . ' ' . $time_format; $start_date =& new CDate($this->event_start_date); $end_date =& new CDate($this->event_end_date); $mail =& new Mail(); $type = $update ? $AppUI->_('Updated') : $AppUI->_('New'); $subject_title = $clash ? $AppUI->_('Requested Event') : $type . " " . $AppUI->_('Event'); $mail->Subject($subject_title . ": " . $this->event_title, $locale_char_set); $mail->From('"' . $AppUI->user_first_name . " " . $AppUI->user_last_name . '" <' . $AppUI->user_email . '>'); $body = ''; if ($clash) { $body .= 'You have been invited to an event by ' . $AppUI->user_first_name . ' ' . $AppUI->user_last_name . "\n"; $body .= 'However, either you or another intended invitee has a competing event' . "\n"; $body .= $AppUI->user_first_name . ' ' . $AppUI->user_last_name . ' has requested that you reply to this message' . "\n"; $body .= 'and confirm if you can or can not make the requested time.' . "\n\n"; } $body .= $AppUI->_('Event') . ":\t" . $this->event_title . "\n"; if (!$clash) { $body .= $AppUI->_('URL') . ":\t" . $dPconfig['base_url'] . "/index.php?m=calendar&a=view&event_id=" . $this->event_id . "\n"; } $body .= $AppUI->_('Starts') . ":\t" . $start_date->format($fmt) . "\n"; $body .= $AppUI->_('Ends') . ":\t" . $end_date->format($fmt) . "\n"; // Find the project name. if ($this->event_project) { $prj = array(); $q = new DBQuery(); $q->addTable('projects', 'p'); $q->addQuery('project_name'); $q->addWhere('p.project_id =' . $this->event_project); $sql = $q->prepare(); $q->clear(); if (db_loadHash($sql, $prj)) { $body .= $AppUI->_('Project') . ":\t" . $prj['project_name'] . "\n"; } } $types = dPgetSysVal('EventType'); $body .= $AppUI->_('Type') . ":\t" . $AppUI->_($types[$this->event_type]) . "\n"; $body .= $AppUI->_('Attendees') . ":\t"; $body_attend = ''; foreach ($users as $user) { $body_attend .= ($body_attend ? ', ' : '') . $user['contact_first_name'] . ' ' . $user['contact_last_name']; } $body .= $body_attend . "\n\n" . $this->event_description . "\n"; $mail->Body($body, $locale_char_set); foreach ($users as $user) { if (!$mail_owner && $user['user_id'] == $this->event_owner) { continue; } $mail->To($user['contact_email'], true); $mail->Send(); } }
//for getting permissions for records related to projects $obj_project = new CProject(); // collect the full (or filtered) projects list data via function in projects.class.php projects_list_data(); // setup the title block $titleBlock = new CTitleBlock('Projects', 'applet3-48.png', $m, $m . '.' . $a); $titleBlock->addCell($AppUI->_('Owner') . ':'); $titleBlock->addCell('<form action="?m=projects" method="post" name="pickUser">' . "\n" . $bufferUser . "\n" . '</form>' . "\n"); $titleBlock->addCell($AppUI->_('Company') . '/' . $AppUI->_('Division') . ':'); $titleBlock->addCell('<form action="?m=projects" method="post" name="pickCompany">' . "\n" . $cBuffer . "\n" . '</form>' . "\n"); $titleBlock->addCell(); if ($canAuthor) { $titleBlock->addCell('<form action="?m=projects&a=addedit" method="post">' . "\n" . '<input type="submit" class="button" value="' . $AppUI->_('new project') . '" />' . "\n" . '</form>' . "\n"); } $titleBlock->show(); $project_types = dPgetSysVal('ProjectStatus'); // count number of projects per project_status $q->addTable('projects', 'p'); $q->addQuery('p.project_status, COUNT(p.project_id) as count'); $obj_project->setAllowedSQL($AppUI->user_id, $q, null, 'p'); if ($owner > 0) { $q->addWhere('p.project_owner = ' . $owner); } if (isset($department)) { $q->addJoin('project_departments', 'pd', 'pd.project_id = p.project_id'); if (!$addPwOiD) { $q->addWhere('pd.department_id in (' . implode(',', $dept_ids) . ')'); } } else { if ($company_id && !$addPwOiD) { $q->addWhere('p.project_company = ' . $company_id);
// check if this record has dependencies to prevent deletion $msg = ''; $obj = new CProject(); // Now check if the project is editable/viewable. $denied = $obj->getDeniedRecords($AppUI->user_id); if (in_array($project_id, $denied)) { $AppUI->redirect("m=public&a=access_denied"); } $canDeleteProject = $obj->canDelete($msg, $project_id); // get critical tasks (criteria: task_end_date) $criticalTasks = $project_id > 0 ? $obj->getCriticalTasks($project_id) : NULL; // get ProjectPriority from sysvals $projectPriority = dPgetSysVal('ProjectPriority'); $projectPriorityColor = dPgetSysVal('ProjectPriorityColor'); $pstatus = dPgetSysVal('ProjectStatus'); $ptype = dPgetSysVal('ProjectType'); $working_hours = $dPconfig['daily_working_hours'] ? $dPconfig['daily_working_hours'] : 8; $q = new DBQuery(); //check that project has tasks; otherwise run seperate query $q->addTable('tasks'); $q->addQuery("COUNT(distinct tasks.task_id) AS total_tasks"); $q->addWhere('task_project = ' . $project_id); $hasTasks = $q->loadResult(); $q->clear(); // load the record data // GJB: Note that we have to special case duration type 24 and this refers to the hours in a day, NOT 24 hours if ($hasTasks) { $q->addTable('projects'); $q->addQuery("company_name, CONCAT_WS(' ',contact_first_name,contact_last_name) user_name, projects.*," . " SUM(t1.task_duration * t1.task_percent_complete" . " * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" . " / SUM(t1.task_duration * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" . " AS project_percent_complete"); $q->addJoin('companies', 'com', 'company_id = project_company'); $q->addJoin('users', 'u', 'user_id = project_owner');
if ($canEdit) { $titleBlock->addCell('<input type="submit" class="button" value="' . $AppUI->_('new task') . '">', '', '<form action="?m=tasks&a=addedit&task_project=' . $obj->task_project . '&task_parent=' . $task_id . '" method="post">', '</form>'); $titleBlock->addCell('<input type="submit" class="button" value="' . $AppUI->_('new file') . '">', '', '<form action="?m=files&a=addedit&project_id=' . $obj->task_project . '&file_task=' . $obj->task_id . '" method="post">', '</form>'); } $titleBlock->addCrumb("?m=tasks", "tasks list"); if ($canReadProject) { $titleBlock->addCrumb("?m=projects&a=view&project_id={$obj->task_project}", "view this project"); } if ($perms->checkModule('tasks', 'edit')) { $titleBlock->addCrumb("?m=tasks&a=addedit&task_id={$task_id}", "edit this task"); } if ($canDelete) { $titleBlock->addCrumbDelete('delete task', $canDelete, $msg); } $titleBlock->show(); $task_types = dPgetSysVal("TaskType"); ?> <script language="JavaScript"> var calendarField = ''; function popCalendar( field ){ calendarField = field; idate = eval( 'document.editFrm.task_' + field + '.value' ); window.open( 'index.php?m=public&a=calendar&dialog=1&callback=setCalendar&date=' + idate, 'calwin', 'width=250, height=220, scollbars=false' ); } /** * @param string Input date in the format YYYYMMDD * @param string Formatted date */
foreach ($ar_mold as $ar) { $buf .= '<option value = ' . $ar["company_id"] . ' '; if ($ar["company_id"] == $fcliente) { $buf .= ' selected '; } $buf .= '>' . $ar["company_name"] . '</option>'; } $titleBlock->addCell($buf, "", "", ""); $buf = '<input type="text" name="alias_string" size=12 value="' . $alias_string . '" class="text"> '; $titleBlock->addCell($AppUI->_('etiq_Referencia') . ':'); $titleBlock->addCell($buf, '', '', ''); $titleBlock->show(); echo "</td></tr></table>"; echo "<div align=right><input type=button onClick='document.pickCompany.submit()' class='button' value='Buscar'></form></div>"; $project_types = dPgetSysVal("ProjectStatus"); $active = 0; $complete = 0; $archive = 0; $proposed = 0; foreach ($project_types as $key => $value) { $counter[$key] = 0; if (is_array($projects)) { foreach ($projects as $p) { if ($p['project_status'] == $key && $p['project_active'] > 0) { ++$counter[$key]; } } } $project_types[$key] = $AppUI->_($project_types[$key], UI_OUTPUT_RAW) . ' (' . $counter[$key] . ')'; }
<br /><?php echo $AppUI->_('Web Address'); ?> <br /><input type="text" class="text" name="task_related_url" value="<?php echo @$obj->task_related_url; ?> " size="40" maxlength="255" /> </td> <td valign='top'> <?php echo $AppUI->_("Task Type"); ?> <br /> <?php $task_types = dPgetSysVal('TaskType'); echo arraySelect($task_types, "task_type", "class='text'", $obj->task_type, false); ?> <br /><br /> <?php if ($AppUI->isActiveModule('contacts') && $perms->checkModule('contacts', 'view')) { echo "<input type='button' class='button' value='" . $AppUI->_("Select contacts...") . "' onclick='javascript:popContacts();' />"; } // Let's check if the actual company has departments registered if ($department_selection_list != "") { ?> <br /> <?php echo $AppUI->_("Departments"); ?> <br />
if (!defined('DP_BASE_DIR')) { die('You should not access this file directly.'); } $callback = dPgetCleanParam($_GET, 'callback', ''); ?> <script language="javascript"> function setClose(color) { window.opener.<?php echo $callback; ?> (color); window.close(); } </script> <?php $colors = dPgetSysVal('ProjectColors'); if ($dPconfig['restrict_color_selection']) { ?> <table border="0" cellpadding="1" cellspacing="2" width="292" align="center"> <tr> <td valign="top" colspan="2"> <strong><?php echo $AppUI->_('Color Selector'); ?> </strong> </td> </tr> <?php foreach ($colors as $key => $value) { ?> <tr>
<?php if (!defined('DP_BASE_DIR')) { die('You should not access this file directly.'); } // user types $utypes = dPgetSysVal('UserType'); ## ## NOTE: the user_type field in the users table must be changed to a TINYINT ##
global $this_day, $event_filter, $event_filter_list; require_once $AppUI->getModuleClass('calendar'); $perms =& $AppUI->acl(); $user_id = $AppUI->user_id; $other_users = false; $no_modify = false; $start_date = isset($start_date) ? $start_date : new CDate('0000-00-00 00:00:00'); $end_date = isset($end_date) ? $end_date : new CDate('9999-12-31 23:59:59'); // assemble the links for the events $events = CEvent::getEventsForPeriod($start_date, $end_date, 'all', null, $project_id); //echo '<pre>' . print_r($events, true) . '</pre>'; $start_hour = dPgetConfig('cal_day_start'); $end_hour = dPgetConfig('cal_day_end'); $tf = $AppUI->getPref('TIMEFORMAT'); $df = $AppUI->getPref('SHDATEFORMAT'); $types = dPgetSysVal('EventType'); ?> <table cellspacing="1" cellpadding="2" border="0" width="100%" class="tbl"> <tr> <th><?php echo $AppUI->_('Date'); ?> </th> <th><?php echo $AppUI->_('Type'); ?> </th> <th><?php echo $AppUI->_('Event'); ?> </th>
} $tab = $AppUI->getState('LinkIdxTab') !== NULL ? $AppUI->getState('LinkIdxTab') : 0; $active = intval(!$AppUI->getState('LinkIdxTab')); require_once $AppUI->getModuleClass('projects'); // get the list of visible companies $extra = array('from' => 'links', 'where' => 'project_id = link_project'); $project = new CProject(); $projects = $project->getAllowedRecords($AppUI->user_id, 'project_id,project_name', 'project_name', null, $extra); $projects = arrayMerge(array('0' => $AppUI->_('All', UI_OUTPUT_JS)), $projects); // setup the title block $titleBlock = new CTitleBlock('Links', 'folder5.png', $m, "{$m}.{$a}"); $titleBlock->addCell($AppUI->_('Search') . ':'); $titleBlock->addCell('<input type="text" class="text" SIZE="10" name="search" onChange="document.searchfilter.submit();" value=' . "'{$search}'" . 'title="' . $AppUI->_('Search in name and description fields', UI_OUTPUT_JS) . '"/>', '', '<form action="?m=links" method="post" id="searchfilter">', '</form>'); $titleBlock->addCell($AppUI->_('Filter') . ':'); $titleBlock->addCell(arraySelect($projects, 'project_id', 'onChange="document.pickProject.submit()" size="1" class="text"', $project_id), '', '<form name="pickProject" action="?m=links" method="post">', '</form>'); if ($canEdit) { $titleBlock->addCell('<input type="submit" class="button" value="' . $AppUI->_('new link') . '">', '', '<form action="?m=links&a=addedit" method="post">', '</form>'); } $titleBlock->show(); $link_types = dPgetSysVal("LinkType"); if ($tab != -1) { array_unshift($link_types, "All Links"); } array_map(array($AppUI, '_'), $link_types); $tabBox = new CTabBox("?m=links", DP_BASE_DIR . '/modules/links/', $tab); $i = 0; foreach ($link_types as $link_type) { $tabBox->add("index_table", $link_type); ++$i; } $tabBox->show();
/** * Email the task log to assignees, task contacts, project contacts, and others * based upon the information supplied by the user. */ function email_log(&$log, $assignees, $task_contacts, $project_contacts, $others, $extras) { global $AppUI, $locale_char_set, $dPconfig; $mail_recipients = array(); $q = new DBQuery(); if (isset($assignees) && $assignees == 'on') { $q->addTable('user_tasks', 'ut'); $q->leftJoin('users', 'ua', 'ua.user_id = ut.user_id'); $q->leftJoin('contacts', 'c', 'c.contact_id = ua.user_contact'); $q->addQuery('c.contact_email, c.contact_first_name, c.contact_last_name'); $q->addWhere('ut.task_id = ' . $this->task_id); if (!$AppUI->getPref('MAILALL')) { $q->addWhere('ua.user_id <>' . $AppUI->user_id); } $req =& $q->exec(QUERY_STYLE_NUM); for ($req; !$req->EOF; $req->MoveNext()) { list($email, $first, $last) = $req->fields; if (!isset($mail_recipients[$email])) { $mail_recipients[$email] = trim($first) . ' ' . trim($last); } } $q->clear(); } if (isset($task_contacts) && $task_contacts == 'on') { $q->addTable('task_contacts', 'tc'); $q->leftJoin('contacts', 'c', 'c.contact_id = tc.contact_id'); $q->addQuery('c.contact_email, c.contact_first_name, c.contact_last_name'); $q->addWhere('tc.task_id = ' . $this->task_id); $req =& $q->exec(QUERY_STYLE_NUM); for ($req; !$req->EOF; $req->MoveNext()) { list($email, $first, $last) = $req->fields; if (!isset($mail_recipients[$email])) { $mail_recipients[$email] = $first . ' ' . $last; } } $q->clear(); } if (isset($project_contacts) && $project_contacts == 'on') { $q->addTable('project_contacts', 'pc'); $q->leftJoin('contacts', 'c', 'c.contact_id = pc.contact_id'); $q->addQuery('c.contact_email, c.contact_first_name, c.contact_last_name'); $q->addWhere('pc.project_id = ' . $this->task_project); $req =& $q->exec(QUERY_STYLE_NUM); for ($req; !$req->EOF; $req->MoveNext()) { list($email, $first, $last) = $req->fields; if (!isset($mail_recipients[$email])) { $mail_recipients[$email] = $first . ' ' . $last; } } $q->clear(); } if (isset($others)) { $others = trim($others, " \r\n\t,"); // get rid of empty elements. if (mb_strlen($others) > 0) { $q->addTable('contacts', 'c'); $q->addQuery('c.contact_email, c.contact_first_name, c.contact_last_name'); $q->addWhere('c.contact_id in (' . $others . ')'); $req =& $q->exec(QUERY_STYLE_NUM); for ($req; !$req->EOF; $req->MoveNext()) { list($email, $first, $last) = $req->fields; if (!isset($mail_recipients[$email])) { $mail_recipients[$email] = $first . ' ' . $last; } } $q->clear(); } } if (isset($extras) && $extras) { // Search for semi-colons, commas or spaces and allow any to be separators $extra_list = preg_split('/[\\s,;]+/', $extras); foreach ($extra_list as $email) { if ($email && !isset($mail_recipients[$email])) { $mail_recipients[$email] = $email; } } } $q->clear(); // Reset to the default state. if (count($mail_recipients) == 0) { return false; } // Build the email and send it out. $char_set = isset($locale_char_set) ? $locale_char_set : ''; $mail = new Mail(); // Grab the subject from user preferences $prefix = $AppUI->getPref('TASKLOGSUBJ'); $mail->Subject($prefix . ' ' . $log->task_log_name, $char_set); $q->addTable('projects'); $q->addQuery('project_name'); $q->addWhere('project_id=' . $this->task_project); $sql = $q->prepare(); $q->clear(); $projname = htmlspecialchars_decode(db_loadResult($sql)); $body = $AppUI->_('Project', UI_OUTPUT_RAW) . ': ' . $projname . "\n"; if ($this->task_parent != $this->task_id) { $q->addTable('tasks'); $q->addQuery('task_name'); $q->addWhere('task_id = ' . $this->task_parent); $req =& $q->exec(QUERY_STYLE_NUM); if ($req) { $body .= $AppUI->_('Parent Task', UI_OUTPUT_RAW) . ': ' . htmlspecialchars_decode($req->fields[0]) . "\n"; } $q->clear(); } $body .= $AppUI->_('Task', UI_OUTPUT_RAW) . ': ' . $this->task_name . "\n"; $task_types = dPgetSysVal('TaskType'); $body .= $AppUI->_('Task Type', UI_OUTPUT_RAW) . ':' . $task_types[$this->task_type] . "\n"; $body .= $AppUI->_('URL', UI_OUTPUT_RAW) . ': ' . DP_BASE_URL . '/index.php?m=tasks&a=view&task_id=' . $this->task_id . "\n\n"; $body .= $AppUI->_('Hours', UI_OUTPUT_RAW) . ': ' . $log->task_log_hours . $AppUI->_('h', UI_OUTPUT_RAW) . "\n\n"; $body .= $AppUI->_('Summary', UI_OUTPUT_RAW) . ': ' . $log->task_log_name . "\n\n"; $body .= $log->task_log_description; // Append the user signature to the email - if it exists. $q->addTable('users'); $q->addQuery('user_signature'); $q->addWhere('user_id = ' . $AppUI->user_id); if ($res = $q->exec()) { if ($res->fields['user_signature']) { $body .= "\n--\n" . $res->fields['user_signature']; } } $q->clear(); $mail->Body($body, $char_set); $mail->From($AppUI->user_first_name . ' ' . $AppUI->user_last_name . ' <' . $AppUI->user_email . '>'); $recipient_list = ''; foreach ($mail_recipients as $email => $name) { if ($mail->ValidEmail($email)) { $mail->To($email); $recipient_list .= $email . ' (' . $name . ")\n"; } else { $recipient_list .= "Invalid email address '{$email}' for {$name}, not sent\n"; } } $mail->Send(); // Now update the log $save_email = @$AppUI->getPref('TASKLOGNOTE'); if ($save_email) { $log->task_log_description .= "\nEmailed " . date('d/m/Y H:i:s') . " to:\n{$recipient_list}"; return true; } return false; // No update needed. }
<?php /* TASKS $Id$ */ if (!defined('DP_BASE_DIR')) { die('You should not access this file directly.'); } global $AppUI, $task_id, $df, $m; if (!getPermission('task_log', 'access')) { $AppUI->redirect('m=public&a=access_denied'); } $problem = intval(dPgetParam($_GET, 'problem', null)); // get sysvals $taskLogReference = dPgetSysVal('TaskLogReference'); $taskLogReferenceImage = dPgetSysVal('TaskLogReferenceImage'); ?> <script language="JavaScript"> <?php // security improvement: // some javascript functions may not appear on client side in case of user not having write permissions // else users would be able to arbitrarily run 'bad' functions $canView = getPermission('task_log', 'view'); $canEdit = getPermission('task_log', 'edit'); $canDelete = getPermission('task_log', 'delete'); if ($canDelete) { ?> function delIt2(id) { if (confirm("<?php echo $AppUI->_('doDelete', UI_OUTPUT_JS) . ' ' . $AppUI->_('Task Log', UI_OUTPUT_JS) . '?'; ?> ")) { document.frmDelete2.task_log_id.value = id;
if (dPgetParam($_GET, 'tab', -1) != -1) { $AppUI->setState('FileIdxTab', dPgetParam($_GET, 'tab')); } $tab = $AppUI->getState('FileIdxTab', 0); $active = intval(!$AppUI->getState('FileIdxTab')); require_once $AppUI->getModuleClass('projects'); // get the list of visible companies $extra = array('from' => 'files', 'where' => 'project_id = file_project'); $project = new CProject(); $projects = $project->getAllowedRecords($AppUI->user_id, 'project_id,project_name', 'project_name', null, $extra); $allowedProjects = array_keys($projects); $projects = arrayMerge(array('0' => $AppUI->_('All', UI_OUTPUT_RAW)), $projects); // setup the title block $titleBlock = new CTitleBlock('Files', 'folder5.png', $m, "{$m}.{$a}"); $titleBlock->addCell($AppUI->_('Filter') . ':'); $titleBlock->addCell(arraySelect($projects, 'project_id', 'onChange="document.pickProject.submit()" size="1" class="text"', $project_id), '', '<form name="pickProject" action="?m=files" method="post">', '</form>'); if ($canEdit) { $titleBlock->addCell('<input type="submit" class="button" value="' . $AppUI->_('new file') . '">', '', '<form action="?m=files&a=addedit" method="post">', '</form>'); } $titleBlock->show(); $file_types = dPgetSysVal("FileType"); if ($tab != -1) { array_unshift($file_types, "All Files"); } $tabBox = new CTabBox("?m=files", "{$dPconfig['root_dir']}/modules/files/", $tab); $i = 0; foreach ($file_types as $file_type) { $tabBox->add("index_table", $file_type); ++$i; } $tabBox->show();
$q->addQuery('t.*, p.project_name, p.project_id, p.project_color_identifier'); if ($project_id) { $q->addWhere('p.project_id = ' . $project_id); } if (count($allowedTasks)) { $q->addWhere($allowedTasks); } if (count($allowedProjects)) { $q->addWhere($allowedProjects); } $q->addGroup('t.task_id'); $q->addOrder($sort . ', t.task_priority DESC'); //echo ('<pre>' . $q->prepare(); . '</pre>'); $tasks = $q->loadList(); $priorities = array('1' => 'high', '0' => 'normal', '-1' => 'low'); $durnTypes = dPgetSysVal('TaskDurationType'); if (!@$min_view) { $titleBlock = new CTitleBlock('Organize Tasks', 'applet-48.png', $m, "{$m}.{$a}"); $titleBlock->addCrumb('?m=tasks', 'tasks list'); if ($project_id) { $titleBlock->addCrumb('?m=projects&a=view&project_id=' . $project_id, 'view project'); } $titleBlock->show(); } function showchildren($id, $level = 1) { global $tasks; $t = $tasks; //otherwise, $tasks is accessed from a static context and doesn't work. foreach ($t as $task) { //echo $id . '==> ' . $task['task_parent'] . '==' . $id . '<br>';
$message .= "\t\t<TD bgcolor=white><font face=arial,san-serif size=2>" . $AppUI->_('Author') . ":</font></TD>\n"; $message .= "\t\t<TD bgcolor=white><font face=arial,san-serif size=2>" . str_replace(">", ">", str_replace("<", "<", str_replace('"', '', $author))) . "</font></TD>\n"; $message .= "\t</tr>\n"; $message .= "\t<TR>\n"; $message .= "\t\t<TD bgcolor=white><font face=arial,san-serif size=2>" . $AppUI->_('Subject') . ":</font></TD>\n"; $message .= "\t\t<TD bgcolor=white><font face=arial,san-serif size=2>{$subject}</font></TD>\n"; $message .= "\t</tr>\n"; $message .= "\t<TR>\n"; $message .= "\t\t<TD bgcolor=white nowrap><font face=arial,san-serif size=2>" . $AppUI->_('View') . ":</font></TD>\n"; $message .= "\t\t<TD bgcolor=white nowrap><a href=\"" . DP_BASE_URL . "/index.php?m=ticketsmith&a=view&ticket={$ticket}\"><font face=arial,sans-serif size=2>" . DP_BASE_URL . "/index.php?m=ticketsmith&a=view&ticket={$ticket}</font></a></TD>\n"; $message .= "\t</tr>\n"; $message .= "</TABLE>\n"; $message .= "</body>\n"; $message .= "</html>\n"; $message .= "\n--{$boundary}--\n"; $ticketNotification = dPgetSysVal('TicketNotify'); if (count($ticketNotification) > 0) { mail($ticketNotification[$priority], $AppUI->_('Trouble ticket') . " #{$ticket} ", $message, "From: " . $CONFIG['reply_to'] . "\nContent-type: multipart/alternative; boundary=\"{$boundary}\"\nMime-Version: 1.0"); } if (@$assignment_toggle != @$orig_assignment) { $mailinfo = query2hash("SELECT contact_first_name, contact_last_name, contact_email from users u LEFT JOIN contacts ON u.user_contact = contact_id WHERE user_id = {$assignment_toggle}"); if (@$mailinfo['contact_email']) { $boundary = "_lkqwkASDHASK89271893712893"; $message = "--{$boundary}\n"; $message .= "Content-disposition: inline\n"; $message .= "Content-type: text/plain\n\n"; $message .= $AppUI->_('Trouble ticket assigned to you') . ".\n\n"; $message .= "Ticket ID: {$ticket}\n"; $message .= "Author : {$author}\n"; $message .= "Subject : {$subject}\n"; $message .= "View : " . DP_BASE_URL . "/index.php?m=ticketsmith&a=view&ticket={$ticket}\n";
*/ $proj =& new CProject(); $proj->load($obj->task_project); $sql = "SELECT billingcode_id, billingcode_name\n FROM billingcode\n WHERE billingcode_status=0\n AND (company_id='{$proj->project_company}' OR company_id = 0)\n ORDER BY billingcode_name"; $task_log_costcodes[0] = ''; $ptrc = db_exec($sql); echo db_error(); $nums = 0; if ($ptrc) { $nums = db_num_rows($ptrc); } for ($x = 0; $x < $nums; $x++) { $row = db_fetch_assoc($ptrc); $task_log_costcodes[$row["billingcode_id"]] = $row["billingcode_name"]; } $taskLogReference = dPgetSysVal('TaskLogReference'); // Task Update Form $df = $AppUI->getPref('SHDATEFORMAT'); $log_date = new CDate($log->task_log_date); ?> <!-- TIMER RELATED SCRIPTS --> <script language="JavaScript"> // please keep these lines on when you copy the source // made by: Nicolas - http://www.javascript-page.com // adapted by: Juan Carlos Gonzalez jcgonz@users.sourceforge.net var timerID = 0; var tStart = null; var total_minutes = -1;
$log_all = (bool) dPgetParam($_POST, 'log_all', true); $use_period = (int) dPgetParam($_POST, 'use_period', 0); $show_orphaned = (int) dPgetParam($_POST, 'show_orphaned', 0); $display_week_hours = (int) dPgetParam($_POST, 'display_week_hours', 0); $max_levels = dPgetCleanParam($_POST, 'max_levels', ''); $log_userfilter = (int) dPgetParam($_POST, 'log_userfilter', 0); $company_id = dPgetCleanParam($_POST, 'company_id', 'all'); $project_id = dPgetCleanParam($_POST, 'project_id', 'all'); require_once $AppUI->getModuleClass('projects'); require_once $AppUI->getModuleClass('tasks'); $proj = new CProject(); // filtering by companies $projects = $proj->getAllowedRecords($AppUI->user_id, 'project_id,project_name', 'project_name'); $projFilter = arrayMerge(array('all' => $AppUI->_('All Projects')), $projects); $durnTypes = dPgetSysVal('TaskDurationType'); $taskPriority = dPgetSysVal('TaskPriority'); // create Date objects from the datetime fields $start_date = intval($log_start_date) ? new CDate($log_start_date) : new CDate(); $end_date = intval($log_end_date) ? new CDate($log_end_date) : new CDate(); $now = new CDate(); if (!$log_start_date) { $start_date->subtractSpan(new Date_Span('14,0,0,0')); } $end_date->setTime(23, 59, 59); ?> <script language="javascript"> var calendarField = ''; function popCalendar(field) { calendarField = field;
function displayFiles($folder_id) { global $AppUI, $m, $a, $tab, $page; global $current_uri; global $canAccess, $canRead, $canEdit, $canAuthor, $canDelete; global $canAccess_folders, $canRead_folders, $canEdit_folders; global $canAuthor_folders, $canDelete_folders; global $company_id, $project_id, $task_id; global $allowedCompanies, $allowedProjects, $allowedTasks, $allowedFolders; global $showProject, $cfObj, $dPconfig; $df = $AppUI->getPref('SHDATEFORMAT'); $tf = $AppUI->getPref('TIMEFORMAT'); $file_types = dPgetSysVal('FileType'); $xpg_pagesize = 30; //TODO?: Set by System Config Value ... $xpg_totalrecs = countFiles($folder_id); //get file count for folder $xpg_total_pages = $xpg_totalrecs > $xpg_pagesize ? ceil($xpg_totalrecs / $xpg_pagesize) : 1; $xpg_min = $xpg_pagesize * ($page - 1); // This is where we start our record set from $q = new DBQuery(); // most recent version info per file_project and file_version_id $q->createTemp('files_count_max' . $folder_id); $q->addTable('files', 'f'); $q->addQuery('DISTINCT count(f.file_id) as file_versions' . ', max(f.file_version) as file_lastversion' . ', file_version_id, f.file_project'); $q->addJoin('projects', 'p', 'p.project_id = f.file_project'); $q->addJoin('tasks', 't', 't.task_id = f.file_task'); $q->addJoin('file_folders', 'ff', 'ff.file_folder_id = f.file_folder'); $q->addWhere('f.file_folder = ' . $folder_id); if (count($allowedProjects)) { $q->addWhere('((' . implode(' AND ', $allowedProjects) . ') OR f.file_project = 0)'); } if (count($allowedTasks)) { $q->addWhere('((' . implode(' AND ', $allowedTasks) . ') OR f.file_task = 0)'); } if (count($allowedFolders)) { $q->addWhere('((' . implode(' AND ', $allowedFolders) . ') OR f.file_folder = 0)'); } if ($company_id) { $q->innerJoin('companies', 'co', 'co.company_id = p.project_company'); $q->addWhere('co.company_id = ' . $company_id); if (count($allowedCompanies)) { $q->addWhere('(' . implode(' AND ', $allowedCompanies) . ')'); } } $q->addGroup('f.file_version_id'); $q->addGroup('f.file_project'); $file_version_max_counts = $q->exec(); $q->clear(); // most recent version $q->addTable('files', 'f'); $q->addQuery('f.*, fmc.file_versions, round(fmc.file_lastversion, 2) as file_lastversion' . ', u.user_username as file_owner, ff.file_folder_name' . ', ff.file_folder_id, ff.file_folder_name, p.project_name' . ', p.project_color_identifier, p.project_owner, c.contact_first_name' . ', c.contact_last_name, t.task_name, u.user_username as file_owner' . ', cc.contact_first_name as checkout_first_name' . ', cc.contact_last_name as checkout_last_name'); $q->addJoin('files_count_max' . $folder_id, 'fmc', '(fmc.file_lastversion=f.file_version AND fmc.file_version_id=f.file_version_id' . ' AND fmc.file_project=f.file_project)', 'inner'); $q->addJoin('projects', 'p', 'p.project_id = f.file_project'); $q->addJoin('users', 'u', 'u.user_id = f.file_owner'); $q->addJoin('contacts', 'c', 'c.contact_id = u.user_contact'); $q->addJoin('tasks', 't', 't.task_id = f.file_task'); $q->addJoin('file_folders', 'ff', 'ff.file_folder_id = f.file_folder'); $q->leftJoin('users', 'cu', 'cu.user_id = f.file_checkout'); $q->leftJoin('contacts', 'cc', 'cc.contact_id = cu.user_contact'); $q->addWhere('f.file_folder = ' . $folder_id); if (count($allowedProjects)) { $q->addWhere('((' . implode(' AND ', $allowedProjects) . ') OR f.file_project = 0)'); } if (count($allowedTasks)) { $q->addWhere('((' . implode(' AND ', $allowedTasks) . ') OR f.file_task = 0)'); } if (count($allowedFolders)) { $q->addWhere('((' . implode(' AND ', $allowedFolders) . ') OR f.file_folder = 0)'); } if ($project_id) { $q->addWhere('f.file_project = ' . $project_id); } if ($task_id) { $q->addWhere('f.file_task = ' . $task_id); } if ($company_id) { $q->innerJoin('companies', 'co', 'co.company_id = p.project_company'); $q->addWhere('co.company_id = ' . $company_id); if (count($allowedCompanies)) { $q->addWhere('(' . implode(' AND ', $allowedCompanies) . ')'); } } $q->addOrder('p.project_name'); $q->setLimit($xpg_pagesize, $xpg_min); $files_sql = $q->prepare(); $q->clear(); // all versions $q->addTable('files', 'f'); $q->addQuery('f.*, ff.file_folder_id, ff.file_folder_name, p.project_name' . ', p.project_color_identifier, p.project_owner, c.contact_first_name' . ', c.contact_last_name, t.task_name, u.user_username as file_owner'); $q->addJoin('projects', 'p', 'p.project_id = f.file_project'); $q->addJoin('users', 'u', 'u.user_id = f.file_owner'); $q->addJoin('contacts', 'c', 'c.contact_id = u.user_contact'); $q->addJoin('tasks', 't', 't.task_id = f.file_task'); $q->addJoin('file_folders', 'ff', 'ff.file_folder_id = f.file_folder'); $q->addWhere('f.file_folder = ' . $folder_id); if (count($allowedProjects)) { $q->addWhere('((' . implode(' AND ', $allowedProjects) . ') OR f.file_project = 0)'); } if (count($allowedTasks)) { $q->addWhere('((' . implode(' AND ', $allowedTasks) . ') OR f.file_task = 0)'); } if (count($allowedFolders)) { $q->addWhere('((' . implode(' AND ', $allowedFolders) . ') OR f.file_folder = 0)'); } if ($project_id) { $q->addWhere('f.file_project = ' . $project_id); } if ($task_id) { $q->addWhere('f.file_task = ' . $task_id); } if ($company_id) { $q->innerJoin('companies', 'co', 'co.company_id = p.project_company'); $q->addWhere('co.company_id = ' . $company_id); if (count($allowedCompanies)) { $q->addWhere('(' . implode(' AND ', $allowedCompanies) . ')'); } } $file_versions_sql = $q->prepare(); $q->clear(); //file arrays $files = array(); $file_versions = array(); if ($canRead) { $files = db_loadList($files_sql); $file_versions = db_loadHashList($file_versions_sql, 'file_id'); } $q->dropTemp('files_count_max' . $folder_id); $q->exec(); if ($files == array()) { return; } ?> <table width="100%" border="0" cellpadding="2" cellspacing="1" class="tbl"> <tr> <th nowrap="nowrap"><?php echo $AppUI->_('File Name'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Description'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Versions'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Category'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Task Name'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Owner'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Size'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Date'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('co Reason'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('co'); ?> </th> <th nowrap width="1"></th> <th nowrap width="1"></th> </tr> <?php $fp = -1; $file_date = new CDate(); $id = 0; foreach ($files as $row) { $file_date = new CDate($row['file_date']); $canEdit_file = getPermission('files', 'edit', $row['file_id']); //single file if ($fp != $row['file_project']) { if (!$row['file_project']) { $row['project_name'] = $AppUI->_('Not associated to projects'); $row['project_color_identifier'] = 'f4efe3'; } if ($showProject) { $style = 'background-color:#' . $row['project_color_identifier'] . ';color:' . bestColor($row['project_color_identifier']); ?> <tr> <td colspan="20" style="border: outset 2px #eeeeee;<?php echo $style; ?> "> <a href="?m=projects&a=view&project_id=<?php echo $row['file_project']; ?> "> <span style="<?php echo $style; ?> "><?php echo $row['project_name']; ?> </span></a> </td> </tr> <?php } } $fp = $row['file_project']; ?> <form name="frm_remove_file_<?php echo $row['file_id']; ?> " action="?m=files" method="post"> <input type="hidden" name="dosql" value="do_file_aed" /> <input type="hidden" name="del" value="1" /> <input type="hidden" name="file_id" value="<?php echo $row['file_id']; ?> " /> <input type="hidden" name="redirect" value="<?php echo $current_uri; ?> " /> </form> <form name="frm_duplicate_file_<?php echo $row['file_id']; ?> " action="?m=files" method="post"> <input type="hidden" name="dosql" value="do_file_aed" /> <input type="hidden" name="duplicate" value="1" /> <input type="hidden" name="file_id" value="<?php echo $row['file_id']; ?> " /> <input type="hidden" name="redirect" value="<?php echo $current_uri; ?> " /> </form> <tr> <td nowrap="8%"> <?php $file_icon = getIcon($row['file_type']); ?> <a href="./fileviewer.php?file_id=<?php echo $row['file_id']; ?> " title="<?php echo $row['file_description']; ?> "> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/' . $file_icon, '16', '16'); ?> <?php echo $row['file_name']; ?> </a> </td> <td width="20%"><?php echo $row['file_description']; ?> </td> <td width="5%" nowrap="nowrap" align="center"> <?php $hidden_table = ''; echo $row['file_lastversion']; if ($row['file_versions'] > 1) { ?> <a href="#" onClick="expand('versions_<?php echo $row['file_id']; ?> ');"> (<?php echo $row['file_versions']; ?> ) </a> <?php } ?> </td> <td width="10%" nowrap="nowrap" align="center"> <?php echo $file_types[$row['file_category']]; ?> </td> <td width="5%" align="center"> <a href="./index.php?m=tasks&a=view&task_id=<?php echo $row['file_task']; ?> "> <?php echo $row['task_name']; ?> </a> </td> <td width="15%" nowrap="nowrap"> <?php echo $row["contact_first_name"] . ' ' . $row["contact_last_name"]; ?> </td> <td width="5%" nowrap="nowrap" align="right"> <?php echo file_size(intval($row['file_size'])); ?> </td> <td width="15%" nowrap="nowrap" align="right"> <?php echo $file_date->format($df . ' ' . $tf); ?> </td> <td width="10%"><?php echo $row['file_co_reason']; ?> </td> <td nowrap="nowrap" align="center"> <?php if ($canEdit && empty($row['file_checkout'])) { ?> <a href="?m=files&a=co&file_id=<?php echo $row['file_id']; ?> "> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/up.png', '16', '16', 'checkout', 'checkout file'); ?> </a> <?php } else { if ($row['file_checkout'] == $AppUI->user_id) { ?> <a href="?m=files&a=addedit&ci=1&file_id=<?php echo $row['file_id']; ?> "> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/down.png', '16', '16', 'checkin', 'checkin file'); ?> </a> <?php } else { if ($file['file_checkout'] == 'final') { echo ' ' . $AppUI->_('final'); } else { echo ' ' . $row['checkout_first_name'] . ' ' . $row['checkout_last_name'] . '<br />(' . $row['co_user'] . ')'; } } } ?> </td> <td nowrap="nowrap" align="right" width="48"> <?php if (empty($row['file_checkout']) || $row['file_checkout'] == 'final') { // Edit File if ($canEdit || $row['project_owner'] == $AppUI->user_id) { ?> <a href="./index.php?m=files&a=addedit&file_id=<?php echo $row['file_id']; ?> "> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/kedit.png', '16', '16', 'edit file', 'edit file'); ?> </a> <?php } // Duplicate File if ($canAuthor || $row['project_owner'] == $AppUI->user_id) { ?> <a href="#" onclick="document.frm_duplicate_file_<?php echo $row['file_id']; ?> .submit()"> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/duplicate.png', '16', '16', 'duplicate file', 'duplicate file'); ?> </a> <?php } // Delete File if ($canDelete || $row['project_owner'] == $AppUI->user_id) { ?> <a href="#" onclick="if (confirm('Are you sure you want to delete this file?')) {document.frm_remove_file_<?php echo $row['file_id']; ?> .submit()}"> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/remove.png', '16', '16', 'delete file', 'delete file'); ?> </a> <?php } } ?> </td> <td nowrap="nowrap" align="center" width="1"> <?php if ((empty($row['file_checkout']) || $row['file_checkout'] == 'final') && ($canEdit || $row['project_owner'] == $AppUI->user_id)) { $bulk_op = 'onchange="(this.checked) ? addBulkComponent(' . $row['file_id'] . ') : removeBulkComponent(' . $row['file_id'] . ')"'; ?> <input type="checkbox" <?php echo $bulk_op; ?> name="chk_sub_sel_file_<?php echo $file_row['file_id']; ?> " /> <?php } ?> </td> </tr> <?php if ($row['file_versions'] > 1) { ?> <tr><td colspan="20"> <table style="display: none" id="versions_<?php echo $row['file_id']; ?> " width="100%" border="0" cellpadding="2" cellspacing="1" class="tbl"> <tr> <th nowrap="nowrap"><?php echo $AppUI->_('File Name'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Description'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Versions'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Category'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Task Name'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Owner'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Size'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Type'); ?> </th> <th nowrap="nowrap"><?php echo $AppUI->_('Date'); ?> </th> <th nowrap="nowrap"width="1"> </th> <th nowrap="nowrap"width="1"> </th> </tr> <?php foreach ($file_versions as $file) { if ($file['file_version_id'] == $row['file_version_id']) { $file_icon = getIcon($file['file_type']); $file_version_date = new Date($file['file_date']); ?> <form name="frm_delete_sub_file_<?php echo $file['file_id']; ?> " action="?m=files" method="post"> <input type="hidden" name="dosql" value="do_file_aed" /> <input type="hidden" name="del" value="1" /> <input type="hidden" name="file_id" value="<?php echo $file['file_id']; ?> " /> <input type="hidden" name="redirect" value="<?php echo $current_uri; ?> " /> </form> <form name="frm_duplicate_sub_file_<?php echo $file['file_id']; ?> " action="?m=files" method="post"> <input type="hidden" name="dosql" value="do_file_aed" /> <input type="hidden" name="duplicate" value="1" /> <input type="hidden" name="file_id" value="<?php echo $file['file_id']; ?> " /> <input type="hidden" name="redirect" value="<?php echo $current_uri; ?> " /> </form> <tr> <td nowrap="8%"> <a href="./fileviewer.php?file_id=<?php echo $file['file_id']; ?> " title="<?php echo $file['file_description']; ?> "> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/' . $file_icon, '16', '16'); ?> <?php echo $file['file_name']; ?> </a> </td> <td width="20%"><?php echo $file['file_description']; ?> </td> <td width="5%" nowrap="nowrap" align="center"><?php echo $file['file_version']; ?> </td> <td width="10%" nowrap="nowrap" align="center"> <?php echo $file_types[$file['file_category']]; ?> </td> <td width="5%" align="center"> <a href="./index.php?m=tasks&a=view&task_id=<?php echo $file['file_task']; ?> "> <?php echo $file['task_name']; ?> </a> </td> <td width="15%" nowrap="nowrap"> <?php echo $file["contact_first_name"] . ' ' . $file["contact_last_name"]; ?> </td> <td width="5%" nowrap="nowrap" align="right"> <?php echo file_size(intval($file['file_size'])); ?> </td> <td nowrap="nowrap"> <?php echo $row['file_type']; ?> </td> <td width="15%" nowrap="nowrap" align="right"> <?php echo $file_version_date->format($df . ' ' . $tf); ?> </td> <td nowrap="nowrap" align="right" width="48"> <?php if (empty($file['file_checkout']) || $file['file_checkout'] == 'final') { // Edit File if ($canEdit || $row['project_owner'] == $AppUI->user_id) { ?> <a href="./index.php?m=files&a=addedit&file_id=<?php echo $row['file_id']; ?> "> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/kedit.png', '16', '16', 'edit file', 'edit file'); ?> </a> <?php } // Duplicate File if ($canAuthor) { ?> <a href="#" onclick="document.frm_duplicate_file_<?php echo $row['file_id']; ?> .submit()"> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/duplicate.png', '16', '16', 'duplicate file', 'duplicate file'); ?> </a> <?php } // Delete File if ($canDelete) { ?> <a href="#" onclick="if (confirm('<?php echo $AppUI->_('Are you sure you want to delete this file?'); ?> ')) {document.frm_remove_file_<?php echo $row['file_id']; ?> .submit()}"> <?php echo dPshowImage(DP_BASE_URL . '/modules/files/images/remove.png', '16', '16', 'delete file', $AppUI->_('delete file')); ?> </a> <?php } } ?> </td> <td nowrap="nowrap" align="center" width="1"> <?php if ((empty($row['file_checkout']) || $row['file_checkout'] == 'final') && ($canEdit || $row['project_owner'] == $AppUI->user_id)) { $bulk_op = 'onchange="(this.checked) ? addBulkComponent(' . $row['file_id'] . ') : removeBulkComponent(' . $row['file_id'] . ')"'; ?> <input type="checkbox" <?php echo $bulk_op; ?> name="chk_sub_sel_file_<?php echo $file_row['file_id']; ?> " /> <?php } ?> </td> </tr> <?php } } ?> </table> </td></tr> <?php } } ?> </table> <?php shownavbar($xpg_totalrecs, $xpg_pagesize, $xpg_total_pages, $page, $folder_id); echo "<br />"; }
/** * Sub-function to collect tasks within a period * * @param Date the starting date of the period * @param Date the ending date of the period * @param array by-ref an array of links to append new items to * @param int the length to truncate entries by * @param int the company id to filter by * @author Andrew Eddie <*****@*****.**> */ function getTaskLinks($startPeriod, $endPeriod, &$links, $strMaxLen, $company_id = 0) { global $a, $AppUI, $dPconfig; $tasks = CTask::getTasksForPeriod($startPeriod, $endPeriod, $company_id, $AppUI->user_id, true); $durnTypes = dPgetSysVal('TaskDurationType'); $link = array(); $sid = 3600 * 24; // assemble the links for the tasks foreach ($tasks as $row) { // the link $link['href'] = "?m=tasks&a=view&task_id=" . $row['task_id']; $link['alt'] = $row['project_name'] . ":\n" . $row['task_name']; // the link text if (strlen($row['task_name']) > $strMaxLen) { $row['task_name'] = substr($row['task_name'], 0, $strMaxLen) . '...'; } $link['text'] = '<span style="color:' . bestColor($row['color']) . ';background-color:#' . $row['color'] . '">' . $row['task_name'] . '</span>'; // determine which day(s) to display the task $start = new CDate($row['task_start_date']); $end = $row['task_end_date'] ? new CDate($row['task_end_date']) : null; $durn = $row['task_duration']; $durnType = $row['task_duration_type']; if (($start->after($startPeriod) || $start->equals($startPeriod)) && ($start->before($endPeriod) || $start->equals($endPeriod))) { $temp = $link; $temp['alt'] = "START [" . $row['task_duration'] . ' ' . $AppUI->_($durnTypes[$row['task_duration_type']]) . "]\n" . $link['alt']; if ($a != 'day_view') { $temp['text'] = dPshowImage(dPfindImage('block-start-16.png')) . $temp['text']; } $links[$start->format(FMT_TIMESTAMP_DATE)][] = $temp; } if ($end && $end->after($startPeriod) && $end->before($endPeriod) && $start->before($end)) { $temp = $link; $temp['alt'] = "FINISH\n" . $link['alt']; if ($a != 'day_view') { $temp['text'] .= dPshowImage(dPfindImage('block-end-16.png')); } $links[$end->format(FMT_TIMESTAMP_DATE)][] = $temp; } // convert duration to days if ($durnType < 24.0) { if ($durn > $dPconfig['daily_working_hours']) { $durn /= $dPconfig['daily_working_hours']; } else { $durn = 0.0; } } else { $durn *= $durnType / 24.0; } // fill in between start and finish based on duration // notes: // start date is not in a future month, must be this or past month // start date is counted as one days work // business days are not taken into account $target = $start; $target->addSeconds($durn * $sid); if (Date::compare($target, $startPeriod) < 0) { continue; } if (Date::compare($start, $startPeriod) > 0) { $temp = $start; $temp->addSeconds($sid); } else { $temp = $startPeriod; } // Optimised for speed, AJD. while (Date::compare($endPeriod, $temp) > 0 && Date::compare($target, $temp) > 0 && ($end == null || $temp->before($end))) { $links[$temp->format(FMT_TIMESTAMP_DATE)][] = $link; $temp->addSeconds($sid); } } }
start_date = eval( "document." + frm_name + "." + "add_task_" + f_date.replace("end_date","start_date") ); duration_fld = eval( "document." + frm_name + "." + "add_task_" + f_date.replace("end_date","duration") ); durntype_fld = eval( "document." + frm_name + "." + "add_task_" + f_date.replace("end_date","durntype") ); } calcDuration(document.editFrm, start_date, end_date, duration_fld, durntype_fld); } } } else { fld_task_date.value = ""; } } </script> <?php $priorities = dPgetsysval('TaskPriority'); $types = dPgetsysval('TaskType'); $durntype = dPgetSysVal('TaskDurationType'); include_once $AppUI->getModuleClass('tasks'); global $task_access; $extra = array(0 => '(none)', 1 => 'Milestone', 2 => 'Dynamic Task', 3 => 'Inactive Task'); $sel_priorities = arraySelect($priorities, 'add_task_priority0', 'style="width:80px" class="text"', ''); $sel_types = arraySelect($types, 'add_task_type0', 'style="width:80px" class="text"', ''); $sel_access = arraySelect($task_access, 'add_task_access0', 'style="width:80px" class="text"', ''); $sel_extra = arraySelect($extra, 'add_task_extra0', 'style="width:80px" class="text"', ''); $sel_durntype = arraySelect($durntype, 'add_task_durntype0', 'style="width:80px" class="text"', '', true); ?> <script language="javascript"> var sel_priorities = "<?php echo str_replace(chr(10), '', str_replace('"', "'", $sel_priorities)); ?> "; var sel_types = "<?php
<?php /* HELPDESK $Id: list.php,v 1.78 2005/12/28 20:02:49 theideaman Exp $ */ include_once dPgetConfig('root_dir') . '/modules/helpdesk/helpdesk.functions.php'; include_once "./modules/helpdesk/config.php"; $allowedCompanies = getAllowedCompanies(); $allowedProjects = getAllowedProjects(); $ipr = dPgetSysVal('HelpDeskPriority'); $ist = dPgetSysVal('HelpDeskStatus'); $AppUI->savePlace(); $df = $AppUI->getPref('SHDATEFORMAT'); $tf = $AppUI->getPref('TIMEFORMAT'); $format = $df . " " . $tf; // check sort order if (isset($_GET['orderby'])) { $AppUI->setState('HelpDeskIdxOrderBy', $_GET['orderby']); } $orderby = $AppUI->getState('HelpDeskIdxOrderBy') ? $AppUI->getState('HelpDeskIdxOrderBy') : 'item_id'; // check sort order way (asc/desc) if (isset($_GET['orderdesc'])) { $AppUI->setState('HelpDeskIdxOrderDesc', $_GET['orderdesc']); } $orderdesc = $AppUI->getState('HelpDeskIdxOrderDesc') ? $AppUI->getState('HelpDeskIdxOrderDesc') : 0; if (isset($_GET['page'])) { $AppUI->setState('HelpDeskListPage', $_GET['page']); } else { // If page isn't mentioned, we need to reset $AppUI->setState('HelpDeskListPage', 0); } $page = $AppUI->getState('HelpDeskListPage') ? $AppUI->getState('HelpDeskListPage') : 0; $tarr = array();
?> "; } if (f.project_actual_end_date.value > 0 && f.project_actual_end_date.value < f.project_start_date.value) { msg += "\n<?php echo $AppUI->_('projectsBadEndDate2'); ?> "; } */ <?php /* ** Automatic required fields generated from System Values */ $requiredFields = dPgetSysVal('ProjectRequiredFields'); echo dPrequiredFields($requiredFields); ?> if (msg.length < 1) { f.submit(); } else { alert(msg); } } var selected_contacts_id = "<?php echo implode(',', $selected_contacts); ?> ";
} $company_id = intval(dPgetParam($_GET, "company_id", 0)); // check permissions for this company $perms =& $AppUI->acl(); // If the company exists we need edit permission, // If it is a new company we need add permission on the module. if ($company_id) { $canEdit = $perms->checkModuleItem($m, "edit", $company_id); } else { $canEdit = $perms->checkModule($m, "add"); } if (!$canEdit) { $AppUI->redirect("m=public&a=access_denied"); } // load the company types $types = dPgetSysVal('CompanyType'); // load the record data $q = new DBQuery(); $q->addTable('companies'); $q->addQuery('companies.*'); $q->addQuery('con.contact_first_name'); $q->addQuery('con.contact_last_name'); $q->addJoin('users', 'u', 'u.user_id = companies.company_owner'); $q->addJoin('contacts', 'con', 'u.user_contact = con.contact_id'); $q->addWhere('companies.company_id = ' . $company_id); $sql = $q->prepare(); $q->clear(); $obj = null; if (!db_loadObject($sql, $obj) && $company_id > 0) { // $AppUI->setMsg( ' $qid =& $q->exec(); Company' ); // What is this for? $AppUI->setMsg("invalidID", UI_MSG_ERROR, true);
<?php /* tasks_func.php, 2006/02/23 18:22:31 Attest sw-libre@attest.es Exp $*/ //ina $percent = array(0=>'0',5=>'5',10=>'10',15=>'15',20=>'20',25=>'25',30=>'30',35=>'35',40=>'40',45=>'45',50=>'50',55=>'55',60=>'60',65=>'65',70=>'70',75=>'75',80=>'80',85=>'85',90=>'90',95=>'95',100=>'100'); $percent = array(0 => '0', 25 => '25', 50 => '50', 75 => '75', 100 => 'Finalizada'); // patch 2.12.04 add all finished last 7 days, my finished last 7 days $filters = array('my' => 'My Tasks', 'myunfinished' => 'My Unfinished Tasks', 'allunfinished' => 'All Unfinished Tasks', 'myproj' => 'My Projects', 'mycomp' => 'All Tasks for my Company', 'unassigned' => 'All Tasks (unassigned)', 'taskcreated' => 'All Tasks I Have Created', 'all' => 'All Tasks'); //'allfinished7days' => 'All Tasks Finished Last 7 Days', //'myfinished7days' => 'My Tasks Finished Last 7 Days' $status = dPgetSysVal('TaskStatus'); $priority = array(-1 => 'low', 0 => 'normal', 1 => 'high');