function DB_DELETE($Table, $Where) { $SQL = "DELETE FROM {$Table} WHERE {$Where}"; DB_QUERY($SQL); $SQL = "OPTIMIZE TABLE {$Table}"; DB_QUERY($SQL); }
} else { $comment = $_GET['comment']; } $comment = ppPrepareForDB($comment); $sql = "INSERT INTO {$_TABLES['nf_projectcomments']} (project_id, uid, timestamp, comment) "; $sql .= "VALUES ('{$project_id}','{$usermodeUID}',UNIX_TIMESTAMP(),'{$comment}')"; if ($CONF_NF['debug']) { COM_errorLog($sql); } DB_query($sql); } elseif ($op == 'delcomment' and $cid > 0) { $sql = "DELETE FROM {$_TABLES['nf_projectcomments']} WHERE id='{$cid}'"; DB_query($sql); } $sql = "SELECT * FROM {$_TABLES['nf_projects']} WHERE id='{$project_id}'"; $query = DB_QUERY($sql); $PD = DB_fetchArray($query); $p->set_var('description', $PD['description']); // Knowing the project id - retrieve the request form results $result_id = DB_getItem($_TABLES['nf_projectforms'], 'results_id', "project_id='{$project_id}'"); $p->set_var('submitter_name', $PD['cust3']); $p->set_var('project_number', $project_id); $p->set_var('project_status', $CONF_NF['NFProjectStatus'][$PD['status']]); if ($PD['status'] == 6) { // Project in Recycle State $onclick_action = 'onClick="return confirm(\'Are you sure you want to Re-Initiate this Project?\');"'; $reclaim_html = '<form action="' . $_CONF['site_url'] . '/nexflow/reclnfproject.php" method="post" style="display:inline;margin:0px;">' . LB; $reclaim_html .= '<input type="hidden" name="projectid" value="' . $project_id . '">' . LB; $reclaim_html .= '<input type="hidden" name="taskuser" value="' . $usermodeUID . '">' . LB; $reclaim_html .= '<input type="submit" value="Re-Initiate" ' . $onclick_action . '></form>'; $p->set_var('special_status_action', $reclaim_html);
function processDetailGetOutstandingTasks($project_id, &$template) { global $_TABLES, $CONF_NF, $usermodeUID; // Retrieve any Outstanding Tasks // Determine the unique process id's for this project $sql = "SELECT wf_process_id,related_processes FROM {$_TABLES['nf_projects']} WHERE id='{$project_id}'"; $query = DB_QUERY($sql); $A = DB_fetchArray($query); if ($A['related_processes'] != '') { $projectProcesses = explode(',', $A['related_processes']); } else { $projectProcesses = array(); } array_push($projectProcesses, $A['wf_process_id']); // Check and see if there are any child process of this parent process - will if this is a regenerated process $A['wf_process_id'] = NXCOM_filterInt($A['wf_process_id']); $query = DB_query("SELECT id FROM {$_TABLES['nf_process']} WHERE pid={$A['wf_process_id']}"); while ($P = DB_fetchArray($query)) { array_push($projectProcesses, $P['id']); } $cid = 1; if (count($projectProcesses > 0)) { foreach ($projectProcesses as $process_id) { // Get tasks that have assignment by variable $template->set_var('taskuser', $usermodeUID); $template->set_var('user_options', nf_listUsers()); if ($process_id > 0) { $sql = "SELECT distinct a.id, a.nf_processID,d.taskname, d.nf_templateID, a.status, a.archived, "; $sql .= "a.createdDate, c.uid, c.nf_processVariable, a.nf_templateDataID FROM {$_TABLES['nf_queue']} a "; $sql .= "LEFT JOIN {$_TABLES['nf_templateassignment']} b ON a.nf_templateDataID = b.nf_templateDataID "; $sql .= "LEFT JOIN {$_TABLES['nf_productionassignments']} c ON c.task_id = a.id "; $sql .= "LEFT JOIN {$_TABLES['nf_templatedata']} d on a.nf_templateDataID = d.id "; $sql .= "WHERE a.nf_processID = '{$process_id}' AND (a.archived IS NULL OR a.archived = 0)"; $sql .= "ORDER BY a.id"; $q2 = DB_query($sql); while ($B = DB_fetchArray($q2, false)) { if ($B['nf_processVariable'] == '') { continue; } $template->set_var('taskassign_mode', 'variable'); $template->set_var('otaskid', $B['id']); if (SEC_hasRights('nexflow.edit')) { $template->set_var('otask_span', 1); $template->set_var('show_otaskaction', ''); } else { $template->set_var('otask_span', 2); $template->set_var('show_otaskaction', 'none'); } $template->set_var('otask_user', COM_getDisplayName($B['uid'])); $template->set_var('otask_name', $B['taskname']); $template->set_var('otask_date', $B['createdDate']); $template->set_var('otask_id', $B['id']); $template->set_var('variable_id', $B['nf_processVariable']); if ($cid == 1) { $template->parse('outstandingtask_records', 'outstandingtasks'); } else { $template->parse('outstandingtask_records', 'outstandingtasks', true); } $cid++; } // while } } } }
function recursive_node(&$node, $id) { global $_CONF, $_TABLES, $CONF_NEXMENU, $showdisabled, $idCurrent, $menulocation; $query = DB_QUERY("SELECT id,pid,label,url,menuorder, menutype,is_enabled FROM {$_TABLES['nexmenu']} WHERE PID='{$id}' ORDER BY menuorder"); $menuOrd = 10; $stepNumber = 10; while (list($id, $pid, $label, $url, $order, $menutype, $enabled) = DB_fetchARRAY($query)) { if ($idCurrent == $id) { $label = '<span class="treeMenuSelected">' . $label . '</span>'; } elseif ($enabled == '0') { $label = '<span class="treeMenuDisabled">' . $label . '</span>'; } /* Re-order any menuitems that may have just been moved */ if ($order != $menuOrd) { DB_query("UPDATE {$_TABLES['nexmenu']} SET menuorder = '{$menuOrd}' WHERE id = '{$id}'"); } $menuOrd += $stepNumber; // Check and see if this category has any sub categories - where a category record has this cid as it's parent if (DB_COUNT($_TABLES['nexmenu'], 'pid', $id) > 0) { if ($enabled == '1' or $enabled == 0 and $showdisabled == '1') { $subnode[$id] = new HTML_TreeNode(array('text' => $label, 'link' => $_CONF['site_admin_url'] . "/plugins/nexmenu/index.php?op=display&id={$id}&showdisabled={$showdisabled}&menulocation={$menulocation}", 'icon' => $folder_icon)); recursive_node($subnode[$id], $id); $node->addItem($subnode[$id]); } } else { if ($enabled == '1' or $enabled == 0 and $showdisabled == '1') { $icon = $CONF_NEXMENU['icons'][$menutype]; $node->addItem(new HTML_TreeNode(array('text' => $label, 'link' => $_CONF['site_admin_url'] . "/plugins/nexmenu/index.php?op=display&id={$id}&showdisabled={$showdisabled}&menulocation={$menulocation}", 'icon' => $icon))); } } } }
/** * Returns a formatted listbox of categories user has access * First checks for View access so that delegated admin can be just for sub-categories * * @param string|array $perms Single perm 'admin' or array of permissions as required by fm_getPermission() * @param int $selected Will make this item the selected item in the listbox * @param string $cid Parent category to start at and then recursively check * @param string $level Used by this function as it calls itself to control the ident formatting * @param string $selectlist Used by this function to be able to append to the formatted select list * @param string $restricted Used if you do not want to show this categories subfolders * @return string Return a formatted HTML Select listbox of categories */ function nexdoc_recursiveAccessOptions($perms, $selected = '', $cid = '0', $level = '1', $selectlist = '', $restricted = '') { global $_TABLES, $LANG_FM02; if (empty($selectlist) and $level == 1) { if (SEC_hasRights('nexfile.admin')) { $selectlist = '<option value="0">' . $LANG_FM02['TOP_CAT'] . '</option>' . LB; } } $query = DB_QUERY("SELECT cid,pid,name FROM {$_TABLES['nxfile_categories']} WHERE PID='{$cid}' ORDER BY CID"); while (list($cid, $pid, $name, $description) = DB_fetchARRAY($query)) { $indent = ' '; // Check if user has access to this category if ($cid != $restricted and fm_getPermission($cid, 'view')) { // Check and see if this category has any sub categories - where a category record has this cid as it's parent if (DB_COUNT($_TABLES['nxfile_categories'], 'pid', $cid) > 0) { if ($level > 1) { for ($i = 2; $i <= $level; $i++) { $indent .= "--"; } $indent .= ' '; } if (fm_getPermission($cid, $perms)) { if ($indent != '') { $name = " {$name}"; } $selectlist .= '<option value="' . $cid; if ($cid == $selected) { $selectlist .= '" selected="selected">' . $indent . $name . '</option>' . LB; } else { $selectlist .= '">' . $indent . $name . '</option>' . LB; } $selectlist = nexdoc_recursiveAccessOptions($perms, $selected, $cid, $level + 1, $selectlist, $restricted); } elseif ($perms == 'admin') { // Need to check for any folders with admin even subfolders of parents that user does not have access $selectlist = nexdoc_recursiveAccessOptions($perms, $selected, $cid, $level + 1, $selectlist, $restricted); } } else { if ($level > 1) { for ($i = 2; $i <= $level; $i++) { $indent .= "--"; } $indent .= ' '; } if (fm_getPermission($cid, $perms)) { if ($indent != '') { $name = " {$name}"; } $selectlist .= '<option value="' . $cid; if ($cid == $selected) { $selectlist .= '" selected="selected">' . $indent . $name . '</option>' . LB; } else { $selectlist .= '">' . $indent . $name . '</option>' . LB; } } } } } return $selectlist; }
function display_mytasks() { global $CONF_NF, $_USER, $_CONF, $_POST, $_TABLES, $actionurl, $formstatus_options, $usermodeUID, $optLinkVars, $errmsg, $LANG_NF00; $nfclass = new nexflow(); $nfclass->_nfUserId = $usermodeUID; $nfclass->set_debug(false); $nfclass->getQueue(); $srchFilter = COM_applyFilter($_REQUEST['srchFilter']); $srchText = COM_applyFilter($_REQUEST['srchText']); $idForAppGroup = COM_applyFilter($_REQUEST['idAppGroup'], true); $searchString = COM_applyFilter($_REQUEST['srchText']); $srchStatus = COM_applyFilter($_REQUEST['srchStatus']); $doSearch = COM_applyFilter($_POST['dosearch']); $taskconsolefilter = COM_applyFilter($_POST['taskconsolefilter'], true); $taskSort = COM_applyFilter($_REQUEST['tasksort']); $sortDirection = COM_applyFilter($_REQUEST['sortorder']); if (empty($taskSort)) { $taskSort = 'cdate'; } if (empty($sortDirection)) { $sortDirection = 'desc'; } //RK included these items here for future filtering abilities $pagesize = COM_applyFilter($_REQUEST['$pagesize'], true); $filterdate = COM_applyFilter($_REQUEST['filterdate']); $page = COM_applyFilter($_REQUEST['$page'], true); $imgset = $_CONF['layout_url'] . '/nexflow/images'; $headingFilterOptions = '&taskuser='******'desc') { $headingFilterOptions .= '&sortorder=asc'; } else { $headingFilterOptions .= '&sortorder=desc'; } if (!empty($srchFilter)) { $headingFilterOptions .= "&srchFilter={$srchFilter}"; } if (!empty($srchText)) { $headingFilterOptions .= "&srchText={$srchText}"; } if (!empty($idForAppGroup)) { $headingFilterOptions .= "&idAppGroup={$idForAppGroup}"; } if (!empty($srchStatus)) { $headingFilterOptions .= "&srchStatus={$srchStatus}"; } $p = new Template($_CONF['path_layout'] . 'nexflow'); $p->set_file(array('report' => 'taskconsole/viewtasks.thtml', 'records' => 'taskconsole/viewtask_record.thtml', 'javascript' => 'taskconsole/javascript/taskconsole.thtml')); $p->set_var('layout_url', $_CONF['layout_url']); $p->set_var('site_url', $_CONF['site_url']); $p->set_var('imgset', $imgset); $p->set_var('actionurl', $actionurl); $p->set_var('taskuser', $usermodeUID); $p->set_var('show_awaystatus', 'none'); $heading1 = "<a href=\"{$actionurl}?tasksort=template{$headingFilterOptions}\">Flow Name</a>"; if ($taskSort == 'template') { if ($sortDirection == 'asc') { $heading1 .= '<span style="padding-left:10px;"><img src="' . $imgset . '/bararrowdown.gif" border="0"></span>'; } else { $heading1 .= '<span style="padding-left:10px;"><img src="' . $imgset . '/bararrowup.gif" border="0"></span>'; } } $p->set_var('heading1', $heading1); $heading2 = "<a href=\"{$actionurl}?tasksort=taskname{$headingFilterOptions}\">Task Name</a>"; if ($taskSort == 'taskname') { if ($sortDirection == 'asc') { $heading2 .= '<span style="padding-left:10px;"><img src="' . $imgset . '/bararrowdown.gif" border="0"></span>'; } else { $heading2 .= '<span style="padding-left:10px;"><img src="' . $imgset . '/bararrowup.gif" border="0"></span>'; } } $heading2 .= '<span style="padding-left:5px;font-weight:normal;font-size:9px;">[click on task name to perform]</span>'; $p->set_var('heading2', $heading2); $heading3 = "<a href=\"{$actionurl}?tasksort=cdate{$headingFilterOptions}\">Assigned</a>"; if ($taskSort == 'cdate') { if ($sortDirection == 'asc') { $heading3 .= '<span style="padding-left:10px;"><img src="' . $imgset . '/bararrowdown.gif" border="0"></span>'; } else { $heading3 .= '<span style="padding-left:10px;"><img src="' . $imgset . '/bararrowup.gif" border="0"></span>'; } } $p->set_var('heading3', $heading3); $p->set_var('srchText', $LANG_NF00['srchText']); $p->set_var('srchFilter', $LANG_NF00['srchFilter']); $p->set_var('srchFilterTitle', $LANG_NF00['srchFilterTitle']); $p->set_var('srchFilterReqDesc', $LANG_NF00['srchFilterReqDesc']); $p->set_var('srchFilterPrjName', $LANG_NF00['srchFilterPrjName']); $p->set_var('srchDoSearch', $LANG_NF00['srchDoSearch']); //search/filter area setup $appGroupDDL = COM_optionList($_TABLES['nf_appgroups'], 'id,AppGroup'); $p->set_var('show_selectappfield', 'none'); $p->set_var('show_searchtextfield', ''); switch (strtolower($srchFilter)) { case 'appgroup': $appGroupDDL = COM_optionList($_TABLES['nf_appgroups'], 'id,AppGroup', $idForAppGroup); $p->set_var('srchselappgroup', 'selected'); $p->set_var('show_selectappfield', ''); $p->set_var('show_searchtextfield', 'none'); case 'title': $p->set_var('srchseltitle', 'selected'); break; case 'desc': $p->set_var('srchselreqdesc', 'selected'); break; } $p->set_var('srchTextValue', $srchText); $p->set_var('srchApplicationGroups', $appGroupDDL); switch ($srchStatus) { case 1: $srchStatus = 0; //since the COM_applyfilter makes everything zero, we need to change this from 1 to 0 in code. $p->set_var('srchselactive', 'selected'); break; case 2: $p->set_var('srchselonhold', 'selected'); break; case 3: $p->set_var('srchselstarted', 'selected'); break; case 4: $p->set_var('srchselunstarted', 'selected'); break; case -1: $p->set_var('srchselany', 'selected'); break; } $sel_sort_options = ''; foreach ($CONF_NF['sortOptions'] as $value => $label) { if ($taskSort == $value) { $sel_sort_options .= '<option value="' . $value . '" SELECTED=SELECTED>' . $label . '</option>'; $p->set_var('selected_tasksort_option', $value); } else { $sel_sort_options .= '<option value="' . $value . '">' . $label . '</option>'; } } $p->set_var('sel_sort_options', $sel_sort_options); //end of search/filter area if (trim($errmsg) != '') { $p->set_var('error_message', $errmsg); } else { $p->set_var('show_message', 'none'); } // Test to see if we enable the ability to select taskconsole view for another user if (SEC_hasRights('nexflow.admin')) { $p->set_var('show_seltaskuser', ''); $p->set_var('sel_user_options', COM_optionList($_TABLES['users'], 'uid,username', $usermodeUID)); } else { $p->set_var('show_seltaskuser', 'none'); $p->set_var('sel_user_options', ''); } if ($_REQUEST['autoclose']) { $autoclose = '<script type="text/javascript">' . LB; $autoclose .= 'window.onload = function() { ' . LB; $autoclose .= ' self.close();' . LB; $autoclose .= ' return true;' . LB; $autoclose .= '}' . LB; $autoclose .= '</script>' . LB; $p->set_var('javascript_close_onload', $autoclose); } $LANG_CONFIRM = 'Please confirm that you want to delete this process and task records'; /* Clicking on Task Name triggers action and need to use icon in Actions Column to display project Details */ $newFormLink = $actionurl . '?op=edit&formid=%s&projectid=%s&taskid=%s' . $optLinkVars; $editFormLink = $actionurl . '?op=edit&formid=%s&result=%s&taskid=%s' . $optLinkVars; $onClick_action = 'OnClick="ajaxStartTask(%s);"'; /* @TODO: Commented out for now (Blaine) //$holdTaskLink = '<a href="#" onclick="ajaxPutOnHold(%s,%s);"><img src="' . $_CONF['layout_url'] . '/nexflow/images/onhold.png" border=0 alt="%s"></a>'; */ // Check if this user has any tasks that were reassigned $reassignedTaskCount = DB_count($_TABLES['nf_productionassignments'], 'assignBack_uid', $usermodeUID); if ($reassignedTaskCount > 0) { $reassignment_message .= '<div style="font-weight:normal;padding-left:20px;">'; if ($reassignedTaskCount == 1) { $reassignment_message .= "You have 1 task that has been re-assigned. Click "; } else { $reassignment_message .= "You have {$reassignedTaskCount} tasks that have been re-assigned. Click "; } $reassignment_message .= '<a href="' . $actionurl . '?op=reassignments' . $optLinkVars . '">here</a> to view them</div>'; $p->set_var('reassignment_message', $reassignment_message); } else { $p->set_var('show_reassignmentmessage', 'none'); } /* This delete feature is disabled for production use via a config option. It will delete all related records for the project this task is linked to */ $deleteLink = '<a href="' . $actionurl . '?op=delete&taskid=%s&project_id=%s' . $optLinkVars . '" onclick="return confirm(\'' . $LANG_CONFIRM . '\');">'; $deleteLink .= '<img src="' . $_CONF['layout_url'] . '/nexflow/images/delete.gif" border="0" TITLE="Delete Record"></a>'; $tasks = $nfclass->get_tasks(); if ($taskconsolefilter) { $p->set_var('lang_hidefilter', 'hide filter'); $sortedtasks = nf_getSortedTaskArray($tasks, $srchFilter, $taskSort, $srchText, $idForAppGroup, $srchStatus, $sortDirection); } elseif (!empty($taskSort)) { $p->set_var('hidefilter', 'none'); $p->set_var('lang_hidefilter', 'show filter'); $sortedtasks = nf_getSortedTaskArray($tasks, $srchFilter, $taskSort, $srchText, $idForAppGroup, $srchStatus, $sortDirection); } else { $p->set_var('hidefilter', 'none'); $p->set_var('lang_hidefilter', 'show filter'); if (is_array($tasks) and count($tasks) > 0) { arsort($tasks); // Show latest task first $sortedtasks = $tasks; } else { $sortedtasks = ''; } } if (is_array($sortedtasks) and count($sortedtasks) > 0) { $i = 1; $p->set_var('num_records', count($sortedtasks)); foreach ($sortedtasks as $taskrec) { $p->set_var('task_action_url', ''); $p->set_var('task_onclick', ''); $p->set_var('edit', '<span style="padding-left:2px;"> </span>'); $p->set_var('rowid', $i); $p->set_var('csscode', $i % 2 + 1); $p->set_var('class_newtask', ''); $startedDate = DB_getItem($_TABLES['nf_queue'], 'startedDate', "id='{$taskrec['id']}'"); $taskStatus = DB_getItem($_TABLES['nf_queue'], 'status', "id='{$taskrec['id']}'"); $p->set_var('on_hold_notice', ''); if ($taskStatus == 2) { $p->set_var('task_icon', 'onhold2.png'); $p->set_var('on_hold_notice', '<p style="margin-bottom:5px;color:red">This Task is ON HOLD. It cannot be executed until it is put back into active status.</p>'); } else { $p->set_var('task_icon', 'task.gif'); } if ($startedDate == NULL or $startedDate == 0) { $p->set_var('task_icon', 'new_task.gif'); $p->set_var('task_started_date', ",task not started"); $p->set_var('task_onclick', sprintf($onClick_action, $taskrec['id'])); } else { $p->set_var('task_started_date', ",started:{$startedDate}"); $p->set_var('task_onclick', ''); } $nfclass->_nfProcessId = $taskrec['processid']; $project_id = $nfclass->get_ProcessVariable('PID'); $project_id = NXCOM_filterInt($project_id); if ($project_id == 0) { //lets try to do a simple select in the nfprojects table to ensure no project exists. $sql = "SELECT id from {$_TABLES['nf_projects']} where wf_process_id='{$taskrec['processid']}'"; $res = DB_query($sql); list($project_id) = DB_fetchArray($res); $project_id = NXCOM_filterInt($project_id); } //at this point, if the project_id is still 0, then we have no project data to show //show a general task console line item for execution by the end user. $taskStatus = DB_getItem($_TABLES['nf_queue'], 'status', "id='{$taskrec['id']}'"); if (SEC_hasRights('nexflow.admin')) { if ($taskStatus == 2) { $p->set_var('hold', sprintf($holdTaskLink, $i, $taskrec['id'], 'Re-activate')); } else { $p->set_var('hold', sprintf($holdTaskLink, $i, $taskrec['id'], 'Toggle On-Hold')); } } if ($project_id > 0) { $p->set_var('hidetaskinfo', ''); $project_detailsLink = '<a href="#" onClick=\'ajaxViewProjectDetails(%s,%s,%s,%s);\'>'; $project_detailsLink .= '<img src="' . $_CONF['layout_url'] . '/nexflow/images/details.png" border="0" TITLE="View Project Details"></a> '; $project_detailsLink .= '<a href="#" onClick=\'ajaxViewProjectComments(%s,%s,%s,%s);\'>'; $project_detailsLink .= '<img src="' . $_CONF['layout_url'] . '/nexflow/images/comment.gif" border="0" TITLE="View Project Comments"></a> '; // If task is for a project on hold or in a Recycled or Killed status then do not show it // There should never be any tasks appearing is status is Killed as that workflow should have been forced to complete state. $project_state = DB_getItem($_TABLES['nf_projects'], 'status', "id='{$project_id}'"); if ($project_state != 6 && $project_state != 7) { if ($nfclass->_debug) { $logmsg = "Row:{$i} -> Project ID:{$project_id},Task ID:{$taskrec['id']}. "; $logmsg .= "Processid:{$taskrec['processid']}, Task:{$taskrec['taskname']}, "; $logmsg .= "TaskID: {$taskrec['templateTaskid']}, TaskType: {$taskrec['stepType']}"; COM_errorLog($logmsg); } $p->set_var('task_id', $taskrec['id']); $p->set_var('project_id', $project_id); $p->set_var('project_details', sprintf($project_detailsLink, $i, $project_id, $usermodeUID, $taskrec['id'], $i, $project_id, $usermodeUID, $taskrec['id'])); // Determine if this task is for a regenerated workflow and we need to update the main project/request record $parentProcessID = DB_getItem($_TABLES['nf_process'], 'pid', "id='{$taskrec['processid']}'"); if ($parentProcessID > 0) { // Now check if this same template task id was executed in the previous process - if so then it is a recycled task // Don't show the re-generated attribute if in this instance of the process we proceed further and are executing new tasks if (DB_count($_TABLES['nf_queue'], array('nf_processID', 'nf_templateDataId'), array($parentProcessID, $taskrec['templateTaskid'])) > 0) { $taskrec['taskname'] = '<div style="color:red;padding-right:5px;display:inline;">[R]</div>' . $taskrec['taskname']; } } $pquery = DB_query("SELECT wf_process_id FROM {$_TABLES['nf_projects']} WHERE id='{$project_id}'"); list($wf_process_id) = DB_fetchArray($pquery); if ($wf_process_id > 0 and $wf_process_id == $parentProcessID) { if ($nfclass->_debug) { COM_errorLog("Taskconsole: Updated wf_process_id for project: {$project_id} from {$wf_process_id} to {$taskrec['processid']}"); } DB_query("UPDATE {$_TABLES['nf_projects']} SET wf_process_id='{$taskrec['processid']}' WHERE id='{$project_id}'"); } $p->set_var('project_number', $project_id); // Retrieve any Project Comments $comment_count = DB_count($_TABLES['nf_projectcomments'], 'project_id', $project_id); if ($comment_count > 0) { $csql = "SELECT timestamp, b.username FROM {$_TABLES['nf_projectcomments']} a "; $csql .= "LEFT JOIN {$_TABLES['users']} b on a.uid=b.uid WHERE project_id='{$project_id}' "; $csql .= "ORDER BY timestamp DESC LIMIT 1"; list($timestamp, $username) = DB_fetchArray(DB_query($csql)); $p->set_var('comments_note', "({$comment_count}) <b>Last by:</b> {$username}, " . strftime('%m/%d/%Y %H:%M', $timestamp)); } else { $p->set_var('comments_note', 'No Comments'); } // If this this is an interactive tasktype - Check and see if taskhistory record has a "started" timestamp set. if ($taskrec['stepType'] == 1 or $taskrec['stepType'] == 7 or $taskrec['stepType'] == 8) { $q1 = DB_query("SELECT project_id,date_started FROM {$_TABLES['nf_projecttaskhistory']} WHERE task_id='{$taskrec['id']}'"); if (DB_numRows($q1) == 0) { // No task history record yet $p->set_var('class_newtask', 'class="nexflowNewTask"'); $q2 = DB_query("SELECT UNIX_TIMESTAMP(createdDate) FROM {$_TABLES['nf_queue']} WHERE id='{$taskrec['id']}' "); list($date_assigned) = DB_fetchArray($q2); DB_query("INSERT INTO {$_TABLES['nf_projecttaskhistory']} (project_id,process_id,task_id,assigned_uid,date_assigned)\r\n VALUES ('{$project_id}','{$taskrec['processid']}','{$taskrec['id']}','{$usermodeUID}','{$date_assigned}') "); } else { list($xprj_id, $xdate_started) = DB_fetchArray($q1); if ($xprj_id == 0) { // Task history record - but missing project_id $p->set_var('class_newtask', 'class="nexflowNewTask"'); DB_query("UPDATE {$_TABLES['nf_projecttaskhistory']} SET project_id='{$project_id}' WHERE task_id='{$taskrec['id']}'"); } } } else { unset($xdate_started); } // Retrieve the project description for this task - used as Project Title $pquery = DB_query("SELECT description,originator_uid FROM {$_TABLES['nf_projects']} WHERE id='{$project_id}'"); list($description, $originator) = DB_fetchArray($pquery); $submitted_date = DB_getItem($_TABLES['nf_process'], 'initiatedDate', "id={$taskrec['processid']}"); $submitter_info = COM_getDisplayName($originator) . " / {$submitted_date}"; // Retrieve the flow name dynamic custom functions for appending to the display name to be used for the description $descSQL = "SELECT b.templateName, a.customFlowName FROM {$_TABLES['nf_process']} a "; $descSQL .= "INNER JOIN {$_TABLES['nf_template']} b on b.id=a.nf_templateId "; $descSQL .= "WHERE a.id={$taskrec['processid']} "; $descRes = DB_query($descSQL); list($templateName, $processCustomName) = DB_fetchArray($descRes); if (trim($description) != '') { $p->set_var('description', $description); } else { $p->set_var('description', $templateName); } if ($processCustomName != '') { $p->set_var('project_title', $processCustomName); } else { $p->set_var('project_title', $templateName); } $p->set_var('assigned_date', $taskrec['cdate']); $p->set_var('submitter_info', $submitter_info); if ($taskrec['stepType'] == 8) { // This is a nexform autotag handler $form_id = $taskrec['url']; // Check and see if the same form has been submitted for this task yet. $sql = "SELECT a.id,a.formtype,a.results_id,a.status,a.created_by_taskid, b.nf_templateDataID "; $sql .= "FROM {$_TABLES['nf_projectforms']} a "; $sql .= "LEFT JOIN {$_TABLES['nf_queue']} b on b.id=a.created_by_taskid "; $sql .= "WHERE project_id='{$project_id}' AND form_id='{$form_id}' "; $query = DB_query($sql); $newFormRecord = false; if (DB_numRows($query) >= 1) { $newFormRecord = true; while (list($prj_formid, $formtype, $result_id, $state, $created_by_taskid, $form_taskTemplateDataID) = DB_fetchArray($query)) { // Check if this is the same task editing, Rejected form so Task is a new queue ID but same templateDataID or Final Edit Task if ($taskrec['id'] == $created_by_taskid || $form_taskTemplateDataID == $taskrec['templateTaskid'] || in_array($taskrec['templateTaskid'], $CONF_NF['final_edit_tasks'])) { // Check and see if the created_by_taskid has been updated - since it will have the original task id if ($processPID != 0 and $created_by_taskid != $taskrec['id']) { DB_query("UPDATE {$_TABLES['nf_projectforms']} SET created_by_taskid='{$taskrec['id']}' WHERE id='{$prj_formid}'"); } $p->set_var('state', $formstatus_options[$state]); if ($state == 0 or $state == 2 or $state == 3 or $state == 6) { // Not final distributed version or rejected // Need to reset the process variable used to check the form approval result $nfclass->_nfProcessId = $taskrec['processid']; $nfclass->set_ProcessVariable('Review_Approval', 0); /* Using Click on Task to trigger action method */ if ($taskStatus != 2) { $p->set_var('task_action_url', sprintf($editFormLink, $form_id, $result_id, $taskrec['id'])); } else { $p->set_var('task_action_url', "#"); } } $sql = "SELECT timestamp FROM {$_TABLES['nf_projecttimestamps']} "; $sql .= "WHERE project_id={$project_id} ORDER BY timestamp DESC LIMIT 1"; $q = DB_query($sql); list($timestamp) = DB_fetchArray($q); if ($timestamp > 0) { $p->set_var('date', strftime("%Y-%m-%d", $timestamp)); } else { $q2 = DB_query("SELECT UNIX_TIMESTAMP(createdDate) FROM {$_TABLES['nf_queue']} WHERE id='{$taskrec['id']}' "); list($date_assigned) = DB_fetchArray($q2); $p->set_var('date', strftime("%Y-%m-%d", $date_assigned)); } $newFormRecord = false; } } } if (DB_numRows($query) == 0 or $newFormRecord) { // No record yet for this form and process - create mode $p->set_var('state', 'New Task'); $p->set_var('class_newtask', 'class="nexflowNewTask"'); /* Using Click on Task to trigger action method */ if ($taskStatus != 2) { $p->set_var('task_action_url', sprintf($newFormLink, $form_id, $project_id, $taskrec['id'])); } else { $p->set_var('task_action_url', "#"); } $q2 = DB_query("SELECT UNIX_TIMESTAMP(createdDate) FROM {$_TABLES['nf_queue']} WHERE id='{$taskrec['id']}' "); list($date_assigned) = DB_fetchArray($q2); $p->set_var('date', strftime("%Y-%m-%d", $date_assigned)); } $q = DB_QUERY("SELECT statusmsg FROM {$_TABLES['nf_projecttimestamps']} WHERE project_id = '{$project_id}' ORDER BY timestamp DESC LIMIT 1"); list($statusmsg) = DB_fetchArray($q); $p->set_var('full_statusmsg', $statusmsg); $msglen = strpos($statusmsg, '.'); if ($msglen > 0 and $pos !== FALSE) { $statusmsg = substr($statusmsg, 0, $msglen); } $p->set_var('statusmsg', $statusmsg); $p->set_var('id', $project_id); $p->set_var('task_name', $taskrec['taskname']); $p->set_var('view', ''); $p->set_var('action_record', ''); } else { // Nexflow task - not a form, Check for interactive function or manualweb step type $p->set_var('id', $taskrec['id']); $p->set_var('process_id', $taskrec['processid']); /* Task date is in format yyyy-mm-dd hh:mm:ss -- only want to show date portion */ $showdate = explode(' ', $taskrec['cdate']); $p->set_var('date', $showdate[0]); $sql = "SELECT timestamp,statusmsg FROM {$_TABLES['nf_projecttimestamps']} "; $sql .= "WHERE project_id = '{$project_id}' ORDER BY timestamp DESC LIMIT 1"; $q = DB_query($sql); list($timestamp, $statusmsg) = DB_fetchArray($q); $p->set_var('full_statusmsg', $statusmsg); $msglen = strpos($statusmsg, '.'); if ($msglen > 0 and $pos !== FALSE) { $statusmsg = substr($statusmsg, 0, $msglen); } $p->set_var('statusmsg', $statusmsg); /* @TODO: $xdate_started has not be set */ if (isset($xdate_started) and $xdate_started == 0) { // Task exists in the taskhistory table but no start_date yet $p->set_var('state', 'New Task'); } else { $p->set_var('state', 'Started'); } $p->set_var('task_name', $taskrec['taskname']); if (strrpos($taskrec['url'], '?') > 0) { $url = "{$_CONF['site_url']}/nexflow/{$taskrec['url']}&processid={$taskrec['processid']}&taskid={$taskrec['id']}"; } else { $url = "{$_CONF['site_url']}/nexflow/{$taskrec['url']}?processid={$taskrec['processid']}&taskid={$taskrec['id']}"; } $url .= $optLinkVars; /* Using Click on Task to trigger action method */ if ($taskStatus != 2) { $p->set_var('task_action_url', '#'); $p->set_var('task_onclick', "onClick=\"togglerec('action',{$i});ajaxStartTask({$taskrec['id']});\" "); } else { $p->set_var('task_action_url', '#'); $p->set_var('task_onclick', ""); } $p->set_var('chk_accept', ''); $p->set_var('chk_reject', ''); $p->set_var('project_id', $project_id); $p->set_var('project_id', $project_id); $p->set_var('form_id', $form_id); $p->set_var('taskuser', $usermodeUID); /* Check for any specific tasks that will then over-ride the action url link */ if ($taskrec['stepType'] == 7) { // Interactive Function $function = $taskrec['url']; if (function_exists($function)) { /* Call the interactive function passing * taskrec, template, rowid and current user if using the user-switch feature */ $function($taskrec, $p, $i, $usermodeUID); } } elseif ($taskrec['stepType'] == 8) { //nexform /* @TODO: What should we be doing in this case? */ } else { /* Using Click on Task to trigger action method */ if ($taskStatus != 2) { $p->set_var('task_action_url', $url); $p->set_var('task_onclick', sprintf($onClick_action, $taskrec['id'])); } else { $p->set_var('task_action_url', "#"); $p->set_var('task_onclick', ""); } $p->set_var('action_record', ''); } } if (!is_numeric($project_id)) { // Disable the icon to show the task/project detail $p->set_var('project_details', '<span style="padding-right:14px;"> </span>'); $p->set_var('project_detail', ''); } } } else { //there is no project ID to be found. //we'll display the non-project formatted item instead $project_detailsLink = '<a href="#" onClick=\'ajaxViewProjectDetails(%s,%s,%s,%s);\'>'; $project_detailsLink .= '<img src="' . $_CONF['layout_url'] . '/nexflow/images/details.png" border="0" TITLE="View Details"></a> '; $project_detailsLink .= '<a href="#" onClick=\'ajaxViewProjectComments(%s,%s,%s,%s);\'>'; $project_detailsLink .= '<img src="' . $_CONF['layout_url'] . '/nexflow/images/comment.gif" border="0" TITLE="View Project Comments"></a> '; $p->set_var('hidetaskinfo', 'none'); $p->set_var('task_id', $taskrec['id']); $p->set_var('project_id', $project_id); $p->set_var('project_details', sprintf($project_detailsLink, $i, $project_id, $usermodeUID, $taskrec['id'], $i, $project_id, $usermodeUID, $taskrec['id'])); $p->set_var('id', $taskrec['id']); $p->set_var('process_id', $taskrec['processid']); //get the template name here: $sql = "SELECT c.templateName, d.customFlowName FROM {$_TABLES['nf_queue']} a "; $sql .= "inner join {$_TABLES['nf_templatedata']} b on a.nf_templatedataid=b.id "; $sql .= "inner join {$_TABLES['nf_template']} c on b.nf_templateid=c.id "; $sql .= "inner join {$_TABLES['nf_process']} d on a.nf_processid=d.id "; $sql .= "WHERE a.id={$taskrec['id']}"; $res2 = DB_query($sql); list($tname, $customDisplay) = DB_fetchArray($res2); if ($customDisplay != '') { $tname .= $customDisplay; } $p->set_var('project_title', $tname); /* Task date is in format yyyy-mm-dd hh:mm:ss -- only want to show date portion */ $showdate = explode(' ', $taskrec['cdate']); $p->set_var('date', $showdate[0]); $q = DB_QUERY("SELECT timestamp,statusmsg FROM {$_TABLES['nf_projecttimestamps']} WHERE project_id={$project_id} ORDER BY timestamp DESC LIMIT 1"); list($timestamp, $statusmsg) = DB_fetchArray($q); $p->set_var('full_statusmsg', $statusmsg); $msglen = strpos($statusmsg, '.'); if ($msglen > 0 and $pos !== FALSE) { $statusmsg = substr($statusmsg, 0, $msglen); } $p->set_var('statusmsg', $statusmsg); if (isset($xdate_started) and $xdate_started == 0) { // Task exists in the taskhistory table but no start_date yet $p->set_var('state', 'New Task'); } else { $p->set_var('state', 'Started'); } $p->set_var('task_name', $taskrec['taskname']); if (strrpos($taskrec['url'], '?') > 0) { $url = "{$_CONF['site_url']}/nexflow/{$taskrec['url']}&processid={$taskrec['processid']}&taskid={$taskrec['id']}"; } else { $url = "{$_CONF['site_url']}/nexflow/{$taskrec['url']}?processid={$taskrec['processid']}&taskid={$taskrec['id']}"; } $url .= $optLinkVars; /* Using Click on Task to trigger action method */ $p->set_var('task_action_url', '#'); if ($taskStatus != 2) { $p->set_var('task_onclick', "onClick=\"togglerec('action',{$i});ajaxStartTask({$taskrec['id']});\" "); } else { $p->set_var('task_onclick', ""); } $p->set_var('task_name', $taskrec['taskname']); $p->set_var('chk_accept', ''); $p->set_var('chk_reject', ''); $p->set_var('project_id', $project_id); $p->set_var('form_id', $form_id); $p->set_var('taskuser', $usermodeUID); /* Check for any specific tasks that will then over-ride the action url link */ if ($taskrec['stepType'] == 7) { // Interactive Function $function = $taskrec['url']; if (function_exists($function)) { /* Call the interactive function passing * taskrec, template, rowid and current user if using the user-switch feature */ $function($taskrec, $p, $i, $usermodeUID); } } elseif ($taskrec['stepType'] == 8) { // nexform Task $form_id = $taskrec['url']; /* Using Click on Task to trigger action method */ if ($taskStatus != 2) { $p->set_var('task_action_url', sprintf($newFormLink, $form_id, $project_id, $taskrec['id'])); } else { $p->set_var('task_action_url', "#"); } } else { /* Using Click on Task to trigger action method */ if ($taskStatus != 2) { $p->set_var('task_action_url', $url); $p->set_var('task_onclick', sprintf($onClick_action, $taskrec['id'])); } else { $p->set_var('task_action_url', "#"); $p->set_var('task_onclick', ""); } $p->set_var('action_record', ''); } $p->set_var('project_details', '<span style="padding-right:14px;"> </span>'); $p->set_var('project_detail', ''); } //end if - test for valid project_id $p->parse('view_records', 'records', true); $i++; } //end foreach } else { $p->set_var('num_records', 0); $p->set_var('view_records', '<tr><td colspan=5 style="padding-left:20px;">No Tasks</td></tr>'); } $p->parse('javascript_code', 'javascript'); $p->parse('output', 'report'); return $p->finish($p->get_var('output')); }
<tr bgcolor="#B54E02"> <td width="10%" height="30" align="center"><span class="style11">編號</span></td> <td width="24%" align="center"><span class="style11">會員姓名</span></td> <td width="27%" align="center"><span class="style11">會員帳號</span></td> <td width="39%" align="center"><span class="style11">已下載書名</span></td> </tr> <?php $m_i = 0; $m_query = DB_QUERY("SELECT A.b_uid AS uid_1 ,B.b_name AS user_name ,B.b_account AS user_id \r\n\t\t\t\t\t\t\t\tFROM {$GLOBALS['DB_USER_BOOK']} A \r\n\t\t\t\t\t\t\t\t\tINNER JOIN {$GLOBALS['DB_USER']} B ON B.b_id = A.b_uid \r\n\t\t\t\t\t\t\t\t\t" . $m_where . "\r\n\t\t\t\t\t\t\t\t\tGROUP BY b_uid"); $m_num = mysql_num_rows($m_query); if ($m_num == 0) { echo "<tr><td colspan='4' align='center'><span class='style9'><b><br>此會員無資料</b></span></td></tr>"; } while ($m_row = mysql_fetch_array($m_query)) { $m_i++; $m_query2 = DB_QUERY("SELECT A.b_id AS id ,A.b_uid AS uid ,C.b_name AS book_name\r\n\tFROM {$GLOBALS['DB_USER']} B\r\n\tINNER JOIN {$GLOBALS['DB_USER_BOOK']} A ON A.b_uid = B.b_id\r\n\tINNER JOIN {$GLOBALS['DB_BOOK']} C ON A.b_bkid = C.b_id\r\n\tWHERE A.b_uid = " . $m_row['uid_1']); $m_j = 0; while ($m_row2 = mysql_fetch_array($m_query2)) { $m_j++; $m_bg = "#FFDBCA"; if ($m_j % 2 == 0) { $m_bg = "#FEEDC9"; } ?> <tr> <td align="center" height="38" bgcolor="#FFDBCA" class="style6" id="<?php echo "td0_" . $m_i . "_" . $m_j; ?> "><span class="style7"> </span></td> <td align="center" bgcolor="#FFDBCA" id="<?php echo "td1_" . $m_i . "_" . $m_j;
function nexcontent_recursiveView(&$node, $cid) { global $_CONF, $_TABLES, $catid; $sql = "SELECT id,pid,name FROM {$_TABLES['nexcontent_pages']} WHERE pid ='{$cid}' AND type='category'"; $sql .= COM_getPermSQL('AND'); $sql .= ' ORDER BY pageorder,id'; $query = DB_QUERY($sql); while (list($id, $pid, $name) = DB_fetchARRAY($query)) { //echo "<br>subfunction -> id:$id, pid:$pid, name:$name"; $pquery = DB_query("SELECT id FROM {$_TABLES['nexcontent_pages']} WHERE pid='{$id}' AND type='page'"); $numpages = DB_numRows($pquery); if ($numpages > 0) { $name = $name . ' (' . $numpages . ')'; } if ($catid == $id) { $name = '<span class="treeMenuSelected">' . $name . '</span>'; } // Check and see if this category has any sub categories - where a category record has this cid as it's parent if (DB_COUNT($_TABLES['nexcontent_pages'], 'pid', $id) > 0) { $subnode[$id] = new HTML_TreeNode(array('text' => $name, 'link' => $_CONF['site_admin_url'] . "/plugins/nexcontent/index.php?catid=" . $id, 'icon' => 'folder.gif')); nexcontent_recursiveView($subnode[$id], $id); $node->addItem($subnode[$id]); } else { $node->addItem(new HTML_TreeNode(array('text' => $name, 'link' => $_CONF['site_admin_url'] . "/plugins/nexcontent/index.php?catid=" . $id, 'icon' => 'folder.gif'))); } } }
function ProClick($serial, $title) { $date = date("Y-m-d"); $res = DB_QUERY("select serial from " . $GLOBALS["DB_STATS"] . " where serial='{$serial}' and date='" . $date . "'"); if (mysql_num_rows($res) > 0) { DB_QUERY("update " . $GLOBALS["DB_STATS"] . " set click=click+1 where serial='{$serial}' and date='{$date}' "); } else { DB_INSERT($GLOBALS["DB_STATS"], array("serial", "date", "title", "click", "company"), array($serial, $date, $title, 1, 'everywhere')); } }
<?php session_start(); include "_func/config.inc.php"; $m_case = $_GET['case']; //取得傳入值case $m_data = $_GET['data']; //取得使用者輸入資訊 mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER_SET_CLIENT=utf8"); mysql_query("SET CHARACTER_SET_RESULTS=utf8"); switch ($m_case) { case "insert": //取出最大的id值 $m_query = DB_QUERY("SELECT MAX(b_id) as max_id FROM {$GLOBALS['DB_BOOK']}"); $m_row = mysql_fetch_array($m_query); $m_maxid = $m_row['max_id'] + 1; //最大id+1 //m_data內容 : ID,姓名,存取代碼,型態 $m_data = explode(",", $m_data); $m_name = $m_data[0]; $m_intro = $m_data[1]; $m_author = $m_data[2]; $m_issue = $m_data[3]; $m_path = $m_data[4]; $m_image = $m_data[5]; $m_path_ext = substr($m_path, strrpos($m_path, ".")); $m_image_ext = substr($m_image, strrpos($m_image, ".")); $m_path = "book_" . $m_maxid . strtolower($m_path_ext); //重新給檔案路徑名稱 $m_image != "" ? $m_image = "img_" . $m_maxid . strtolower($m_image_ext) : ($m_image = "");
function displayPages($catid) { global $_CONF, $CONF_SE, $_TABLES, $statusmsg, $type, $LANG_SE02; $menu = new HTML_TreeMenu(); if ($catid != 0) { $parentCatid = DB_getItem($_TABLES['nexcontent_pages'], 'pid', "id='{$catid}'"); $node[0] = new HTML_TreeNode(array('text' => 'up one level', 'link' => $_CONF['site_admin_url'] . "/plugins/nexcontent/index.php?catid={$parentCatid}", 'icon' => 'folder.gif')); $menu->addItem($node[0]); $label = DB_getItem($_TABLES['nexcontent_pages'], 'name', "id='{$catid}'"); $psql = "SELECT id FROM {$_TABLES['nexcontent_pages']} WHERE pid='{$catid}' AND (type='page' OR type='link')"; $psql .= COM_getPermSQL('AND'); $psql .= ' ORDER BY pageorder, id asc'; $pquery = DB_query($psql); $numpages = DB_numRows($pquery); if ($numpages > 0) { $label = $label . ' (' . $numpages . ')'; } $label = '<span class="treeMenuSelected">' . $label . '</span>'; $node[$catid] = new HTML_TreeNode(array('text' => $label, 'link' => $_CONF['site_admin_url'] . "/plugins/nexcontent/index.php?catid=" . $catid, 'icon' => 'folder.gif')); nexcontent_recursiveView($node[$catid], $catid); $menu->addItem($node[$catid]); } else { $msql = "SELECT id,pid,name,pageorder from {$_TABLES['nexcontent_pages']} WHERE pid='0' and type='category'"; $msql .= COM_getPermSQL('AND'); $msql .= ' ORDER BY pageorder, id asc'; $mquery = DB_QUERY($msql); while (list($id, $category, $name, $order) = DB_fetchARRAY($mquery)) { //echo "<br>id:$id, cat: $category, name:$name, order:$order"; if ($catid != 0 and $catid == $id) { $name = '<span class="treeMenuSelected">' . $name . '</span>'; } $pquery = DB_query("SELECT id FROM {$_TABLES['nexcontent_pages']} WHERE pid='{$id}' AND (type='page' OR type='link')"); $numpages = DB_numRows($pquery); if ($numpages > 0) { $name = $name . ' (' . $numpages . ')'; } $node[$id] = new HTML_TreeNode(array('text' => $name, 'link' => $_CONF['site_admin_url'] . "/plugins/nexcontent/index.php?catid=" . $id, 'icon' => 'folder.gif')); nexcontent_recursiveView($node[$id], $id); $menu->addItem($node[$id]); } } $treeMenu =& new HTML_TreeMenu_DHTML($menu, array('images' => $_CONF['layout_url'] . '/nexpro/images/treemenu', 'defaultClass' => 'treeMenuDefault')); $q = DB_query("SELECT id,name from {$_TABLES['nexcontent_pages']} WHERE type='category' ORDER BY id"); $selCategories = '<option value="0">Top Level</option>' . LB; $selCategories .= nexcontent_getFolderList($catid); /* Retrieve all the pages for the selected category */ $sql = "SELECT id,sid,pageorder,name,hits,type,menutype,submenu_item,is_draft FROM {$_TABLES['nexcontent_pages']} WHERE pid='{$catid}' or id='{$catid}'"; $sql .= COM_getPermSQL('AND'); //$sql .= ' ORDER by type, pid,pageorder'; $sql .= ' ORDER by pid,pageorder'; $query = DB_query($sql); $mainview = new Template($_CONF['path_layout'] . 'nexcontent/admin'); $mainview->set_file(array('mainview' => 'pageview.thtml', 'msgline' => 'alertline.thtml', 'records' => 'pagerecords.thtml')); $mainview->set_var('navbar', nexcontent_showNavbar($LANG_SE02['1'])); $mainview->set_var('type', $type); $mainview->set_var('catid', $catid); $mainview->set_var('folderview', $treeMenu->toHTML()); $mainview->set_var('phpself', $_SERVER['PHP_SELF']); if ($statusmsg != '') { $mainview->set_var('alertmsg', $statusmsg); } else { $mainview->set_var('alertmsg', ''); $mainview->set_var('msgmode', 'none'); } $mainview->set_var('filteroptions', $selCategories); $mainview->parse('alertline', 'msgline', true); $mainview->set_var('HEADING1', 'ID'); $mainview->set_var('HEADING2', 'Name'); $mainview->set_var('HEADING3', 'Hits'); $mainview->set_var('HEADING4', 'Menu Type'); $mainview->set_var('HEADING5', 'Draft'); $mainview->set_var('HEADING6', 'Action'); $mainview->set_var('imgset', $CONF_SE['public_url'] . '/images'); $mainview->set_var('site_url', $_CONF['site_url']); $mainview->set_var('site_admin_url', $_CONF['site_admin_url']); $mainview->set_var('layout_url', $_CONF['layout_url']); $mainview->set_var('nexcontent_url', $CONF_SE['public_url']); $i = 1; $currentCategory = ''; $pageOrd = 10; $stepNumber = 10; while (list($id, $sid, $order, $name, $hits, $type, $menutype, $submenu, $is_draft) = DB_fetchArray($query)) { if ($type == 'page' and $currentCategory != $category) { $pageOrd = 10; $currentCategory = $category; } if ($id != $catid and $order != $pageOrd) { DB_query("UPDATE {$_TABLES['nexcontent_pages']} SET pageorder = '{$pageOrd}' WHERE id = '{$id}'"); $order = $pageOrd; } $pageOrd += $stepNumber; $check1 = $submenu >= 1 ? ' CHECKED' : ''; $check2 = $is_draft == 1 ? ' CHECKED' : ''; if ($type == 'category') { $mainview->set_var('pagelink', "{$_CONF['site_admin_url']}/plugins/nexcontent/index.php?catid={$id}"); $mainview->set_var('pageimage', '<img src="' . $_CONF['layout_url'] . '/nexcontent/images/admin/sitecategory.gif">'); $editop = 'editCategory'; } else { if ($type == 'link') { $mainview->set_var('pagelink', "{$_CONF['site_admin_url']}/plugins/nexcontent/index.php?op=editLink&pageid={$id}"); $mainview->set_var('pageimage', '<img src="' . $_CONF['layout_url'] . '/nexcontent/images/admin/sitelink.gif">'); $editop = 'editLink'; } else { $mainview->set_var('pagelink', "{$_CONF['site_admin_url']}/plugins/nexcontent/index.php?op=editPage&pageid={$id}"); $mainview->set_var('pageimage', '<img src="' . $_CONF['layout_url'] . '/nexcontent/images/admin/sitepage.gif">'); $editop = 'editPage'; } } $menuoptions = ''; foreach ($CONF_SE['menuoptions'] as $value => $label) { if ($name == 'frontpage') { if ($value == '0') { $menuoptions .= '<option value="' . $value . '">' . $label . '</option>'; } } elseif ($value == 0 or $type == 'page' and $value == 3 or $type == 'link' and $value == 3) { if ($value == $menutype) { $menuoptions .= '<option value="' . $value . '" SELECTED=SELECTED>' . $label . '</option>'; } else { $menuoptions .= '<option value="' . $value . '">' . $label . '</option>'; } } elseif ($type == 'category' and ($catid > 0 or $value != 3)) { if ($value == $menutype) { $menuoptions .= '<option value="' . $value . '" SELECTED=SELECTED>' . $label . '</option>'; } else { $menuoptions .= '<option value="' . $value . '">' . $label . '</option>'; } } } $mainview->set_var('menuoptions', $menuoptions); $sql = "SELECT id FROM {$_TABLES['nexcontent_pages']} WHERE id='{$id}' "; $sql .= COM_getPermSQL('AND', 0, 3); $pquery = DB_query($sql); if (DB_numRows($pquery) > 0) { $link = ' <a href="' . $_CONF['site_admin_url'] . '/plugins/nexcontent/index.php?op='; $editimg = '<img src="' . $_CONF['layout_url'] . '/nexcontent/images/admin/edit.gif" TITLE="Edit Page" border="0">'; $editlink = $link . $editop . '&pageid=' . $id . '">' . $editimg . '</a>'; $copyimg = '<img src="' . $_CONF['layout_url'] . '/nexcontent/images/admin/copy.gif" TITLE="Copy Page" border="0">'; $copylink = $link . 'copyPage&pageid=' . $id . '">' . $copyimg . '</a>'; $LANG_CONFIRM = 'Please confirm that you want to delete this page and any associated images'; $deleteimg = '<img src="' . $_CONF['layout_url'] . '/nexcontent/images/admin/delete.gif" TITLE="Delete Page" border="0">'; $deletelink = $link . 'delPage&pageid=' . $id . '" onclick="return confirm(\'' . $LANG_CONFIRM . '\');">' . $deleteimg . '</a>'; } else { $editlink = ''; $deletelink = ''; } $mainview->set_var('sid', $sid); $mainview->set_var('cssid', $i); $mainview->set_var('pageid', $id); $mainview->set_var('pagename', $name); $mainview->set_var('hits', $hits); $mainview->set_var('order', $order); $mainview->set_var('check1', $check1); $mainview->set_var('check2', $check2); $mainview->set_var('LANG_EDIT', 'Edit Page'); $mainview->set_var('editlink', $editlink); $mainview->set_var('copylink', $copylink); $mainview->set_var('LANG_DELETE', 'Delete Page'); $mainview->set_var('deletelink', $deletelink); $mainview->set_var('LANG_MOVEUP', 'Move Page Up'); $mainview->set_var('LANG_MOVEDN', 'Move Page Down'); $mainview->set_var('LANG_PREVIEW', 'Preview this page'); $mainview->parse('page_records', 'records', true); $i = $i == 2 ? 1 : 2; } $mainview->parse('output', 'mainview'); $retval .= $mainview->finish($mainview->get_var('output')); return $retval; }
$m_query = DB_QUERY("SELECT b_id FROM {$GLOBALS['DB_USER']} WHERE b_account='" . $m_account . "'"); $m_row = mysql_num_rows($m_query); if ($m_row == 0) { $m_filed = array("b_name", "b_account", "b_pwd"); $m_value = array($m_name, $m_account, $m_pwd); DB_INSERT($GLOBALS[DB_USER], $m_filed, $m_value); //新增 echo "1"; } else { echo "0"; } break; // -------------------------------------------------------------- // 使用者登入 // 回傳值: >0 - 使用者編號, 0 - 失敗 // -------------------------------------------------------------- // 使用者登入 // 回傳值: >0 - 使用者編號, 0 - 失敗 case "user_login": $m_account = $_GET["account"]; $m_pwd = $_GET["pwd"]; // 比對帳號及密碼 (不分大小寫) // TODO: 未來可考慮帳號及密碼區分大小寫 // 有嘗試使用 cast varbinary 及 collate, 但伺服器都回應錯誤 // 參考資料: http://blog.csdn.net/jesse621/article/details/7857333 $m_query = DB_QUERY("SELECT * FROM {$GLOBALS['DB_USER']} WHERE " . "b_account = '{$m_account}' and b_pwd = '{$m_pwd}'"); $m_result = mysql_fetch_array($m_query); // 回傳是否登入成功 (布林值) echo mysql_num_rows($m_query) > 0 ? (string) $m_result["b_id"] : "0"; break; }