public function load() { global $db; $q = new w2p_Database_Query(); $q->addTable('custom_fields_lists'); $q->addWhere('field_id = ' . $this->field_id); $q->addOrder('list_value'); if (!$q->exec()) { return $db->ErrorMsg(); } while ($opt_row = $q->fetchRow()) { $this->options[$opt_row['list_option_id']] = $opt_row['list_value']; } }
public function authenticate($username, $password) { global $db, $AppUI; $this->username = $username; $q = new w2p_Database_Query(); $q->addTable('users'); $q->addQuery('user_id, user_password'); $q->addWhere("user_username = '******'"); $q->addWhere("user_password = '******'"); $q->exec(); if ($row = $q->fetchRow()) { $this->user_id = $row['user_id']; return true; } return false; }
public function load($object_id) { // Override Load Method for List type Classes $q = new w2p_Database_Query(); $q->addTable('custom_fields_values'); $q->addWhere('value_field_id = ' . $this->field_id); $q->addWhere('value_object_id = ' . (int) $object_id); $rs = $q->exec(); $row = $q->fetchRow(); $value_id = $row['value_id']; $value_charvalue = $row['value_charvalue']; $value_intvalue = $row['value_intvalue']; if ($value_id != null) { $this->value_id = $value_id; $this->value_charvalue = $value_charvalue; $this->value_intvalue = $value_intvalue; } }
public function store(CAppUI $AppUI = null) { global $AppUI; $perms = $AppUI->acl(); $stored = false; $this->_error = $this->check(); if (count($this->_error)) { return $this->_error; } $q = new w2p_Database_Query(); if ($this->message_id && $perms->checkModuleItem('forums', 'edit', $this->forum_id)) { $q->setDelete('forum_visits'); $q->addWhere('visit_message = ' . (int) $this->message_id); $q->exec(); if ($msg = parent::store()) { return $msg; } $stored = true; } if (0 == $this->message_id && $perms->checkModuleItem('forums', 'add')) { $this->message_date = $q->dbfnNowWithTZ(); if ($msg = parent::store()) { return $msg; } $q->addTable('forum_messages'); $q->addQuery('count(message_id), MAX(message_date)'); $q->addWhere('message_forum = ' . (int) $this->message_forum); $reply = $q->fetchRow(); //update forum descriptor $forum = new CForum(); $forum->load($AppUI, $this->message_forum); $forum->forum_message_count = $reply[0]; /* * Note: the message_date here has already been adjusted for the * timezone above, so don't do it again! */ $forum->forum_last_date = $this->message_date; $forum->forum_last_id = $this->message_id; $forum->store($AppUI); $this->sendWatchMail(false); $stored = true; } return $stored; }
public function authenticate($username, $password) { global $db, $AppUI; $this->username = $username; $q = new w2p_Database_Query(); $q->addTable('users'); $q->addQuery('user_id, user_password'); $q->addWhere('user_username = \'' . $username . '\''); if (!($rs = $q->exec())) { $q->clear(); return false; } if (!($row = $q->fetchRow())) { $q->clear(); return false; } $this->user_id = $row['user_id']; $q->clear(); if (MD5($password) == $row['user_password']) { return true; } return false; }
$q2->addWhere($where_list); } if ($project_id > 0) { $q2->addWhere('project_id = ' . $project_id); } $q2->addGroup('project_id'); $perms =& $AppUI->acl(); $projects = array(); $canViewTask = canView('tasks'); if ($canViewTask) { $prc = $q->exec(); echo db_error(); while ($row = $q->fetchRow()) { $projects[$row['project_id']] = $row; } $prc2 = $q2->fetchRow(); echo db_error(); while ($row2 = $q2->fetchRow()) { if ($projects[$row2['project_id']]) { array_push($projects[$row2['project_id']], $row2); } } } $q->clear(); $q2->clear(); $q->addQuery('tasks.task_id, task_parent, task_name'); $q->addQuery('task_start_date, task_end_date, task_dynamic'); $q->addQuery('task_pinned, pin.user_id as pin_user'); $q->addQuery('ut.user_task_priority'); $q->addQuery('task_priority, task_percent_complete'); $q->addQuery('task_duration, task_duration_type');
$q->leftJoin('departments', 'departments', 'departments.dept_id = project_departments.department_id OR dept_id IS NULL'); $q->addWhere('t1.task_id = t1.task_parent'); $q->addWhere('projects.project_id=' . $project_id); if (count($allowedProjects)) { $q->addWhere($allowedProjects); } $q->addGroup('projects.project_id'); $q2 = new w2p_Database_Query(); $q2 = $q; $q2->addQuery('projects.project_id, COUNT(t1.task_id) as total_tasks'); $perms =& $AppUI->acl(); $projects = array(); if ($canViewTasks) { $prc = $q->exec(); echo db_error(); while ($row = $q->fetchRow()) { $projects[$row['project_id']] = $row; } $prc2 = $q2->exec(); echo db_error(); while ($row2 = $q2->fetchRow()) { $projects[$row2['project_id']] = !$projects[$row2['project_id']] ? array() : $projects[$row2['project_id']]; array_push($projects[$row2['project_id']], $row2); } } $q->clear(); $q2->clear(); $q->addQuery('tasks.task_id, task_parent, task_name'); $q->addQuery('task_start_date, task_end_date, task_dynamic'); $q->addQuery('count(tasks.task_parent) as children'); $q->addQuery('task_pinned, pin.user_id as pin_user');
/** * Called by the Event Queue processor to process a reminder * on a task. * @access public * @param string $module Module name (not used) * @param string $type Type of event (not used) * @param integer $id ID of task being reminded * @param integer $owner Originator of event * @param mixed $args event-specific arguments. * @return mixed true, dequeue event, false, event stays in queue. * -1, event is destroyed. */ public function remind($module, $type, $id, $owner, &$args) { global $locale_char_set, $AppUI; $q = new w2p_Database_Query(); // At this stage we won't have an object yet if (!$this->load($id)) { return -1; // No point it trying again later. } $this->htmlDecode(); // Only remind on working days. $today = new w2p_Utilities_Date(); if (!$today->isWorkingDay()) { return true; } // Check if the task is completed if ($this->task_percent_complete == 100) { return -1; } $contacts = $this->getAssigned(); // Now we also check the owner of the task, as we will need // to notify them as well. $owner_is_not_assignee = false; $q->addTable('users', 'u'); $q->addJoin('contacts', 'c', 'c.contact_id = u.user_contact', 'inner'); $q->addQuery('c.contact_id, contact_first_name, contact_last_name, contact_email'); $q->addWhere('u.user_id = ' . (int) $this->task_owner); if ($q->exec(ADODB_FETCH_NUM)) { list($owner_contact, $owner_first_name, $owner_last_name, $owner_email) = $q->fetchRow(); if (!isset($contacts[$owner_contact])) { $owner_is_not_assignee = true; $contacts[$owner_contact] = array('contact_id' => $owner_contact, 'contact_first_name' => $owner_first_name, 'contact_last_name' => $owner_last_name, 'contact_email' => $owner_email); } } $q->clear(); // build the subject line, based on how soon the // task will be overdue. $starts = new w2p_Utilities_Date($this->task_start_date); $expires = new w2p_Utilities_Date($this->task_end_date); $now = new w2p_Utilities_Date(); $diff = $expires->dateDiff($now); $diff *= w2p_Utilities_Date::compare($expires, $now); $prefix = $AppUI->_('Task Due', UI_OUTPUT_RAW); if ($diff == 0) { $msg = $AppUI->_('TODAY', UI_OUTPUT_RAW); } elseif ($diff == 1) { $msg = $AppUI->_('TOMORROW', UI_OUTPUT_RAW); } elseif ($diff < 0) { $msg = $AppUI->_(array('OVERDUE', abs($diff), 'DAYS')); $prefix = $AppUI->_('Task', UI_OUTPUT_RAW); } else { $msg = $AppUI->_(array($diff, 'DAYS')); } $project = new CProject(); $project_name = $project->load($this->task_project)->project_name; // Check to see that the project is both active and not a template if (!$project->project_active || $project->project_status == w2PgetConfig('template_projects_status_id', 0)) { return -1; } $subject = $prefix . ' ' . $msg . ' ' . $this->task_name . '::' . $project_name; $body = $AppUI->_('Task Due', UI_OUTPUT_RAW) . ': ' . $msg . "\n" . $AppUI->_('Project', UI_OUTPUT_RAW) . ': ' . $project_name . "\n" . $AppUI->_('Task', UI_OUTPUT_RAW) . ': ' . $this->task_name . "\n" . $AppUI->_('Start Date', UI_OUTPUT_RAW) . ': START-TIME' . "\n" . $AppUI->_('Finish Date', UI_OUTPUT_RAW) . ': END-TIME' . "\n" . $AppUI->_('URL', UI_OUTPUT_RAW) . ': ' . W2P_BASE_URL . '/index.php?m=tasks&a=view&task_id=' . $this->task_id . '&reminded=1' . "\n\n" . $AppUI->_('Resources', UI_OUTPUT_RAW) . ":\n"; foreach ($contacts as $contact) { if (!$owner_is_not_assignee || $owner_is_not_assignee && $contact['contact_id'] != $owner_contact) { $body .= $contact['contact_first_name'] . ' ' . $contact['contact_last_name'] . ' <' . $contact['contact_email'] . ">\n"; } } $body .= "\n" . $AppUI->_('Description', UI_OUTPUT_RAW) . ":\n" . $this->task_description . "\n"; $mail = new w2p_Utilities_Mail(); $mail->Subject($subject, $locale_char_set); foreach ($contacts as $contact) { $user_id = CUser::getUserIdByContactID($contact['contact_id']); $AppUI->loadPrefs($user_id); $df = $AppUI->getPref('DISPLAYFORMAT'); $tz = $AppUI->getPref('TIMEZONE'); $body = str_replace('START-TIME', $starts->convertTZ($tz)->format($df), $body); $body = str_replace('END-TIME', $expires->convertTZ($tz)->format($df), $body); $mail->Body($body, $locale_char_set); if ($mail->ValidEmail($contact['contact_email'])) { $mail->To($contact['contact_email'], true); $mail->Send(); } } return true; }
if ($_GET['out_session'] && $_GET['out_user_log_id']) { $boot_user_session = $_GET['out_session']; $boot_user_log_id = w2PgetParam($_GET, 'out_user_log_id', null); $boot_query_row = false; } else { if ($canEdit && $canDelete && $logoutUserFlag) { // query for all sessions open for a given user $r = new w2p_Database_Query(); $r->addTable('sessions', 's'); $r->addQuery('DISTINCT(session_id), user_access_log_id'); $r->addJoin('user_access_log', 'ual', 'session_user = user_access_log_id'); $r->addWhere('user_id = ' . (int) $boot_user_id); $r->addOrder('user_access_log_id'); //execute query and fetch results $r->exec(); $boot_query_row = $r->fetchRow(); if ($boot_query_row) { $boot_user_session = $boot_query_row['session_id']; $boot_user_log_id = $boot_query_row['user_access_log_id']; } } } do { if ($boot_user_id == $AppUI->user_id && $boot_user_session == $_COOKIE['PHPSESSID']) { $AppUI->resetPlace(); $AppUI->redirect('logout=-1'); } else { addHistory('login', $boot_user_id, 'logout', $details); w2PsessionDestroy($boot_user_session, $boot_user_log_id); } if ($boot_query_row) {
public function get_object_sections($section_value = null, $return_hidden = 1, $object_type = null, $limit_clause = null) { switch (strtolower(trim($object_type))) { case 'aco': $object_type = 'aco'; $table = $this->_db_acl_prefix . 'aco_sections'; break; case 'aro': $object_type = 'aro'; $table = $this->_db_acl_prefix . 'aro_sections'; break; case 'axo': $object_type = 'axo'; $table = $this->_db_acl_prefix . 'axo_sections'; break; default: $this->debug_text('get_object_sections(): Invalid Object Type: ' . $object_type); return false; } $this->debug_text("get_objects(): Section Value: {$section_value} Object Type: {$object_type}"); // $query = 'SELECT id, value, name, order_value, hidden FROM '. $table; $q = new w2p_Database_Query(); $q->addTable($table); $q->addQuery('id, value, name, order_value, hidden'); if (!empty($section_value)) { $q->addWhere('value=' . $this->db->quote($section_value)); } if ($return_hidden == 0) { $q->addWhere('hidden=0'); } if (!empty($limit_clause)) { $q->addWhere($limit_clause); } $q->addOrder('order_value'); $rs = $q->exec(); $retarr = array(); while ($row = $q->fetchRow()) { $retarr[] = array('id' => $row[0], 'value' => $row[1], 'name' => $row[2], 'order_value' => $row[3], 'hidden' => $row[4]); } $q->clear(); // Return objects return $retarr; }
function parseFormatSysval($text, $syskey) { $q = new w2p_Database_Query(); $q->addTable('syskeys'); $q->addQuery('syskey_type, syskey_sep1, syskey_sep2'); $q->addWhere('syskey_id = ' . (int) $syskey); $q->exec(); $row = $q->fetchRow(); $q->clear(); // type 0 = list $sep1 = $row['syskey_sep1']; // item separator $sep2 = $row['syskey_sep2']; // alias separator // A bit of magic to handle newlines and returns as separators // Missing sep1 is treated as a newline. if (!isset($sep1) || empty($sep1)) { $sep1 = "\n"; } if ($sep1 == "\\n") { $sep1 = "\n"; } if ($sep1 == "\\r") { $sep1 = "\r"; } $temp = explode($sep1, $text); $arr = array(); // We use trim() to make sure a numeric that has spaces // is properly treated as a numeric foreach ($temp as $item) { if ($item) { $sep2 = empty($sep2) ? "\n" : $sep2; $temp2 = explode($sep2, $item); if (isset($temp2[1])) { $arr[mb_trim($temp2[0])] = mb_trim($temp2[1]); } else { $arr[mb_trim($temp2[0])] = mb_trim($temp2[0]); } } } return $arr; }
$task_parent_options = ''; // Now lets get non-root tasks, grouped by the task parent $q = new w2p_Database_Query(); $q->addQuery('task_id, task_name, task_end_date, task_start_date, task_milestone, task_parent, task_dynamic'); $q->addTable('tasks'); $q->addWhere('task_project = ' . (int) $task_project); $q->addWhere('task_id <> task_parent'); $q->addOrder('task_start_date'); $parents = array(); $projTasksWithEndDates = array(0 => $AppUI->_('None')); //arrays contains task end date info for setting new task start date as maximum end date of dependenced tasks global $all_tasks; $all_tasks = array(); $sub_tasks = $q->exec(); if ($sub_tasks) { while ($sub_task = $q->fetchRow()) { // Build parent/child task list $parents[$sub_task['task_parent']][] = $sub_task['task_id']; $all_tasks[$sub_task['task_id']] = $sub_task; build_date_list($projTasksWithEndDates, $sub_task); } } $q->clear(); // let's iterate root tasks foreach ($root_tasks as $root_task) { build_date_list($projTasksWithEndDates, $root_task); if ($root_task['task_id'] != $task_id) { constructTaskTree_pd($root_task, $parents, $all_tasks); } } $project = new CProject();
public function getEventsInWindow($start_date, $end_date, $start_time, $end_time, $users = null) { global $AppUI; if (!isset($users)) { return false; } if (!count($users)) { return false; } // Now build a query to find matching events. $q = new w2p_Database_Query(); $q->addTable('events', 'e'); $q->addQuery('e.event_owner, ue.user_id, e.event_cwd, e.event_id, e.event_start_date, e.event_end_date'); $q->addJoin('user_events', 'ue', 'ue.event_id = e.event_id'); $q->addWhere('event_start_date >= \'' . $start_date . '\' AND event_end_date <= \'' . $end_date . '\' AND EXTRACT(HOUR_MINUTE FROM e.event_end_date) >= \'' . $start_time . '\' AND EXTRACT(HOUR_MINUTE FROM e.event_start_date) <= \'' . $end_time . '\' AND ( e.event_owner in (' . implode(',', $users) . ') OR ue.user_id in (' . implode(',', $users) . ') )'); $result = $q->exec(); if (!$result) { return false; } $eventlist = array(); while ($row = $q->fetchRow()) { $eventlist[] = $row; } $q->clear(); return $eventlist; }
public function sendWatchMail($debug = false) { global $AppUI, $debug, $w2Pconfig; $subj_prefix = $AppUI->_('forumEmailSubj', UI_OUTPUT_RAW); $body_msg = $AppUI->_('forumEmailBody', UI_OUTPUT_RAW); // Get the message from details. $q = new w2p_Database_Query(); $q->addTable('users', 'u'); $q->addQuery('contact_first_name, contact_last_name, contact_email'); $q->addJoin('contacts', 'con', 'contact_id = user_contact', 'inner'); $q->addWhere('user_id = ' . (int) $this->message_author); $res = $q->exec(); if ($row = $q->fetchRow()) { $message_from = $row['contact_first_name'] . ' ' . $row['contact_last_name'] . '<' . $row['contact_email'] . '>'; } else { $message_from = 'Unknown user'; } // Get the forum name; $q->clear(); $q->addTable('forums'); $q->addQuery('forum_name'); $q->addWhere('forum_id = \'' . $this->message_forum . '\''); $res = $q->exec(); if ($row = $q->fetchRow()) { $forum_name = $row['forum_name']; } else { $forum_name = 'Unknown'; } // SQL-Query to check if the message should be delivered to all users (forced) // In positive case there will be a (0,0,0) row in the forum_watch table $q->clear(); $q->addTable('forum_watch'); $q->addQuery('*'); $q->addWhere('watch_user = 0 AND watch_forum = 0 AND watch_topic = 0'); $resAll = $q->exec(); $AllCount = db_num_rows($resAll); $q->clear(); $q->addTable('users'); $q->addQuery('DISTINCT user_id, contact_first_name, contact_last_name, contact_email'); $q->leftJoin('contacts', 'con', 'con.contact_id = user_contact'); if ($AllCount < 1) { //message is only delivered to users that checked the forum watch $q->addTable('forum_watch'); $q->addWhere('user_id = watch_user AND (watch_forum = ' . (int) $this->message_forum . ' OR watch_topic = ' . (int) $this->message_parent . ')'); } if (!($res = $q->exec(ADODB_FETCH_ASSOC))) { $q->clear(); return; } if (db_num_rows($res) < 1) { return; } $mail = new w2p_Utilities_Mail(); $mail->Subject($subj_prefix . ' ' . $this->message_title, isset($GLOBALS['locale_char_set']) ? $GLOBALS['locale_char_set'] : ''); $body = $body_msg; $body .= "\n\n" . $AppUI->_('Forum', UI_OUTPUT_RAW) . ': ' . $forum_name; $body .= "\n" . $AppUI->_('Subject', UI_OUTPUT_RAW) . ': ' . $this->message_title; $body .= "\n" . $AppUI->_('Message From', UI_OUTPUT_RAW) . ': ' . $message_from; $body .= "\n\n" . W2P_BASE_URL . '/index.php?m=forums&a=viewer&forum_id=' . $this->message_forum; $body .= "\n\n" . $this->message_body; $mail->Body($body, isset($GLOBALS['locale_char_set']) ? $GLOBALS['locale_char_set'] : ''); while ($row = $q->fetchRow()) { if ($mail->ValidEmail($row['contact_email'])) { $mail->To($row['contact_email'], true); $mail->Send(); } } $q->clear(); return; }