public static function download() { // Get default currency $default_currency = config::get_config_item("currency"); // Get list of active currencies $meta = new meta("currencyType"); $currencies = $meta->get_list(); foreach ((array) $currencies as $code => $currency) { if ($code == $default_currency) { continue; } if ($ret = exchangeRate::update_rate($code, $default_currency)) { $rtn[] = $ret; } if ($ret = exchangeRate::update_rate($default_currency, $code)) { $rtn[] = $ret; } } return $rtn; }
* allocPSA is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public * License for more details. * * You should have received a copy of the GNU Affero General Public License * along with allocPSA. If not, see <http://www.gnu.org/licenses/>. */ define("NO_REDIRECT", 1); require_once "../alloc.php"; //usleep(1000); $t = timeSheetItem::parse_time_string($_REQUEST["time_item"]); $timeUnit = new timeUnit(); $units = $timeUnit->get_assoc_array("timeUnitID", "timeUnitLabelA"); $timeSheetItemMultiplier = new meta("timeSheetItemMultiplier"); $tsims = $timeSheetItemMultiplier->get_list(); foreach ($t as $k => $v) { if ($v) { if ($k == "taskID") { $task = new task(); $task->set_id($v); if ($task->select()) { $v = $task->get_id() . " " . $task->get_link(); } else { $v = "Task " . $v . " not found."; } } else { if ($k == "unit") { $v = $units[$v]; } else { if ($k == "multiplier") {
function rebuild_cache($table) { $cache =& singleton("cache"); if (meta::$tables[$table]) { $m = new meta($table); $cache[$table] = $m->get_list(); } else { $db = new db_alloc(); $db->query("SELECT * FROM " . $table); while ($row = $db->row()) { $cache[$table][$db->f($table . "ID")] = $row; } } // Special processing for person and config tables if ($table == "person") { $people = $cache["person"]; foreach ($people as $id => $row) { if ($people[$id]["firstName"] && $people[$id]["surname"]) { $people[$id]["name"] = $people[$id]["firstName"] . " " . $people[$id]["surname"]; } else { $people[$id]["name"] = $people[$id]["username"]; } } uasort($people, "sort_by_name"); $cache["person"] = $people; } else { if ($table == "config") { // Special processing for config table $config = $cache["config"]; foreach ($config as $id => $row) { $rows_config[$row["name"]] = $row; } $cache["config"] = $rows_config; } } singleton("cache", $cache); }
function show_new_timeSheet($template) { global $TPL; global $timeSheet; global $timeSheetID; $current_user =& singleton("current_user"); // Don't show entry form for new timeSheet. if (!$timeSheetID) { return; } if (is_object($timeSheet) && ($timeSheet->get_value("status") == 'edit' || $timeSheet->get_value("status") == 'rejected') && ($timeSheet->get_value("personID") == $current_user->get_id() || $timeSheet->have_perm(PERM_TIME_INVOICE_TIMESHEETS))) { $TPL["currency"] = page::money($timeSheet->get_value("currencyTypeID"), '', "%S"); // If we are editing an existing timeSheetItem $timeSheetItem_edit = $_POST["timeSheetItem_edit"] or $timeSheetItem_edit = $_GET["timeSheetItem_edit"]; $timeSheetItemID = $_POST["timeSheetItemID"] or $timeSheetItemID = $_GET["timeSheetItemID"]; if ($timeSheetItemID && $timeSheetItem_edit) { $timeSheetItem = new timeSheetItem(); $timeSheetItem->currency = $timeSheet->get_value("currencyTypeID"); $timeSheetItem->set_id($timeSheetItemID); $timeSheetItem->select(); $timeSheetItem->set_values("tsi_"); $TPL["tsi_rate"] = $timeSheetItem->get_value("rate", DST_HTML_DISPLAY); $taskID = $timeSheetItem->get_value("taskID"); $TPL["tsi_buttons"] = ' <button type="submit" name="timeSheetItem_delete" value="1" class="delete_button">Delete<i class="icon-trash"></i></button> <button type="submit" name="timeSheetItem_save" value="1" class="save_button default">Save Item<i class="icon-ok-sign"></i></button> '; $timeSheetItemDurationUnitID = $timeSheetItem->get_value("timeSheetItemDurationUnitID"); $TPL["tsi_commentPrivate"] and $TPL["commentPrivateChecked"] = " checked"; $TPL["ts_rate_editable"] = $timeSheet->can_edit_rate(); $timeSheetItemMultiplier = $timeSheetItem->get_value("multiplier"); // Else default values for creating a new timeSheetItem } else { $TPL["tsi_buttons"] = '<button type="submit" name="timeSheetItem_save" value="1" class="save_button">Add Item<i class="icon-plus-sign"></i></button>'; $TPL["tsi_personID"] = $current_user->get_id(); $timeSheet->load_pay_info(); $TPL["tsi_rate"] = $timeSheet->pay_info["project_rate"]; $timeSheetItemDurationUnitID = $timeSheet->pay_info["project_rateUnitID"]; $TPL["ts_rate_editable"] = $timeSheet->can_edit_rate(); } $taskID or $taskID = $_GET["taskID"]; $TPL["taskListDropdown_taskID"] = $taskID; $TPL["taskListDropdown"] = $timeSheet->get_task_list_dropdown("mine", $timeSheet->get_id(), $taskID); $TPL["tsi_timeSheetID"] = $timeSheet->get_id(); $timeUnit = new timeUnit(); $unit_array = $timeUnit->get_assoc_array("timeUnitID", "timeUnitLabelA"); $TPL["tsi_unit_options"] = page::select_options($unit_array, $timeSheetItemDurationUnitID); $timeSheetItemDurationUnitID and $TPL["tsi_unit_label"] = $unit_array[$timeSheetItemDurationUnitID]; $m = new meta("timeSheetItemMultiplier"); $tsMultipliers = $m->get_list(); foreach ($tsMultipliers as $k => $v) { $multiplier_array[$k] = $v["timeSheetItemMultiplierName"]; } $TPL["tsi_multiplier_options"] = page::select_options($multiplier_array, $timeSheetItemMultiplier); include_template($template); } }
function get_timeSheetItem_list_items($timeSheetID) { global $TPL; list($db, $customerBilledDollars, $timeSheet, $unit_array, $currency) = $this->get_timeSheetItem_vars($timeSheetID); $m = new meta("timeSheetItemMultiplier"); $multipliers = $m->get_list(); while ($db->next_record()) { $timeSheetItem = new timeSheetItem(); $timeSheetItem->read_db_record($db); $row_num++; $taskID = sprintf("%d", $timeSheetItem->get_value("taskID")); $num = sprintf("%0.2f", $timeSheetItem->get_value("timeSheetItemDuration")); $info["total"] += $num; $rows[$row_num]["date"] = $timeSheetItem->get_value("dateTimeSheetItem"); $rows[$row_num]["units"] = $num . " " . $unit_array[$timeSheetItem->get_value("timeSheetItemDurationUnitID")]; $rows[$row_num]["multiplier_string"] = $multipliers[$timeSheetItem->get_value("multiplier")]["timeSheetItemMultiplierName"]; unset($str); $d = $timeSheetItem->get_value('taskID', DST_HTML_DISPLAY) . ": " . $timeSheetItem->get_value('description', DST_HTML_DISPLAY); $d && !$rows[$row_num]["desc"] and $str[] = "<b>" . $d . "</b>"; // Get task description if ($taskID && $TPL["printDesc"]) { $t = new task(); $t->set_id($taskID); $t->select(); $d2 = str_replace("\r\n", "\n", $t->get_value("taskDescription", DST_HTML_DISPLAY)); $d2 .= "\n"; $d2 && !$d2s[$taskID] and $str[] = $d2; $d2 and $d2s[$taskID] = true; } $c = str_replace("\r\n", "\n", $timeSheetItem->get_value("comment")); !$timeSheetItem->get_value("commentPrivate") && $c and $str[] = page::htmlentities($c); is_array($str) and $rows[$row_num]["desc"] .= trim(implode(DEFAULT_SEP, $str)); } $timeSheet->load_pay_info(); $info["total"] = $timeSheet->pay_info["summary_unit_totals"]; $rows or $rows = array(); $info or $info = array(); return array($rows, $info); }