/php/AjaxTableEditorFucked.php
PHP | 2872 lines | 2670 code | 114 blank | 88 comment | 591 complexity | cacab69f37e03794792b7ceb179ad3de MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- <?php
- /*
- * Mysql Ajax Table Editor
- *
- * Copyright (c) 2008 Chris Kitchen <info@mysqlajaxtableeditor.com>
- * All rights reserved.
- *
- * See COPYING file for license information.
- *
- * Download the latest version from
- * http://www.mysqlajaxtableeditor.com
- */
- class AjaxTableEditor
- {
- var $action;
- var $retArr = array();
- var $warnings = array();
- var $html;
- var $numResults;
- var $inputIdPrefix;
- var $start;
- var $display;
- var $orderByColumn;
- var $ascOrDesc;
- var $searchString;
- var $selectClause;
- var $joinClause;
- var $whereClause;
- var $dbName;
- var $tableColumns = array();
- var $tableName;
- var $varPrefix;
- var $primaryKeyCol;
- var $userColumns = array();
- var $errorFun;
- var $permissions;
- var $tableTitle;
- var $valError;
- var $addRowTitle;
- var $editRowTitle;
- var $editMultTitle;
- var $viewRowTitle;
- var $showHideTitle;
- var $orderColTitle;
- var $searchType;
- var $numAdvSearches;
- var $opts;
- var $matchAll;
- var $advSearches = array();
- var $defNumAdvSearches;
- var $afterAddFun;
- var $afterEditFun;
- var $afterCopyFun;
- var $afterDeleteFun;
- var $extraOrderByInfo;
- var $information = array();
- var $userButtons = array();
- var $userIcons = array();
- var $tableInfo;
- var $oddRowColor;
- var $evenRowColor;
- var $userDefDisplay;
- var $displayNumInc;
- var $dbAndTable;
- var $maxDispNum;
- var $beginTime;
- var $viewQuery;
- var $recordInfo;
- var $replaceWithId;
- var $highlightHash;
- var $useHightlight;
- var $userActions = array();
- var $reqMarker;
- var $viewTableInfo;
- var $editTableInfo;
- var $addTableInfo;
- var $showHideTableInfo;
- var $addScreenFun;
- var $editScreenFun;
- var $viewScreenFun;
- var $tableScreenFun;
- var $showHideScreenFun;
- var $orderColScreenFun;
- var $valErrorStyles;
- var $noValErrorStyles;
- var $iconColPosition;
- var $mateUserId;
- var $pagePercent;
- var $pageRange;
- var $pageBegin;
- var $pageEnd;
- var $showAll;
- var $queryLineBreak;
- var $viewHtmlFun;
- var $handleHackingFun;
- var $removeIcons;
- var $langVars;
- var $iconTitle;
- var $sqlFilters;
- var $allowEditMult;
- var $defaultJsCalFormat;
- var $disableMultCbFun;
- var $filterSearches;
- var $filterColId;
- var $asColumnInfo;
- var $defaultUploadMaxSize;
- var $paginationLinks;
-
- function setDefaults()
- {
-
- $this->dbAndTable = !empty($this->dbName) ? $this->dbName.'.'.$this->tableName : $this->tableName;
- $this->warnings = array();
- $this->varPrefix = $this->primaryKeyCol.'-'.$this->tableName;
- $this->start = 0;
- $this->displayNum = isset($_SESSION[$this->varPrefix.'displayNum']) ? $_SESSION[$this->varPrefix.'displayNum'] : 20;
- $this->ascOrDesc = 'asc';
- $this->orderByColumn = $this->primaryKeyCol;
- $this->tableTitle = mb_convert_case(str_replace('_',' ',$this->tableName),MB_CASE_TITLE, "UTF-8");
- $this->valError = false;
- $this->addRowTitle = $this->langVars->ttlAddRow;
- $this->editRowTitle = $this->langVars->ttlEditRow;
- $this->editMultTitle = $this->langVars->ttlEditMult;
- $this->viewRowTitle = $this->langVars->ttlViewRow;
- $this->executeRowTitle = $this->langVars->ttlExecuteRow; //my add !
- $this->defNumAdvSearches = 3;
- $this->numAdvSearches = isset($_SESSION[$this->varPrefix.'numAdvSearches']) ? $_SESSION[$this->varPrefix.'numAdvSearches'] : $this->defNumAdvSearches;
- $this->opts = array('like' => $this->langVars->optLike, 'not like' => $this->langVars->optNotLike, '=' => $this->langVars->optEq, '<>' => $this->langVars->optNotEq, '>' => $this->langVars->optGreat, '<' => $this->langVars->optLess, '>=' => $this->langVars->optGreatEq, '<=' => $this->langVars->optLessEq);
- $this->searchType = isset($_SESSION[$this->varPrefix.'searchType']) ? $_SESSION[$this->varPrefix.'searchType'] : 'quick';
- $this->matchAll = isset($_SESSION[$this->varPrefix.'matchAll']) ? $_SESSION[$this->varPrefix.'matchAll'] : true;
- $this->advSearches = isset($_SESSION[$this->varPrefix.'advSearches']) ? $_SESSION[$this->varPrefix.'advSearches'] : array();
- $this->filterSearches = isset($_SESSION[$this->varPrefix.'filterSearches']) ? $_SESSION[$this->varPrefix.'filterSearches'] : array();
- $this->oddRowColor = '#FFFFFF';
- $this->evenRowColor = '#EDEDED';
- $this->userDefDisplay = false;
- $this->displayNumInc = 5;
- $this->maxDispNum = 200;
- $this->inputIdPrefix = '';
- $this->viewQuery = false;
- $this->recordInfo = true;
- $this->replaceWithId = '#primaryColValue#';
- $this->highlightHash = 'background-color: #FFF547';
- $this->useHighlight = true;
- $this->userActions = array();
- $this->reqMarker = '*';
- $this->viewTableInfo = 'class="mateTable"';
- $this->editTableInfo = 'class="mateTable"';
- $this->addTableInfo = 'class="mateTable"';
- $this->showHideTableInfo = 'class="mateTable"';
- $this->valErrorStyles = 'color: #f90d0d;';
- $this->noValErrorStyles = 'color: #333;';
- $this->iconColPosition = 'last';
- $this->showHideTitle = $this->langVars->ttlShowHide;
- $this->orderColTitle = $this->langVars->ttlOrderCols;
- $this->pagePercent = 20;
- $this->pageRange = 10;
- $this->pageBegin = 5;
- $this->pageEnd = 5;
- $this->showAll = 200;
- $this->queryLineBreak = "\n";
- $this->allowEditMult = true;
- $this->defaultJsCalFormat = '%d %B %Y';
- $this->defaultUploadMaxSize = 47185920;
- $this->paginationLinks = false;
- }
-
- function setConfig($var,$val)
- {
- if($var == 'varPrefix')
- {
- // If the variable prefix changed, update variables with session values
- $varPrefix = $val;
- foreach($_SESSION as $sessKey => $sessValue)
- {
- if(substr($sessKey,0,strlen($varPrefix)) == $varPrefix)
- {
- $varName = str_replace($varPrefix,'',$sessKey);
- $this->{$varName} = $sessValue;
- }
- }
- }
- if(!isset($_SESSION[$this->varPrefix.$var]))
- {
- $this->{$var} = $val;
- }
- }
-
- function doDefault()
- {
- if(isset($this->userActions[$this->action]) && is_callable($this->userActions[$this->action]))
- {
- call_user_func($this->userActions[$this->action],$this->info);
- }
- else
- {
- $this->warnings[] = sprintf($this->langVars->errNoAction,$this->action);
- }
- }
-
- function displayInformation()
- {
- if(!empty($this->information))
- {
- $this->retArr[] = array('layer_id' => 'information', 'where' => 'innerHTML', 'value' => implode('<br /><br />',$this->information));
- }
- }
- function displayWarnings()
- {
- if(!empty($this->warnings))
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => 'alert(\''.implode('\n',$this->warnings).'\');');
- }
- }
-
- function doQuery($query)
- {
- $result = mysql_query($query);
- //print $query;
- if (!$result)
- {
- $message = '<br /><br />'.$this->langVars->errQuery.' <br />'.$query.'<br /><br /> '.$this->langVars->errMysql.'<br /> '.mysql_error();
- call_user_func($this->errorFun,$message,__FILE__,__LINE__);
- }
- return $result;
- }
-
- function escapeData($data)
- {
- if (ini_get('magic_quotes_gpc'))
- {
- $data = stripslashes($data);
- }
- if(isset($this->dbc))
- {
- return mysql_real_escape_string (trim ($data), $this->dbc);
- }
- else
- {
- return mysql_real_escape_string (trim ($data));
- }
- }
-
- function startTimer()
- {
- $time = microtime();
- $time = explode(' ', $time);
- $time = $time[1] + $time[0];
- $this->beginTime = $time;
- }
-
- function endTimer()
- {
- $time = microtime();
- $time = explode(' ', $time);
- $time = $time[1] + $time[0];
- $endtime = $time;
- $totaltime = ($endtime - $this->beginTime);
- $this->information[] = $totaltime;
- }
-
- function main($action,$info = '')
- {
- //$this->startSession();
- //$this->mysqlConnect();
- //$this->checkLoginInfo(array('Admin'));
- //$this->startTimer();
- $this->action = $action;
- $this->info = $info;
- $this->handleFlow();
- //$this->endTimer();
- $this->displayInformation();
- $this->displayWarnings();
- }
-
- function handleFlow()
- {
- switch ($this->action)
- {
- case 'clear_filters':
- $_SESSION[$this->varPrefix.'filterSearches'] = array();
- $this->filterSearches = array();
- $this->updateHtml();
- break;
- case 'handle_filter_search':
- $this->handleFilterSearch();
- break;
- case 'update_mult_rows':
- $this->updateMultRows();
- break;
- case 'edit_mult_rows':
- $this->editMultRows();
- break;
- case 'reset_column_order':
- $this->resetColumnOrder();
- break;
- case 'update_column_order':
- $this->updateColumnOrder();
- break;
- case 'order_columns_screen':
- $this->orderColumnsScreen();
- break;
- case 'show_column':
- $this->showColumn();
- break;
- case 'hide_column':
- $this->hideColumn();
- break;
- case 'show_hide_columns':
- $this->showHideColumns();
- break;
- case 'view_row':
- $this->viewRow();
- break;
- case 'update_row':
- $this->updateRow();
- break;
- case 'cancel_edit_row':
- $this->updateHtml();
- break;
- case 'edit_row':
- $this->editRow();
- break;
- case 'delete_row':
- $this->deleteRow();
- break;
- case 'delete_mult_rows':
- $this->deleteMultRows();
- break;
- case 'update_html':
- $this->updateHtml();
- break;
- case 'handle_search':
- $_SESSION[$this->varPrefix.'searchType'] = 'quick';
- $this->searchType = 'quick';
- $_SESSION[$this->varPrefix.'ss'] = $this->info;
- $_SESSION[$this->varPrefix.'start'] = 0;
- $this->updateHtml();
- //$this->retArr[] = array('where' => 'javascript', 'value' => "resetScrollTop();");
- break;
- case 'page_num_changed':
- $_SESSION[$this->varPrefix.'start'] = $this->escapeData($this->info);
- $this->updateHtml();
- break;
- case 'display_num_changed':
- $this->displayNum = $this->escapeData($this->info);
- $_SESSION[$this->varPrefix.'displayNum'] = $this->displayNum;
- $_SESSION[$this->varPrefix.'start'] = 0;
- $this->updateHtml();
- $this->retArr[] = array('where' => 'javascript', 'value' => "resetScrollTop();");
- break;
- case 'order_by_changed':
- $_SESSION[$this->varPrefix.'obc'] = $this->escapeData($this->info[0]);
- $_SESSION[$this->varPrefix.'aod'] = $this->escapeData($this->info[1]);
- $this->displayTable();
- break;
- case 'add_row':
- $this->addRow();
- break;
- case 'insert_row':
- $this->insertRow();
- break;
- case 'show_advanced_search':
- $_SESSION[$this->varPrefix.'numAdvSearches'] = $this->defNumAdvSearches;
- $this->numAdvSearches = $this->defNumAdvSearches;
- $_SESSION[$this->varPrefix.'ss'] = '';
- $this->searchString = '';
- $_SESSION[$this->varPrefix.'searchType'] = 'advanced';
- $this->searchType = 'advanced';
- $this->updateHtml();
- break;
- case 'show_quick_search':
- $_SESSION[$this->varPrefix.'advSearches'] = array();
- $this->advSearches = array();
- $_SESSION[$this->varPrefix.'searchType'] = 'quick';
- $this->searchType = 'quick';
- $this->updateHtml();
- break;
- case 'advanced_search':
- $_SESSION[$this->varPrefix.'searchType'] = 'advanced';
- $this->searchType = 'advanced';
- $this->advancedSearch();
- $this->updateHtml();
- //$this->retArr[] = array('where' => 'javascript', 'value' => "resetScrollTop();");
- break;
- case 'match_all':
- $_SESSION[$this->varPrefix.'matchAll'] = true;
- break;
- case 'match_any':
- $_SESSION[$this->varPrefix.'matchAll'] = false;
- break;
- case 'clear_adv_search':
- $_SESSION[$this->varPrefix.'matchAll'] = true;
- $this->matchAll = true;
- $_SESSION[$this->varPrefix.'numAdvSearches'] = $this->defNumAdvSearches;
- $this->numAdvSearches = $this->defNumAdvSearches;
- $_SESSION[$this->varPrefix.'advSearches'] = array();
- $this->advSearches = array();
- $this->updateHtml();
- break;
- case 'add_adv_search':
- $_SESSION[$this->varPrefix.'numAdvSearches']++;
- $this->numAdvSearches++;
- $this->updateHtml();
- break;
- case 'copy_mult_rows':
- $this->copyMultRows();
- $this->updateHtml();
- break;
- case 'copy_row':
- $this->copyRow();
- $this->updateHtml();
- break;
- case 'user_icon_clicked':
- $this->userIconClicked();
- break;
- case 'user_button_clicked':
- $this->userButtonClicked();
- break;
-
- // my add !
- case 'execute_row':
- $this->execute_row();
- break;
-
- default :
- $this->doDefault();
- }
- }
- // my add !
- function execute_row () {
- }
- function handleFilterSearch()
- {
- foreach($this->info->filters as $filterInfo)
- {
- if(strlen($filterInfo->filterStr) > 0)
- {
- $_SESSION[$this->varPrefix.'filterSearches'][$filterInfo->filterCol] = $filterInfo->filterStr;
- }
- else if(isset($_SESSION[$this->varPrefix.'filterSearches'][$filterInfo->filterCol]))
- {
- unset($_SESSION[$this->varPrefix.'filterSearches'][$filterInfo->filterCol]);
- }
- }
- $this->filterSearches = isset($_SESSION[$this->varPrefix.'filterSearches']) ? $_SESSION[$this->varPrefix.'filterSearches'] : array();
- $_SESSION[$this->varPrefix.'start'] = 0;
- $this->updateHtml();
- if(isset($this->info->currentFilterId) && strlen($this->info->currentFilterId) > 0)
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$this->info->currentFilterId.'").focus();');
- }
- }
-
- function resetColumnOrder()
- {
- $query = "update mate_columns set order_num = '0' where mate_var_prefix = '".$this->escapeData($this->varPrefix)."'";
- $result = $this->doQuery($query);
- if($result)
- {
- $this->orderColumnsScreen();
- }
- }
-
- function unsetColSessVars($column)
- {
- if($this->searchType == 'advanced' && isset($_SESSION[$this->varPrefix.'advSearches']))
- {
- foreach($_SESSION[$this->varPrefix.'advSearches'] as $key => $searchInfo)
- {
- if(isset($searchInfo['cols']) && $searchInfo['cols'] == $column)
- {
- $_SESSION[$this->varPrefix.'advSearches'][$key] = array();
- }
- }
- }
- if(isset($_SESSION[$this->varPrefix.'filterSearches'][$column]))
- {
- unset($_SESSION[$this->varPrefix.'filterSearches'][$column]);
- }
- if(isset($_SESSION[$this->varPrefix.'obc']) && $_SESSION[$this->varPrefix.'obc'] == $column)
- {
- unset($_SESSION[$this->varPrefix.'obc']);
- }
- }
-
- function unsetHiddenColumns()
- {
- if(stristr($this->permissions,'H') && $this->setMateUserId())
- {
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'H') && $col != $this->primaryKeyCol)
- {
- $hidden = isset($info['hidden']) ? $info['hidden'] : false;
- if($this->columnIsHidden($col,$hidden))
- {
- unset($this->tableColumns[$col]);
- }
- }
- }
- }
- }
-
- function columnIsHidden($column,$hidden = false)
- {
- $rv = false;
- $query = "select id, hidden from mate_columns where mate_user_id = '$this->mateUserId' and mate_var_prefix = '$this->varPrefix' and mate_column = '$column'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- if($row['hidden'] == 'Yes')
- {
- $rv = true;
- }
- }
- else if($hidden)
- {
- $rv = true;
- }
- return $rv;
- }
-
- function showColumn()
- {
- if($this->setMateUserId())
- {
- $column = $this->escapeData($this->info);
- $query = "select id from mate_columns where mate_user_id = '$this->mateUserId' and mate_var_prefix = '$this->varPrefix' and mate_column = '$column'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- $mateColId = $row['id'];
- $query = "update mate_columns set hidden = 'No' where id = '$mateColId'";
- $result = $this->doQuery($query);
- }
- else
- {
- $query = "insert into mate_columns set mate_user_id = '$this->mateUserId', mate_var_prefix = '$this->varPrefix', mate_column = '$column', hidden = 'No', date_updated = NOW()";
- $result = $this->doQuery($query);
- }
- }
- }
-
- function hideColumn()
- {
- if($this->setMateUserId())
- {
- $column = $this->escapeData($this->info);
- if(isset($this->tableColumns[$column]['perms']) && stristr($this->tableColumns[$column]['perms'],'H'))
- {
- $query = "select id from mate_columns where mate_user_id = '$this->mateUserId' and mate_var_prefix = '$this->varPrefix' and mate_column = '$column'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- $mateColId = $row['id'];
- $query = "update mate_columns set hidden = 'Yes' where id = '$mateColId'";
- $result = $this->doQuery($query);
- }
- else
- {
- $query = "insert into mate_columns set mate_user_id = '$this->mateUserId', mate_var_prefix = '$this->varPrefix', mate_column = '$column', hidden = 'Yes', date_updated = NOW()";
- $result = $this->doQuery($query);
- }
- $this->unsetColSessVars($column);
- }
- }
- }
-
- function setMateUserId()
- {
- if(strlen($this->mateUserId) > 0)
- {
- return true;
- }
- else if(isset($_COOKIE['mate_user_id']) && strlen($_COOKIE['mate_user_id']) > 0)
- {
- $this->mateUserId = $_COOKIE['mate_user_id'];
- return true;
- }
- else
- {
- $this->mateUserId = md5(uniqid(rand(),1));
- if(setcookie('mate_user_id',$this->mateUserId,time() + 60*60*24*7*365*2))
- {
- return true;
- }
- else
- {
- $this->warnings[] = 'Your browser must accept cookies in order to show/hide columns.';
- return false;
- }
- }
- }
-
- function showHideColumns()
- {
- if(stristr($this->permissions,'H'))
- {
- if($this->setMateUserId())
- {
- $html = '<table '.$this->showHideTableInfo.'><tr style="font-weight: bold;"><td>'.$this->langVars->ttlColumn.'</td><td>'.$this->langVars->ttlCheckBox.'</td></tr>';
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'H') && $col != $this->primaryKeyCol)
- {
- $checked = 'checked="checked"';
- $hidden = isset($info['hidden']) ? $info['hidden'] : false;
- if($this->columnIsHidden($col,$hidden))
- {
- $checked = '';
- }
- $html .= '<tr><td><label for="'.$col.'_hide_cb">'.$info['display_text'].'</label>:</td><td><input type="checkbox" id="'.$col.'_hide_cb" onchange="showHideColumn(this,\''.$col.'\');" '.$checked.' /></tr>';
- }
- }
- $html .= '</table>';
- $this->retArr[] = array('layer_id' => 'titleLayer', 'where' => 'innerHTML', 'value' => $this->showHideTitle);
- $this->retArr[] = array('layer_id' => 'recordLayer', 'where' => 'innerHTML', 'value' => '');
- $this->retArr[] = array('layer_id' => 'filterLayer', 'where' => 'innerHTML', 'value' => '');
- $this->retArr[] = array('layer_id' => 'searchButtonsLayer', 'where' => 'innerHTML', 'value' => '<button onclick="toAjaxTableEditor(\'update_html\',\'\');">'.$this->langVars->btnBack.'</button>');
- $this->retArr[] = array('layer_id' => 'tableLayer', 'where' => 'innerHTML', 'value' => $html);
- //$this->retArr[] = array('where' => 'javascript', 'value' => "resetScrollTop();");
- if(is_callable($this->showHideScreenFun))
- {
- call_user_func($this->showHideScreenFun);
- }
- }
- }
- }
-
- function orderColumnsScreen()
- {
- if(stristr($this->permissions,'O'))
- {
- $html = '';
- $this->unsetHiddenColumns();
- $this->setColumnOrder();
- if($this->setMateUserId())
- {
- $html .= '<ul id="columnOrderList">';
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'O'))
- {
- $html .= '<li id="columnOrderList_'.str_replace('_','-.-UNDERSCORE-.-',$col).'" class="orderColumnClass">'.$info['display_text'].'</li>';
- }
- }
- $html .= '</ul>';
- $this->retArr[] = array('layer_id' => 'titleLayer', 'where' => 'innerHTML', 'value' => $this->orderColTitle);
- $this->retArr[] = array('layer_id' => 'recordLayer', 'where' => 'innerHTML', 'value' => '');
- $this->retArr[] = array('layer_id' => 'filterLayer', 'where' => 'innerHTML', 'value' => '');
- $this->retArr[] = array('layer_id' => 'searchButtonsLayer', 'where' => 'innerHTML', 'value' => '<button onclick="toAjaxTableEditor(\'reset_column_order\',\'\');">'.$this->langVars->btnReset.'</button> <button onclick="toAjaxTableEditor(\'update_html\',\'\');">'.$this->langVars->btnBack.'</button>');
- $this->retArr[] = array('layer_id' => 'tableLayer', 'where' => 'innerHTML', 'value' => $html);
- //$this->retArr[] = array('where' => 'javascript', 'value' => "resetScrollTop();");
- $javascript = 'Sortable.create("columnOrderList",{dropOnEmpty:false,constraint:false,onUpdate:function(element){var info = Sortable.serialize(element.id); toAjaxTableEditor("update_column_order",info); } });';
- $this->retArr[] = array('where' => 'javascript', 'value' => $javascript);
- if(is_callable($this->orderColScreenFun))
- {
- call_user_func($this->orderColScreenFun);
- }
- }
- }
- }
-
- function updateColumnOrder()
- {
- if($this->setMateUserId())
- {
- if(stristr($this->permissions,'O'))
- {
- parse_str($this->info);
- $orderNum = 1;
- foreach($columnOrderList as $col)
- {
- $col = str_replace('-.-UNDERSCORE-.-','_',$col);
- if(isset($this->tableColumns[$col]['perms']) && stristr($this->tableColumns[$col]['perms'],'O'))
- {
- $query = "select id from mate_columns where mate_user_id = '$this->mateUserId' and mate_var_prefix = '$this->varPrefix' and mate_column = '$col'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- $mateColId = $row['id'];
- $query = "update mate_columns set order_num = '$orderNum' where id = '$mateColId'";
- $result = $this->doQuery($query);
- }
- else
- {
- $query = "insert into mate_columns set mate_user_id = '$this->mateUserId', mate_var_prefix = '$this->varPrefix', mate_column = '$col', order_num = '$orderNum', hidden = 'No', date_updated = NOW()";
- $result = $this->doQuery($query);
- }
- $orderNum++;
- }
- }
- }
- }
- }
-
- function setColumnOrder()
- {
- if(stristr($this->permissions,'O'))
- {
- if($this->setMateUserId())
- {
- $newTableColumns = array();
- $query = "select mate_column from mate_columns where mate_user_id = '$this->mateUserId' and mate_var_prefix = '$this->varPrefix' and hidden = 'No' and order_num > 0 order by order_num asc";
- $result = $this->doQuery($query);
- while($row = mysql_fetch_assoc($result))
- {
- if(isset($this->tableColumns[$row['mate_column']]) && stristr($this->tableColumns[$row['mate_column']]['perms'],'O'))
- {
- $newTableColumns[$row['mate_column']] = $this->tableColumns[$row['mate_column']];
- unset($this->tableColumns[$row['mate_column']]);
- }
- }
- foreach($this->tableColumns as $col => $info)
- {
- $newTableColumns[$col] = $info;
- }
- $this->tableColumns = $newTableColumns;
- }
- }
- }
-
- function userButtonClicked()
- {
- $buttonKey = $this->info->buttonKey;
- if(isset($this->userButtons[$buttonKey]['pass_id_array']) && $this->userButtons[$buttonKey]['pass_id_array'])
- {
- $params = isset($this->userButtons[$buttonKey]['params']) ? $this->userButtons[$buttonKey]['params'] : array();
- call_user_func($this->userButtons[$buttonKey]['call_back_fun'],get_object_vars($this->info->checkboxes),$params);
- }
- else
- {
- foreach($this->info->checkboxes as $info)
- {
- $id = $this->escapeData($info);
- $query = "select * from $this->tableName where $this->primaryKeyCol = '$id'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- if(isset($this->userButtons[$buttonKey]['call_back_fun']) && is_callable($this->userButtons[$buttonKey]['call_back_fun']))
- {
- $params = isset($this->userButtons[$buttonKey]['params']) ? $this->userButtons[$buttonKey]['params'] : array();
- call_user_func($this->userButtons[$buttonKey]['call_back_fun'],$row,$params);
- }
- }
- }
- }
- if(!(isset($this->userButtons[$buttonKey]['no_update']) && $this->userButtons[$buttonKey]['no_update']))
- {
- $this->updateHtml();
- }
- }
-
- function userIconClicked()
- {
- $id = $this->escapeData($this->info[0]);
- $iconKey = $this->escapeData($this->info[1]);
- $query = "select * from $this->tableName where $this->primaryKeyCol = '$id'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- if(isset($this->userIcons[$iconKey]['call_back_fun']) && is_callable($this->userIcons[$iconKey]['call_back_fun']))
- {
- call_user_func($this->userIcons[$iconKey]['call_back_fun'],$row);
- }
- }
- if(!(isset($this->userIcons[$iconKey]['no_update']) && $this->userIcons[$iconKey]['no_update']))
- {
- $this->updateHtml();
- }
- }
-
- function copyMultRows()
- {
- foreach($this->info as $id)
- {
- $afterCopyArray = array();
- $id = $this->escapeData($id);
- if(!$this->hasRightsToRow($id))
- {
- $this->handleHacking();
- }
- $query = "select * from $this->tableName where $this->primaryKeyCol = '$id'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- $sets = array();
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'C') && !isset($info['join']['real_column']))
- {
- $val = $row[$col];
- if(isset($this->tableColumns[$col]['on_copy_fun']) && is_callable($this->tableColumns[$col]['on_copy_fun']))
- {
- $val = call_user_func($this->tableColumns[$col]['on_copy_fun'],$col,$val,$row);
- }
- $val = $this->escapeData($val);
- $sets[] = $this->addTickMarks($col)." = '".$val."'";
- $afterCopyArray[$col] = $val;
- }
- }
- $query2 = "insert into $this->tableName set ".implode(', ',$sets);
- $result2 = $this->doQuery($query2);
- if($result2 && isset($this->afterCopyFun) && is_callable($this->afterCopyFun))
- {
- call_user_func($this->afterCopyFun,mysql_insert_id(),$afterCopyArray);
- }
- }
- }
- }
-
- function copyRow()
- {
- $afterCopyArray = array();
- $id = $this->escapeData($this->info);
- if(!$this->hasRightsToRow($id))
- {
- $this->handleHacking();
- }
- $query = "select * from $this->tableName where $this->primaryKeyCol = '$id'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- $sets = array();
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'C') && !isset($info['join']['real_column']))
- {
- $val = $row[$col];
- if(isset($this->tableColumns[$col]['on_copy_fun']) && is_callable($this->tableColumns[$col]['on_copy_fun']))
- {
- $val = call_user_func($this->tableColumns[$col]['on_copy_fun'],$col,$val,$row);
- }
- $val = $this->escapeData($val);
- $sets[] = $this->addTickMarks($col)." = '".$val."'";
- $afterCopyArray[$col] = $val;
- }
- }
- $query2 = "insert into $this->tableName set ".implode(', ',$sets);
- $result2 = $this->doQuery($query2);
- if($result2 && isset($this->afterCopyFun) && is_callable($this->afterCopyFun))
- {
- call_user_func($this->afterCopyFun,mysql_insert_id(),$afterCopyArray);
- }
- }
- }
-
- function advancedSearch()
- {
- $_SESSION[$this->varPrefix.'start'] = 0;
- $this->info = get_object_vars($this->info);
- foreach($this->info as $i => $info)
- {
- $this->advSearches[$i] = get_object_vars($this->info[$i]);
- }
- $_SESSION[$this->varPrefix.'advSearches'] = $this->advSearches;
- }
-
- function exportInfo()
- {
- $this->unsetHiddenColumns();
- $this->setColumnOrder();
- $this->setPagingVars();
- $this->formatJoinClause();
- $this->formatSelectClause();
- $this->formatWhereClause();
- $this->setNumResults();
- $csvInfo = '';
- $csvLb = "\r\n";
- $this->extraOrderByInfo = empty($this->extraOrderByInfo) ? '' : ', '.$this->extraOrderByInfo;
- $query = $this->selectClause.' '.$this->joinClause.' '.$this->whereClause.' order by '.$this->addTickMarks($this->orderByColumn).' '.$this->getAscOrDesc().' '.$this->extraOrderByInfo;
- $result = $this->doQuery($query);
- if(mysql_num_rows($result) > 0)
- {
- $csvRow = array();
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'X'))
- {
- $csvRow[] = '"'.$info['display_text'].'"';
- }
- }
- $csvInfo .= implode(',', $csvRow).$csvLb;
-
- while($row = mysql_fetch_assoc($result))
- {
- $csvRow = array();
- foreach($this->tableColumns as $col => $info)
- {
- $value = '';
- if(stristr($info['perms'],'X'))
- {
- $value = $row[$col];
- if(isset($info['csv_export_fun']) && is_callable($info['csv_export_fun']))
- {
- $value = call_user_func($info['csv_export_fun'],$col,$value,$row);
- }
- $csvRow[] = '"'.str_replace(array("\r", "\n", '"'),array('','','""'),$value).'"';
- }
- }
- $csvInfo .= implode(',', $csvRow).$csvLb;
- }
- return $csvInfo;
- }
- }
-
- function formatIcons($id,$row)
- {
- $html = '';
- $numIcons = 0;
- if(stristr($this->permissions,'V') && stristr($this->removeIcons,'V') === false)
- {
- $html .= '<li class="info"><a href="javascript: toAjaxTableEditor(\'view_row\',\''.$id.'\');" title="'.$this->langVars->ttlInfo.'"></a></li>';
- $numIcons++;
- }
- if(stristr($this->permissions,'E') && stristr($this->removeIcons,'E') === false)
- {
- $html .= '<li class="edit"><a href="javascript: toAjaxTableEditor(\'edit_row\',\''.$id.'\');" title="'.$this->langVars->ttlEdit.'"></a></li>';
- $numIcons++;
- }
- if(stristr($this->permissions,'C') && stristr($this->removeIcons,'C') === false)
- {
- $html .= '<li class="copy"><a href="javascript: toAjaxTableEditor(\'copy_row\',\''.$id.'\');" title="'.$this->langVars->ttlCopy.'"></a></li>';
- $numIcons++;
- }
- if(stristr($this->permissions,'D') && stristr($this->removeIcons,'D') === false)
- {
- $html .= '<li class="delete"><a href="javascript: confirmDeleteRow(\''.$id.'\')" title="'.$this->langVars->ttlDelete.'"></a></li>';
- $numIcons++;
- }
- // my add !
- if(stristr($this->permissions,'Z') && stristr($this->removeIcons,'Z') === false)
- {
- $html .= '<li class="execute" id="execute_row_li"><a href="mng_handler.php?execute=1&table_name='.$this->tableName.'&id='.$id.'"title="" ></a> </li>';
- //$html .= '<li class="execute" id="execute_row_li"><a href="javascript: toAjaxTableEditor(\'execute_row\',\''.$id.'\');" title="'.$this->langVars->ttlExecuteRow.'"></a></li>';
- $numIcons++;
- }
-
- //
- foreach($this->userIcons as $iconKey => $info)
- {
- if(isset($info['call_back_fun']) && is_callable($info['call_back_fun']))
- {
- $confirmMsg = isset($info['confirm_msg']) ? $info['confirm_msg'] : '';
- $html .= '<li class="'.$info['class'].'"><a href="javascript: userIconClicked(\'user_icon_clicked\',new Array(\''.$id.'\',\''.$iconKey.'\'),\''.$confirmMsg.'\')" title="'.$info['title'].'"></a></li>';
- $numIcons++;
- }
- else if(isset($info['icon_html']))
- {
- $info['icon_html'] = str_replace($this->replaceWithId,$id,$info['icon_html']);
- $html .= $info['icon_html'];
- $numIcons++;
- }
- else if(isset($info['format_fun']) && is_callable($info['format_fun']))
- {
- $userIconInfo = call_user_func($info['format_fun'],$row);
- $html .= $userIconInfo['icon_html'];
- $numIcons = $numIcons + $userIconInfo['num_icons'];
- }
- }
- if($numIcons > 0)
- {
- $width = $numIcons * 26;
- $html = '<td nowrap="nowrap"><ul class="actions" style="width: '.$width.'px;">'.$html.'</ul></td>';
- }
-
- return $html;
- }
-
-
- function viewRow()
- {
- if(stristr($this->permissions,'V'))
- {
- $html = '';
- $id = $this->escapeData($this->info);
- $this->formatJoinClause();
- $this->formatSelectClause();
- $query = $this->selectClause.' '.$this->joinClause.' where '.$this->tableName.'.'.$this->primaryKeyCol." = '$id'";
- $result = $this->doQuery($query);
- if($row = mysql_fetch_assoc($result))
- {
- $html .= '<table '.$this->viewTableInfo.'>';
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'V'))
- {
- $value = $row[$col];
- if(isset($info['view_fun']) && is_callable($info['view_fun']))
- {
- $value = call_user_func($info['view_fun'],$col,$value,$row);
- }
- $value = strlen(trim($value)) > 0 ? $value : ' ';
- $html .= '<tr><td id="'.$col.'_label_cell" class="labelCell">'.$info['display_text'].':</td><td id="'.$col.'_value_cell" class="valueCell">'.$value.'</td></tr>';
- }
- }
- if(isset($this->viewHtmlFun) && is_callable($this->viewHtmlFun))
- {
- $html .= call_user_func($this->viewHtmlFun,$row);
- }
- $html .= '</tr></table><div id="viewRowButtons">';
- if(stristr($this->permissions,'E'))
- {
- $html .= '<button class="ajaxButton" onclick="toAjaxTableEditor(\'edit_row\',\''.$id.'\');">'.$this->langVars->btnEdit.'</button>';
- }
- $html .= '<button class="ajaxButton" onclick="toAjaxTableEditor(\'update_html\',\'\');">'.$this->langVars->btnBack.'</button></div>';
- }
- $this->retArr[] = array('layer_id' => 'titleLayer', 'where' => 'innerHTML', 'value' => $this->viewRowTitle);
- $this->retArr[] = array('layer_id' => 'recordLayer', 'where' => 'innerHTML', 'value' => '');
- $this->retArr[] = array('layer_id' => 'filterLayer', 'where' => 'innerHTML', 'value' => '');
- $this->retArr[] = array('layer_id' => 'searchButtonsLayer', 'where' => 'innerHTML', 'value' => '');
- $this->retArr[] = array('layer_id' => 'tableLayer', 'where' => 'innerHTML', 'value' => $html);
- //$this->retArr[] = array('where' => 'javascript', 'value' => "resetScrollTop();");
-
- if(is_callable($this->viewScreenFun))
- {
- call_user_func($this->viewScreenFun);
- }
- }
- }
-
- function updateMultRows()
- {
- $this->valError = false;
- $sets = array();
- $afterEditArray = array();
- $idArr = is_object($this->info->idArr) ? get_object_vars($this->info->idArr) : $this->info->idArr;
- $inputInfo = get_object_vars($this->info->inputInfo);
-
- $insertId = $idArr;
- $hasFileUpload = isset($inputInfo['submit_mate_file_upload']) ? true : false;
- unset($inputInfo['submit_mate_file_upload']);
-
- foreach($inputInfo as $col => $val)
- {
- $col = str_replace($this->inputIdPrefix,'',$col);
- if(isset($this->tableColumns[$col]))
- {
- // Check to make sure the column has edit permissions.
- if(!stristr($this->tableColumns[$col]['perms'],'E'))
- {
- $this->handleHacking();
- }
-
- if(isset($this->tableColumns[$col]['on_edit_fun']) && is_callable($this->tableColumns[$col]['on_edit_fun']))
- {
- $val = call_user_func($this->tableColumns[$col]['on_edit_fun'],$col,$val,$this->info);
- }
- // Check Validation
- if(isset($this->tableColumns[$col]['val_fun']) && is_callable($this->tableColumns[$col]['val_fun']) && !call_user_func($this->tableColumns[$col]['val_fun'],$col,$val,$this->info))
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- else if(isset($this->tableColumns[$col]['req']) && $this->tableColumns[$col]['req'] && strlen($val) == 0)
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- else if(!isset($this->tableColumns[$col]['hidden_edit']) || !$this->tableColumns[$col]['hidden_edit'])
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->noValErrorStyles.'");');
- }
- $afterEditArray[$col] = $val;
- $val = $this->escapeData($val);
- if(isset($this->tableColumns[$col]['mysql_edit_fun']))
- {
- $sets[] = $this->addTickMarks($col)." = ".$this->tableColumns[$col]['mysql_edit_fun']."('".$val."')";
- }
- else
- {
- $sets[] = $this->addTickMarks($col)." = '".$val."'";
- }
- }
- }
-
- if($this->valError)
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => 'enableButtons();');
- $this->retArr[] = array('layer_id' => 'titleLayer', 'where' => 'innerHTML', 'value' => $this->editRowTitle.'<div style="color: #f90d0d;">'.$this->langVars->errVal.'</div>');
- }
- else if(count($sets) > 0)
- {
- foreach($idArr as $index => $id)
- {
- $idArr[$index] = $this->escapeData($id);
- }
- if(!$this->hasRightsToRows($idArr) || !stristr($this->permissions,'E'))
- {
- $this->handleHacking();
- }
- $query = "update $this->tableName set ".implode(', ',$sets)." where $this->primaryKeyCol in ('".implode("','",$idArr)."')";
- $result = $this->doQuery($query);
- if($result)
- {
- if(!empty($this->afterEditFun) && is_callable($this->afterEditFun))
- {
- call_user_func($this->afterEditFun,$idArr,$this->primaryKeyCol,$afterEditArray);
- }
- }
- if($hasFileUpload)
- {
- $idInputHtml = '<input type="hidden" name="'.$this->inputIdPrefix.$this->primaryKeyCol.'" value="'.htmlspecialchars(serialize($insertId)).'" />';
- $this->retArr[] = array('where' => 'javascript', 'value' => '$(\''.$this->varPrefix.'_add_edit_form\').insert(\''.$idInputHtml.'\');');
- $this->retArr[] = array('where' => 'javascript', 'value' => 'submitFileUploadForm(\''.$this->varPrefix.'\');');
- }
- else
- {
- $this->updateHtml();
- }
- }
- }
-
- function updateRow()
- {
- $this->valError = false;
- $sets = array();
- $afterEditArray = array();
- $oldPrimaryKeyValue = $this->escapeData($this->info->old_primary_key_value);
-
- if(!$this->hasRightsToRow($oldPrimaryKeyValue) || !stristr($this->permissions,'E'))
- {
- $this->handleHacking();
- }
-
- unset($this->info->old_primary_key_value);
- $this->info = get_object_vars($this->info);
-
- $insertId = isset($this->info[$this->primaryKeyCol]) ? $this->info[$this->primaryKeyCol] : $oldPrimaryKeyValue;
- $hasFileUpload = isset($this->info['submit_mate_file_upload']) ? true : false;
- unset($this->info['submit_mate_file_upload']);
-
- foreach($this->info as $col => $val)
- {
- $col = str_replace($this->inputIdPrefix,'',$col);
- if(isset($this->tableColumns[$col]))
- {
- // Check to make sure the column has edit permissions.
- if(!stristr($this->tableColumns[$col]['perms'],'E'))
- {
- $this->handleHacking();
- }
-
- if(isset($this->tableColumns[$col]['on_edit_fun']) && is_callable($this->tableColumns[$col]['on_edit_fun']))
- {
- $val = call_user_func($this->tableColumns[$col]['on_edit_fun'],$col,$val,$this->info);
- }
- // Check Validation
- if(isset($this->tableColumns[$col]['val_fun']) && is_callable($this->tableColumns[$col]['val_fun']) && !call_user_func($this->tableColumns[$col]['val_fun'],$col,$val,$this->info))
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- else if(isset($this->tableColumns[$col]['req']) && $this->tableColumns[$col]['req'])
- {
- if(strlen($val) == 0)
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- else if(isset($this->tableColumns[$col]['calendar']) && substr($val,0,10) == '0000-00-00')
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- }
- else if(!isset($this->tableColumns[$col]['hidden_edit']) || !$this->tableColumns[$col]['hidden_edit'])
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->noValErrorStyles.'");');
- }
- $val = $this->escapeData($val);
-
- if(isset($this->tableColumns[$col]['mysql_edit_fun']))
- {
- $sets[] = $this->addTickMarks($col)." = ".$this->tableColumns[$col]['mysql_edit_fun']."('".$val."')";
- $afterEditArray[$col] = $val;
- }
- else
- {
- $sets[] = $this->addTickMarks($col)." = '".$val."'";
- $afterEditArray[$col] = $val;
- }
- }
- }
-
- if($this->valError)
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => 'enableButtons();');
- $this->retArr[] = array('layer_id' => 'titleLayer', 'where' => 'innerHTML', 'value' => $this->editRowTitle.'<div style="color: #f90d0d;">'.$this->langVars->errVal.'</div>');
- }
- else if(count($sets) > 0)
- {
- $query = "update $this->tableName set ".implode(', ',$sets)." where $this->primaryKeyCol = '$oldPrimaryKeyValue'";
- $result = $this->doQuery($query);
- if($result)
- {
- if(!empty($this->afterEditFun) && is_callable($this->afterEditFun))
- {
- call_user_func($this->afterEditFun,$oldPrimaryKeyValue,$this->primaryKeyCol,$afterEditArray);
- }
- }
- if($hasFileUpload)
- {
- $idInputHtml = '<input type="hidden" name="'.$this->inputIdPrefix.$this->primaryKeyCol.'" value="'.htmlspecialchars(serialize($insertId)).'" />';
- $this->retArr[] = array('where' => 'javascript', 'value' => '$(\''.$this->varPrefix.'_add_edit_form\').insert(\''.$idInputHtml.'\');');
- $this->retArr[] = array('where' => 'javascript', 'value' => 'submitFileUploadForm(\''.$this->varPrefix.'\');');
- }
- else
- {
- $this->updateHtml();
- }
- }
- }
-
- function insertRow()
- {
- $this->valError = false;
- $this->info = get_object_vars($this->info);
- $hasFileUpload = isset($this->info['submit_mate_file_upload']) ? true : false;
- $insertId = isset($this->info[$this->primaryKeyCol]) ? $this->info[$this->primaryKeyCol] : '';
- unset($this->info['submit_mate_file_upload']);
- $sets = array();
- $afterAddArray = array();
-
- if(!stristr($this->permissions,'A'))
- {
- $this->handleHacking();
- }
-
- foreach($this->info as $col => $val)
- {
- $col = str_replace($this->inputIdPrefix,'',$col);
-
- // Check to make sure the column has add permissions
- if(!stristr($this->tableColumns[$col]['perms'],'A'))
- {
- $this->handleHacking();
- }
-
- if(isset($this->tableColumns[$col]['on_add_fun']) && is_callable($this->tableColumns[$col]['on_add_fun']))
- {
- $val = call_user_func($this->tableColumns[$col]['on_add_fun'],$col,$val,$this->info);
- }
- // Check Validation
- if(isset($this->tableColumns[$col]['val_fun']) && is_callable($this->tableColumns[$col]['val_fun']) && !call_user_func($this->tableColumns[$col]['val_fun'],$col,$val,$this->info))
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- else if(isset($this->tableColumns[$col]['req']) && $this->tableColumns[$col]['req'])
- {
- if(strlen($val) == 0)
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- else if(isset($this->tableColumns[$col]['calendar']) && substr($val,0,10) == '0000-00-00')
- {
- $this->valError = true;
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->valErrorStyles.'");');
- }
- else if(strlen($val) > 0 && (!isset($this->tableColumns[$col]['hidden_add']) || !$this->tableColumns[$col]['hidden_add']))
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->noValErrorStyles.'");');
- }
- }
- else if(!isset($this->tableColumns[$col]['hidden_add']) || !$this->tableColumns[$col]['hidden_add'])
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => '$("'.$col.'_label_cell").setStyle("'.$this->noValErrorStyles.'");');
- }
- $val = $this->escapeData($val);
-
- if(isset($this->tableColumns[$col]['mysql_add_fun']))
- {
- $sets[] = $this->addTickMarks($col)." = ".$this->tableColumns[$col]['mysql_add_fun']."('".$val."')";
- $afterAddArray[$col] = $val;
- }
- else
- {
- $sets[] = $this->addTickMarks($col)." = '".$val."'";
- $afterAddArray[$col] = $val;
- }
- }
-
- if($this->valError)
- {
- $this->retArr[] = array('where' => 'javascript', 'value' => 'enableButtons();');
- $this->retArr[] = array('layer_id' => 'titleLayer', 'where' => 'innerHTML', 'value' => $this->addRowTitle.'<div style="color: #f90d0d;">'.$this->langVars->errVal.'</div>');
- }
- else
- {
- $query = "insert into $this->tableName set ".implode(', ',$sets);
- $result = $this->doQuery($query);
- if($result)
- {
- $insertId = strlen($insertId) > 0 ? $insertId : mysql_insert_id();
- if(!empty($this->afterAddFun) && is_callable($this->afterAddFun))
- {
- call_user_func($this->afterAddFun,$insertId,$this->primaryKeyCol,$afterAddArray);
- }
- }
- if($hasFileUpload)
- {
- $idInputHtml = '<input type="hidden" name="'.$this->inputIdPrefix.$this->primaryKeyCol.'" value="'.htmlspecialchars(serialize($insertId)).'" />';
- $idInputHtml .= '<input type="hidden" name="'.$this->inputIdPrefix.'_mate_was_inserting_new_row" value="true" />';
- $this->retArr[] = array('where' => 'javascript', 'value' => '$(\''.$this->varPrefix.'_add_edit_form\').insert(\''.$idInputHtml.'\');');
- $this->retArr[] = array('where' => 'javascript', 'value' => 'submitFileUploadForm(\''.$this->varPrefix.'\');');
- }
- else
- {
- $this->updateHtml();
- }
- }
- }
-
- function addRow()
- {
- if(stristr($this->permissions,'A'))
- {
- $html = '';
- $rowHtml = '';
- $jsAddFun = 'addRow(\''.$this->varPrefix.'\');';
- $calJs = array();
- $formInfo = '';
- $iFrameHtml = '';
- $hasFileUpload = false;
- foreach($this->tableColumns as $col => $info)
- {
- if(stristr($info['perms'],'A') && !isset($info['join']['real_column']))
- {
- $defVal = isset($info['default']) ? $info['default'] : '';
- $inputInfo = isset($info['input_info']) ? $info['input_info'] : '';
- $inputHtml = '';
-
- if(isset($info['add_fun']) && is_callable($info['add_fun']))
- {
- $defVal = call_user_func($info['add_fun'],$col,$defVal,$inputInfo);
- }
- if(isset($info['format_input_fun']) && is_callable($info['format_input_fun']))
- {
- $inputHtml .= call_user_func($info['format_input_fun'],$col,$defVal,$inputInfo);
- }
- else if(isset($info['hidden_add']) && $info['hidden_add'])
- {
- $inputHtml .= '<input type="hidden" id="'.$this->inputIdPrefix.$col.'" value="'.htmlspecialchars($defVal).'" '.$inputInfo.' />';
- }
- else if(isset($info['select_query']))
- {
- $inputHtml .= $this->getSelect($info['select_query'],$this->inputIdPrefix.$col,$defVal,$inputInfo);
- }
- else if(isset($info['select_array']) && is_array($info['select_array']))
- {
- $inputHtml .= $this->getSelectFromArray($info['select_array'],$this->inputIdPrefix.$col,$defVal,$inputInfo);
- }
- else if(isset($info['textarea']))
- {
- $numRows = isset($info['textarea']['rows']) ? $info['textarea']['rows'] : 7;
- $numCols = isset($info['textarea']['cols']) ? $info['textarea']['cols'] : 25;
- $inputHtml .= '<textarea id="'.$this->inputIdPrefix.$col.'" rows="'.$numRows.'" cols="'.$numCols.'" value="'.htmlspecialchars($defVal).'" '.$inputInfo.' >'.htmlspecialchars($defVal).'</textarea>';
- }
- else if(isset($info['checkbox']))
- {
- $checkedValue = isset($info['checkbox']['checked_value']) ? $info['checkbox']['checked_value'] : '';
- $unCheckedValue = isset($info['checkbox']['un_checked_value']) ? $info['checkbox']['un_checked_value'] : '';
- $checked = $defVal == $checkedValue ? 'checked="checked"' : '';
- $inputHtml .= '<input type="checkbox" id="'.$this->inputIdPrefix.$col.'" value="'.$defVal.'" onclick="updateCheckBoxValue(this,\''.$checkedValue.'\',\''.$unCheckedValue.'\');" '.$checked.' '.$inputInfo.' />';
- }
- else if(isset($info['file_upload']) && is_array($info['file_upload']))
- {
- $inputHtml .= '<input type="file" name="'.$this->inputIdPrefix.$col.'" id="'.$this->inputIdPrefix.$col.'" '.$inputInfo.' />';
- $hasFileUpload = true;
- }
- else if(isset($info['join']) && is_array($info['join']))
- {
- $joinTable = !empty($info['join']['db']) ? $info['join']['db'].'.'.$info['join']['table'] : $info['join']['table'];
- $info['join']['display_mask'] = isset($info['join']['display_mask']) ? $info['join']['display_mask'] : $joinTable.'.'.$info['join']['column'];
- $selectQuery = 'select distinct('.$info['join']['column'].'), '.$info['join']['display_mask'].' from '.$joinTable.' order by '.$info['join']['display_mask'].' asc';
- $inputHtml .= $this->getSelect($selectQuery,$this->inputIdPrefix.$col,$defVal,$inputInfo);
- }
- else if(isset($info['calendar']))
- {
- $inputHtml .= '<span><input type="hidden" id="'.$this->inputIdPrefix.$col.'" value="'.htmlspecialchars($defVal).'" /></span>';
- }
- else
- {
- $maxLength = isset($info['maxlen']) ? 'maxlength="'.$info['maxlen'].'"' : '';
- $inputHtml .= '<input type="text" id="'.$this->inputIdPrefix.$col.'" value="'.htmlspecialchars($defVal).'" '.$maxLength.' onKeyPress="if(enterPressed(event)){'.$jsAddFun.' return false;}" '.$inputInfo.' />';
- }
- if(isset($info['hidden_add']) && $info['hidden_add'])
- {
- $rowHtml .= $inputHtml;
- }
- else
- {
- if(isset($info['req']) && $info['req'])
- {
- $inputHtml .= $this->reqMarker;
- }
- $rowHtml .= '<tr><td id="'.$col.'_label_cell" class="labelCell"><label for="'.$this->inputIdPrefix.$col.'">'.$info['display_text'].':</label></td><td id="'.$col.'_i…
Large files files are truncated, but you can click here to view the full file