Exemplo n.º 1
0
function DB_DELETE($Table, $Where)
{
    $SQL = "DELETE FROM {$Table} WHERE {$Where}";
    DB_QUERY($SQL);
    $SQL = "OPTIMIZE TABLE {$Table}";
    DB_QUERY($SQL);
}
Exemplo n.º 2
0
    } 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);
Exemplo n.º 3
0
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
            }
        }
    }
}
Exemplo n.º 4
0
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)));
            }
        }
    }
}
Exemplo n.º 5
0
/**
* 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;
}
Exemplo n.º 6
0
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;">&nbsp;</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>&nbsp;';
                $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>&nbsp;';
                // 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>&nbsp;{$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;">&nbsp;</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>&nbsp;';
                $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>&nbsp;';
                $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;">&nbsp;</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'));
}
Exemplo n.º 7
0
    <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">&nbsp;</span></td>
          <td align="center" bgcolor="#FFDBCA" id="<?php 
        echo "td1_" . $m_i . "_" . $m_j;
Exemplo n.º 8
0
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 . '&nbsp;(' . $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'));
    }
}
Exemplo n.º 10
0
<?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 = "");
Exemplo n.º 11
0
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 . '&nbsp;(' . $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 . '&nbsp;(' . $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 = '&nbsp;<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;
}
Exemplo n.º 12
0
        $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;
}