/WebsiteFiles/admin/bin/datagrid.class.php
PHP | 6309 lines | 5048 code | 314 blank | 947 comment | 1466 complexity | 52112b57467e489dc23be88a2b20fdd6 MD5 | raw file
Possible License(s): GPL-2.0
Large files files are truncated, but you can click here to view the full file
- <?php
- ################################################################################
- ## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- #
- ## --------------------------------------------------------------------------- #
- ## PHP DataGrid version 4.2.8 (01.10.2008) #
- ## Author & developer: Leumas Naypoka <leumas.a@gmail.com> #
- ## Developers: Zewa <http://www.softic.at> #
- ## Fcallez <http://www.innovavirtual.org> #
- ## Lisence: GNU GPL #
- ## Site: http://phpbuilder.blogspot.com #
- ## Copyright: Leumas Naypoka (c) 2006-2008. All rights reserved. #
- ## #
- ## Additional modules (embedded): #
- ## -- openWYSIWYG 1.01 (free cross-browser) http://openWebWare.com #
- ## -- PEAR::DB 1.7.11 (PHP Ext. & Application Repository) http://pear.php.net #
- ## -- JS AFV 1.0.3 (JS Auto From Validator) http://phpbuilder.blogspot.com #
- ## -- overLIB 4.21 (JS library) http://www.bosrup.com/web/overlib/ #
- ## -- FPDF v.1.53 (PDF files generator) http://www.fpdf.org #
- ## -- JsCalendar v.1.0 (DHTML/JavaScript Calendar) http://www.dynarch.com #
- ## -- AutoSuggest v.2.1.3 (AJAX autocomplete) http://www.brandspankingnew.net #
- ## #
- ################################################################################
- ## +---------------------------------------------------------------------------+
- ## | 1. Creating & Calling: |
- ## +---------------------------------------------------------------------------+
- ## *** define a relative (virtual) path to datagrid.class.php file and "pear"
- ## *** directory (relatively to the current file)
- ## *** RELATIVE PATH ONLY ***
- //
- // define ("DATAGRID_DIR", ""); /* Ex.: "datagrid/" */
- // define ("PEAR_DIR", "pear/"); /* Ex.: "datagrid/pear/" */
- //
- // require_once(DATAGRID_DIR.'datagrid.class.php');
- // require_once(PEAR_DIR.'PEAR.php');
- // require_once(PEAR_DIR.'DB.php');
- ##
- ## *** creating variables that we need for database connection
- // $DB_USER='name'; /* usually like this: prefix_name */
- // $DB_PASS=''; /* must be already enscrypted (recommended) */
- // $DB_HOST='localhost'; /* usually localhost */
- // $DB_NAME='dbName'; /* usually like this: prefix_dbName */
- //
- // ob_start();
- ## *** (example of ODBC connection string)
- ## *** $result_conn = $db_conn->connect(DB::parseDSN('odbc://root:12345@test_db'));
- ## *** (example of Oracle connection string)
- ## *** $result_conn = $db_conn->connect(DB::parseDSN('oci8://root:12345@localhost:1521/mydatabase));
- ## *** (example of PostgreSQL connection string)
- ## *** $result_conn = $db_conn->connect(DB::parseDSN('pgsql://root:12345@localhost/mydatabase));
- ## === (Examples of connections to other db types see in "docs/pear/" folder)
- // $db_conn = DB::factory('mysql'); /* don't forget to change on appropriate db type */
- // $result_conn = $db_conn->connect(DB::parseDSN('mysql://'.$DB_USER.':'.$DB_PASS.'@'.$DB_HOST.'/'.$DB_NAME));
- // if(DB::isError($result_conn)){ die($result_conn->getDebugInfo()); }
- ## *** put a primary key on the first place
- // $sql = "SELECT primary_key, field_1, field_2 ... FROM tableName ;";
- ## *** set needed options and create a new class instance
- // $debug_mode = false; /* display SQL statements while processing */
- // $messaging = true; /* display system messages on a screen */
- // $unique_prefix = "abc_"; /* prevent overlays - must be started with a letter */
- // $dgrid = new DataGrid($debug_mode, $messaging, $unique_prefix, DATAGRID_DIR);
- ## *** set encoding and collation (default: utf8/utf8_unicode_ci)
- /// $dg_encoding = "utf8";
- /// $dg_collation = "utf8_unicode_ci";
- /// $dgrid->SetEncoding($dg_encoding, $dg_collation);
- ## *** set data source with needed options
- // $default_order_field = "field_name_1 [, field_name_2...]";
- // $default_order_type = "ASC|DESC [, ASC|DESC...]";
- // $dgrid->DataSource($db_conn, $sql, $default_order_field, $default_order_type);
- ##
- ##
- ## +---------------------------------------------------------------------------+
- ## | 2. General Settings: |
- ## +---------------------------------------------------------------------------+
- ## *** set interface language (default - English)
- ## *** (en) - English (de) - German (se) - Swedish (hr) - Bosnian/Croatian
- ## *** (hu) - Hungarian (es) - Espanol (ca) - Catala (fr) - Francais
- ## *** (nl) - Netherlands/"Vlaams"(Flemish) (it) - Italiano (pl) - Polish
- ## *** (ch) - Chinese (sr) - Serbian (bg) - Bulgarian (pb) - Brazilian Portuguese
- ## *** (ar) - Arabic (tr) - Turkish (cz) - Czech (ro/ro_utf8) - Romanian
- ## *** (gk) - Greek (he) - Hebrew (ru_utf8) - Russian
- /// $dg_language = "en";
- /// $dgrid->SetInterfaceLang($dg_language);
- ## *** set direction: "ltr" or "rtr" (default - "ltr")
- /// $direction = "ltr";
- /// $dgrid->SetDirection($direction);
- ## *** set layouts: "0" - tabular(horizontal) - default, "1" - columnar(vertical), "2" - customized
- /// $layouts = array("view"=>"0", "edit"=>"1", "details"=>"1", "filter"=>"1");
- /// $dgrid->SetLayouts($layouts);
- /// $details_template = "<table><tr><td>{field_name_1}</td><td>{field_name_2}</td></tr>...</table>";
- /// $dgrid->SetTemplates("","",$details_template);
- ## *** set modes for operations ("type" => "link|button|image")
- ## *** "byFieldValue"=>"fieldName" - make the field to be a link to edit mode page
- /// $modes = array(
- /// "add" =>array("view"=>true, "edit"=>false, "type"=>"link", "show_add_button"=>"inside|outside"),
- /// "edit" =>array("view"=>true, "edit"=>true, "type"=>"link", "byFieldValue"=>""),
- /// "cancel" =>array("view"=>true, "edit"=>true, "type"=>"link"),
- /// "details" =>array("view"=>true, "edit"=>false, "type"=>"link"),
- /// "delete" =>array("view"=>true, "edit"=>true, "type"=>"image")
- /// );
- /// $dgrid->SetModes($modes);
- ## *** allow scrolling on datagrid
- /// $scrolling_option = false;
- /// $dgrid->AllowScrollingSettings($scrolling_option);
- ## *** set scrolling settings (optional)
- /// $scrolling_width = "90%";
- /// $scrolling_height = "100%";
- /// $dgrid->setScrollingSettings($scrolling_width, $scrolling_height);
- ## *** allow multirow operations
- // $multirow_option = true;
- // $dgrid->AllowMultirowOperations($multirow_option);
- /// $multirow_operations = array(
- /// "delete" => array("view"=>true),
- /// "details" => array("view"=>true),
- /// "my_operation_name" => array("view"=>true, "flag_name"=>"my_flag_name", "flag_value"=>"my_flag_value", "tooltip"=>"Do something with selected", "image"=>"image.gif")
- /// );
- /// $dgrid->SetMultirowOperations($multirow_operations);
- ## *** set CSS class for datagrid
- ## *** "default" or "blue" or "gray" or "green" or "pink" or your own css file
- /// $css_class = "default";
- /// $dgrid->SetCssClass($css_class);
- ## *** set variables that used to get access to the page (like: my_page.php?act=34&id=56 etc.)
- /// $http_get_vars = array("act", "id");
- /// $dgrid->SetHttpGetVars($http_get_vars);
- ## *** set other datagrid/s unique prefixes (if you use few datagrids on one page)
- ## *** format (in which mode to allow processing of another datagrids)
- ## *** array("unique_prefix"=>array("view"=>true|false, "edit"=>true|false, "details"=>true|false));
- /// $anotherDatagrids = array("abcd_"=>array("view"=>true, "edit"=>true, "details"=>true));
- /// $dgrid->SetAnotherDatagrids($anotherDatagrids);
- ## *** set DataGrid caption
- /// $dg_caption = "My Favorite Lovely PHP DataGrid";
- /// $dgrid->SetCaption($dg_caption);
- ##
- ##
- ## +---------------------------------------------------------------------------+
- ## | 3. Printing & Exporting Settings: |
- ## +---------------------------------------------------------------------------+
- ## *** set printing option: true(default) or false
- /// $printing_option = true;
- /// $dgrid->AllowPrinting($printing_option);
- ## *** set exporting option: true(default) or false and relative (virtual) path
- ## *** to export directory (relatively to datagrid.class.php file).
- ## *** Ex.: "" - if we use current datagrid folder
- /// $exporting_option = true;
- /// $exporting_directory = "";
- /// $dgrid->AllowExporting($exporting_option, $exporting_directory);
- /// $exporting_types = array("excel"=>"true", "pdf"=>"true", "xml"=>"true");
- /// $dgrid->AllowExportingTypes($exporting_types);
- ##
- ##
- ## +---------------------------------------------------------------------------+
- ## | 4. Sorting & Paging Settings: |
- ## +---------------------------------------------------------------------------+
- ## *** set sorting option: true(default) or false
- /// $sorting_option = true;
- /// $dgrid->AllowSorting($sorting_option);
- ## *** set paging option: true(default) or false
- /// $paging_option = true;
- /// $rows_numeration = false;
- /// $numeration_sign = "N #";
- /// $dgrid->AllowPaging($paging_option, $rows_numeration, $numeration_sign);
- ## *** set paging settings
- /// $bottom_paging = array("results"=>true, "results_align"=>"left", "pages"=>true, "pages_align"=>"center", "page_size"=>true, "page_size_align"=>"right");
- /// $top_paging = array("results"=>true, "results_align"=>"left", "pages"=>true, "pages_align"=>"center", "page_size"=>true, "page_size_align"=>"right");
- // $pages_array = array("10"=>"10", "25"=>"25", "50"=>"50", "100"=>"100", "250"=>"250", "500"=>"500", "1000"=>"1000");
- /// $default_page_size = 10;
- /// $paging_arrows = array("first"=>"|<<", "previous"=>"<<", "next"=>">>", "last"=>">>|");
- /// $dgrid->SetPagingSettings($bottom_paging, $top_paging, $pages_array, $default_page_size, $paging_arrows);
- ##
- ##
- ## +---------------------------------------------------------------------------+
- ## | 5. Filter Settings: |
- ## +---------------------------------------------------------------------------+
- ## *** set filtering option: true or false(default)
- /// $filtering_option = true;
- /// $show_search_type = true;
- /// $dgrid->AllowFiltering($filtering_option, $show_search_type);
- ## *** set aditional filtering settings
- ## *** tips: use "," (comma) if you want to make search by some words, for ex.: hello, bye, hi
- /// $fill_from_array = array("0"=>"No", "1"=>"Yes"); /* as "value"=>"option" */
- /// $filtering_fields = array(
- /// "Caption_1"=>array("type"=>"textbox", "table"=>"tableName_1", "field"=>"fieldName_1|,fieldName_2", "show_operator"=>"false", "default_operator"=>"=|<|>|like|%like|like%|%like%|not like", "case_sensitive"=>"false", "comparison_type"=>"string|numeric|binary", "width"=>"", "on_js_event"=>""),
- /// "Caption_2"=>array("type"=>"textbox", "autocomplete"=>"false", "handler"=>"modules/autosuggest/test.php", "maxresults"=>"12", "shownoresults"=>"false", "table"=>"tableName_1", "field"=>"fieldName_1|,fieldName_2", "show_operator"=>"false", "default_operator"=>"=|<|>|like|%like|like%|%like%|not like", "case_sensitive"=>"false", "comparison_type"=>"string|numeric|binary", "width"=>"", "on_js_event"=>""),
- /// "Caption_3"=>array("type"=>"dropdownlist", "order"=>"ASC|DESC", "table"=>"tableName_2", "field"=>"fieldName_2", "source"=>"self"|$fill_from_array, "show"=>"", "condition"=>"", "show_operator"=>"false", "default_operator"=>"=|<|>|like|%like|like%|%like%|not like", "case_sensitive"=>"false", "comparison_type"=>"string|numeric|binary", "width"=>"", "on_js_event"=>""),
- /// "Caption_4"=>array("type"=>"calendar", "table"=>"tableName_3", "field"=>"fieldName_3", "show_operator"=>"false", "default_operator"=>"=|<|>|like|%like|like%|%like%|not like", "case_sensitive"=>"false", "comparison_type"=>"string|numeric|binary", "width"=>"", "on_js_event"=>""),
- /// );
- /// $dgrid->SetFieldsFiltering($filtering_fields);
- ##
- ##
- ## +---------------------------------------------------------------------------+
- ## | 6. View Mode Settings: |
- ## +---------------------------------------------------------------------------+
- ## *** set view mode table properties
- /// $vm_table_properties = array("width"=>"90%");
- /// $dgrid->SetViewModeTableProperties($vm_table_properties);
- ## *** set columns in view mode
- ## *** Ex.: "on_js_event"=>"onclick='alert(\"Yes!!!\");'"
- ## *** "barchart" : number format in SELECT SQL must be equal with number format in max_value
- /// $fill_from_array = array("0"=>"Banned", "1"=>"Active", "2"=>"Closed", "3"=>"Removed"); /* as "value"=>"option" */
- /// $vm_colimns = array(
- /// "FieldName_1"=>array("header"=>"Name_A", "type"=>"label", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_2"=>array("header"=>"Name_B", "type"=>"image", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>"", "target_path"=>"uploads/", "default"=>"default_image.ext", "image_width"=>"50px", "image_height"=>"30px", "magnify"=>"false"),
- /// "FieldName_3"=>array("header"=>"Name_C", "type"=>"linktoview", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_4"=>array("header"=>"Name_D", "type"=>"linktoedit", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_5"=>array("header"=>"Name_E", "type"=>"linktodelete", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_6"=>array("header"=>"Name_F", "type"=>"link", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>"", "field_key"=>"field_name_0"|"field_key_1"=>"field_name_1"|..., "field_data"=>"field_name_2", "rel"=>"", "title"=>"", "target"=>"_new", "href"=>"{0}"),
- /// "FieldName_7"=>array("header"=>"Name_G", "type"=>"link", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>"", "field_key"=>"field_name_0"|"field_key_1"=>"field_name_1"|..., "field_data"=>"field_name_2", "rel"=>"", "title"=>"", "target"=>"_new", "href"=>"mailto:{0}"),
- /// "FieldName_8"=>array("header"=>"Name_H", "type"=>"link", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>"", "field_key"=>"field_name_0"|"field_key_1"=>"field_name_1"|..., "field_data"=>"field_name_2", "rel"=>"", "title"=>"", "target"=>"_new", "href"=>"http://mydomain.com?act={0}&act={1}&code=ABC"),
- /// "FieldName_9"=>array("header"=>"Name_I", "type"=>"money", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>"", "sign"=>"$", "decimal_places"=>"2", "dec_separator"=>".", "thousands_separator"=>","),
- /// "FieldName_10"=>array("header"=>"Name_J", "type"=>"password", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_11"=>array("header"=>"Name_K", "type"=>"barchart", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>"", "field"=>"field_name", "maximum_value"=>"value"),
- /// "FieldName_12"=>array("header"=>"Name_L", "type"=>"enum", "align"=>"left", "width"=>"X%|Xpx", "wrap"=>"wrap|nowrap", "text_length"=>"-1", "tooltip"=>"false", "tooltip_type"=>"floating|simple", "case"=>"normal|upper|lower|camel", "summarize"=>"false", "sort_type"=>"string|numeric", "sort_by"=>"", "visible"=>"true", "on_js_event"=>"", "source"=>$fill_from_array),
- /// );
- /// $dgrid->SetColumnsInViewMode($vm_colimns);
- ## *** set auto-genereted columns in view mode
- // $auto_column_in_view_mode = false;
- // $dgrid->SetAutoColumnsInViewMode($auto_column_in_view_mode);
- ##
- ##
- ## +---------------------------------------------------------------------------+
- ## | 7. Add/Edit/Details Mode Settings: |
- ## +---------------------------------------------------------------------------+
- ## *** set add/edit mode table properties
- /// $em_table_properties = array("width"=>"70%");
- /// $dgrid->SetEditModeTableProperties($em_table_properties);
- ## *** set details mode table properties
- /// $dm_table_properties = array("width"=>"70%");
- /// $dgrid->SetDetailsModeTableProperties($dm_table_properties);
- ## *** set settings for add/edit/details modes
- // $table_name = "table_name";
- // $primary_key = "primary_key";
- // $condition = "table_name.field = ".$_REQUEST['abc_rid'];
- // $dgrid->SetTableEdit($table_name, $primary_key, $condition);
- ## *** set columns in edit mode
- ## *** first letter: r - required, s - simple (not required)
- ## *** second letter: t - text(including datetime), n - numeric, a - alphanumeric,
- ## e - email, f - float, y - any, l - login name, z - zipcode,
- ## p - password, i - integer, v - verified, c - checkbox, u - URL
- ## *** third letter (optional):
- ## for numbers: s - signed, u - unsigned, p - positive, n - negative
- ## for strings: u - upper, l - lower, n - normal, y - any
- ## *** Ex.: "on_js_event"=>"onclick='alert(\"Yes!!!\");'"
- ## *** Ex.: type = textbox|textarea|label|date(yyyy-mm-dd)|datedmy(dd-mm-yyyy)|datetime(yyyy-mm-dd hh:mm:ss)|datetimedmy(dd-mm-yyyy hh:mm:ss)|time(hh:mm:ss)|image|password|enum|print|checkbox
- ## *** make sure your WYSIWYG dir has 777 permissions
- /// $fill_from_array = array("0"=>"No", "1"=>"Yes", "2"=>"Don't know", "3"=>"My be"); /* as "value"=>"option" */
- /// $em_columns = array(
- /// "FieldName_1" =>array("header"=>"Name_A", "type"=>"textbox", "req_type"=>"rt", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_2" =>array("header"=>"Name_B", "type"=>"textarea", "req_type"=>"rt", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "edit_type"=>"simple|wysiwyg", "resizable"=>"false", "rows"=>"7", "cols"=>"50"),
- /// "FieldName_3" =>array("header"=>"Name_C", "type"=>"label", "req_type"=>"rt", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_4" =>array("header"=>"Name_D", "type"=>"date", "req_type"=>"rt", "width"=>"187px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "calendar_type"=>"popup|floating"),
- /// "FieldName_5" =>array("header"=>"Name_E", "type"=>"datetime", "req_type"=>"st", "width"=>"187px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "calendar_type"=>"popup|floating"),
- /// "FieldName_6" =>array("header"=>"Name_F", "type"=>"time", "req_type"=>"st", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_7" =>array("header"=>"Name_G", "type"=>"image", "req_type"=>"st", "width"=>"220px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "target_path"=>"uploads/", "max_file_size"=>"100000|100K|10M|1G", "image_width"=>"120px", "image_height"=>"90px", "magnify"=>"false", "file_name"=>"", "host"=>"local|remote"),
- /// "FieldName_8" =>array("header"=>"Name_H", "type"=>"password", "req_type"=>"rp", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_9" =>array("header"=>"Name_I", "type"=>"enum", "req_type"=>"st", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "source"=>"self"|$fill_from_array, "view_type"=>"dropdownlist(default)|radiobutton", "radiobuttons_alignment"=>"horizontal|vertical", "multiple"=>"false", "multiple_size"=>"4"),
- /// "FieldName_10" =>array("header"=>"Name_J", "type"=>"print", "req_type"=>"st", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>""),
- /// "FieldName_11" =>array("header"=>"Name_K", "type"=>"checkbox", "req_type"=>"st", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "true_value"=>1, "false_value"=>0),
- /// "FieldName_12" =>array("header"=>"Name_L", "type"=>"file", "req_type"=>"st", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "target_path"=>"uploads/", "max_file_size"=>"100000|100K|10M|1G", "file_name"=>"File_Name", "host"=>"local|remote"),
- /// "FieldName_13" =>array("header"=>"Name_M", "type"=>"link", "req_type"=>"st", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true", "on_js_event"=>"", "field_key"=>"field_name_0"|"field_key_1"=>"field_name_1"|..., "field_data"=>"field_name_2", "target"=>"_new", "href"=>"http://mydomain.com?act={0}&act={1}&code=ABC"),
- /// "FieldName_14" =>array("header"=>"Name_N", "type"=>"foreign_key","req_type"=>"ri", "width"=>"210px", "title"=>"", "readonly"=>"false", "default"=>"", "unique"=>"false", "unique_condition"=>"", "visible"=>"true"),
- /// "FieldName_15" =>array("header"=>"", "type"=>"hidden", "req_type"=>"st", "default"=>"default_value", "visible"=>"true", "unique"=>"false"),
- /// "validator" =>array("header"=>"Name_O", "type"=>"validator", "req_type"=>"rv", "width"=>"210px", "title"=>"", "readonly"=>"false", "maxlength"=>"-1", "default"=>"", "visible"=>"true", "on_js_event"=>"", "for_field"=>"", "validation_type"=>"password|email"),
- /// "delimiter" =>array("inner_html"=>"<br>"),
- /// );
- /// $dgrid->SetColumnsInEditMode($em_columns);
- ## *** set auto-genereted columns in edit mode
- // $auto_column_in_edit_mode = false;
- // $dgrid->SetAutoColumnsInEditMode($auto_column_in_edit_mode);
- ## *** set foreign keys for add/edit/details modes (if there are linked tables)
- ## *** Ex.: "field_name"=>"CONCAT(field1,','field2) as field3"
- ## *** Ex.: "condition"=>"TableName_1.FieldName > 'a' AND TableName_1.FieldName < 'c'"
- ## *** Ex.: "on_js_event"=>"onclick='alert(\"Yes!!!\");'"
- /// $foreign_keys = array(
- /// "ForeignKey_1"=>array("table"=>"TableName_1", "field_key"=>"FieldKey_1", "field_name"=>"FieldName_1", "view_type"=>"dropdownlist(default)|radiobutton|textbox", "radiobuttons_alignment"=>"horizontal|vertical", "condition"=>"", "order_by_field"=>"", "order_type"=>"ASC|DESC", "on_js_event"=>""),
- /// "ForeignKey_2"=>array("table"=>"TableName_2", "field_key"=>"FieldKey_2", "field_name"=>"FieldName_2", "view_type"=>"dropdownlist(default)|radiobutton|textbox", "radiobuttons_alignment"=>"horizontal|vertical", "condition"=>"", "order_by_field"=>"", "order_type"=>"ASC|DESC", "on_js_event"=>"")
- /// );
- /// $dgrid->SetForeignKeysEdit($foreign_keys);
- ##
- ##
- ## +---------------------------------------------------------------------------+
- ## | 8. Bind the DataGrid: |
- ## +---------------------------------------------------------------------------+
- ## *** bind the DataGrid and draw it on the screen
- // $dgrid->WriteCssClass(); /* call of this method between HTML <HEAD> elements */
- // $dgrid->Bind();
- // ob_end_flush();
- ##
- ################################################################################
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Not documented:
- // -----------------------------------------------------------------------------
- // Property : first_field_focus_allowed = true|false;
- // --//-- : hide_grid_before_serach = true|false; /* put it before Bind() method */
- // --//-- : "pre_addition" => "" and "post_addition"=>"" attributes in view mode for labels and in add/edit/details modes for textboxes, checkboxes
- // --//-- : "autocomplete" => "on|off" attribute for textboxes in add/edit modes (default - "on")
- // --//-- : mode_after_update = ""|"edit";
- // --//-- : "on_item_created" => "function_name" attributes in view/add/edit/details modes for customized work with field value.
- // This function must be defined with 1 parameter, that will get fild's data.
- // Ex.: function function_name($field_value){ ... return $new_field_value;}
- // --//-- : NoDataFoundText = ""; displays a text on empty dataset
- //
- // Method : ExecuteSQL()
- // use it after DataSource() method only (after the using DataSource() need to be recalled)
- // $dSet = $dgrid->ExecuteSQL("SELECT * FROM tblPresidents WHERE tblPresidents.CountryID = ".$_GET['f_rid']."");
- // while($row = $dSet->fetchRow()){
- // for($c = 0; ($c < $dSet->numCols()); $c++){ echo $row[$c]." "; }
- // echo "<br>";
- // }
- // --//-- : SelectSqlItem()
- // $presidents = $dgrid->SelectSqlItem("SELECT COUNT(tblPresidents.presidentID) FROM tblPresidents WHERE tblPresidents.CountryID = ".$_GET['f_rid']."");
- // --//-- : AllowHighlighting(true|false);
- // --//-- : SetJsErrorsDisplayStyle("all"|"each");
- // --//-- : GetNextId();
- // --//-- : GetCurrentId();
- // --//-- : SetHeadersInColumnarLayout("Field Name", "Field Value");
- // --//-- : SetDgMessages("add", "update", "delete");
- //
- // Feature : onSubmitMyCheck
- // <script type='text/javascript'>
- // function unique_prefix_onSubmitMyCheck(){
- // return true;
- // }
- // </script>
- // --//-- : "on_js_event"=>"onchange='formAction(\"\", \"\", \"".$dgrid->uniquePrefix."\", \"".$dgrid->HTTP_URL."\", \"".$_SERVER['QUERY_STRING']."\")'"
- // --//-- : Bind(true|false) - draw DataGrid on the screen on not
- //
- ////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Tricks:
- // -----------------------------------------------------------------------------
- // 1. Set default value, that disappears on focus:
- // "default"=>"http://www.website.com", "on_js_event"=>"onBlur='if(this.value == \"\") this.value = \"http://www.website.com\"; this.style.color=\"#f68d6f\";' onClick='if(this.value==\"http://www.website.com\") this.value=\"\"; this.style.color=\"#000000\";'",
- //
- // 2. Set uniquie value for uploading image:
- // a) "file_name"=>"img_".((isset($_GET['prfx_mode']) && ($_GET['prfx_mode'] == "add")) ? $dgrid->GetNextId() : $dgrid->GetCurrentId())
- // b) "file_name"=>"img_".((isset($_GET['prfx_mode']) && ($_GET['prfx_mode'] == "add")) ? $dgrid->GetRandomString("10") : $dgrid->GetCurrentId())
- //
- // 3. Make auto-submition for filtering fileds:
- // "on_js_event"=>"onchange='document.getElementById(\"...prefix..._ff_onSUBMIT_FILTER\").click();'"
- //
- // 4. Make a field text colored according to condition (in SQL statement):
- // if (product='flooring', CONCAT('<SPAN style=\"background-color:yellow\">',product,'</SPAN>'),product) as ProductColored,
- //
- // 5. Change the field's data on fly (for "on_item_created" field's attribute):
- // function setColor($field_value){
- // if(strlen($field_value) > 5){
- // return "<font color='red'>".$field_value."</font>";
- // }else{
- // return "<font color='blue'>".$field_value."</font>";
- // }
- // }
- //
- // 6. Change the field's type on fly (for "on_item_created" field's attribute):
- // function setColor($field_value, $field_property_type){
- // if(strlen($field_value) > 5){
- // return "<font color='red'>".$field_value."</font>";
- // }else{
- // $field_property_type = "linktoview";
- // return "<font color='blue'>".$field_value."</font>";
- // }
- // }
- //
- // 8. Customized filtering: write filter field with empty table name and field: (..."table"=>"", "field"=>"xxx",...)
- // Then use $my_field = isset($_GET['prefix__ff__xxx']) ? $_GET['prefix__ff__xxx'] : "";
- // Use $my_field in SQL SELECT for your own filtering
- //
- ////////////////////////////////////////////////////////////////////////////////
- Class DataGrid
- {
- //==========================================================================
- // Data Members
- //==========================================================================
- // unique prefixes ---------------------------------------------------------
- public $uniquePrefix;
- public $unique_random_prefix;
- // directory ---------------------------------------------------------------
- public $directory;
- // language ----------------------------------------------------------------
- public $lang_name;
- public $lang;
- // caption -----------------------------------------------------------------
- public $caption;
- // rows and columns data members -------------------------------------------
- public $rows;
- public $row_lower;
- public $row_upper;
- public $columns;
- public $col_lower;
- public $col_upper;
- // http get vars -----------------------------------------------------------
- public $http;
- public $port;
- public $server_name;
- public $HTTP_URL;
- public $http_get_vars;
- public $another_datagrids;
- // data source -------------------------------------------------------------
- public $db_handler;
- public $sql;
- public $sql_view;
- public $sql_group_by;
- public $data_set;
-
- // signs -------------------------------------------------------------------
- public $amp;
- public $nbsp;
-
- // encoding & direction ----------------------------------------------------
- public $encoding;
- public $collation;
- public $direction;
- // layout style ------------------------------------------------------------
- public $layouts;
- public $layout_type;
- // templates ---------------------------------------------------------------
- public $templates;
-
- // paging variables --------------------------------------------------------
- public $pages_total;
- public $page_current;
- public $default_page_size;
- public $req_page_size;
- public $paging_allowed;
- public $rows_numeration;
- public $numeration_sign;
- public $lower_paging;
- public $upper_paging;
- public $pages_array;
- public $first_arrow;
- public $previous_arrow;
- public $next_arrow;
- public $last_arrow;
- public $limit_start;
- public $limit_size;
- public $rows_total;
- // sorting variables -------------------------------------------------------
- public $sort_field;
- public $sort_type;
- public $default_sort_field;
- public $default_sort_type;
- public $sorting_allowed;
- public $sql_sort;
- // filtering variables -----------------------------------------------------
- public $filtering_allowed;
- public $show_search_type;
- public $filter_fields;
- public $hide_display;
- // columns style parameters ------------------------------------------------
- public $wrap;
- // css style ---------------------------------------------------------------
- public $row_highlighting_allowed;
- public $css_class;
- public $rowColor;
- protected $is_css_class_written;
- // table style parameters --------------------------------------------------
- public $tblAlign;
- public $tblWidth;
- public $tblBorder;
- public $tblBorderColor;
- public $tblCellSpacing;
- public $tblCellPadding;
-
- // datagrid modes ----------------------------------------------------------
- public $modes;
- public $mode_after_update;
- public $mode;
- protected $rid;
- public $rids;
- public $tbl_name;
- public $primary_key;
- public $condition;
- public $foreign_keys_array;
- public $columns_view_mode;
- public $columns_edit_mode;
- public $sorted_columns;
- // printing & exporting ----------------------------------------------------
- public $printing_allowed;
- public $exporting_allowed;
- public $exporting_directory;
- protected $exporting_types;
- // debug mode --------------------------------------------------------------
- public $debug;
- public $start_time;
- public $end_time;
- // message -----------------------------------------------------------------
- public $act_msg;
- public $messaging;
- public $is_error;
- public $errors;
- public $is_warning;
- public $warnings;
- public $dg_messages;
- public $NoDataFoundText;
- // browser & system types --------------------------------------------------
- public $platform;
- public $browser_name;
- public $browser_version;
-
- // scrolling ---------------------------------------------------------------
- public $scrolling_option;
- public $scrolling_width;
- public $scrolling_height;
- // header names ------------------------------------------------------------
- public $field_header;
- public $field_value_header;
- // hide --------------------------------------------------------------------
- public $hide_grid_before_serach;
- // summarize ---------------------------------------------------------------
- public $summarize_columns;
-
- // multirow ----------------------------------------------------------------
- public $multirow_allowed;
- public $multi_rows;
- public $multirow_operations_array;
- // first field focus -------------------------------------------------------
- public $first_field_focus_allowed;
- // javascript errors display style -----------------------------------------
- public $js_validation_errors;
-
- //==========================================================================
- // PUBLIC MEMBER FUNCTIONS
- //==========================================================================
- //--------------------------------------------------------------------------
- // Default class constructor
- //--------------------------------------------------------------------------
- function __construct($debug_mode = false, $messaging = true, $unique_prefix = "", $datagrid_dir = "datagrid/"){
- $this->debug = (($debug_mode == true) || ($debug_mode == "true")) ? true : false ;
-
- // start calculating running time of a script
- $this->start_time = 0;
- $this->end_time = 0;
- if($this->debug){
- $this->start_time = $this->GetFormattedMicrotime();
- }
- // unique prefixes -----------------------------------------------------
- $this->SetUniquePrefix($unique_prefix);
-
- // directory -----------------------------------------------------------
- $this->directory = $datagrid_dir;
- // language ------------------------------------------------------------
- $this->lang_name = "en";
- $this->lang = array();
- $this->lang['total'] = "Total";
- $this->lang['wrong_parameter_error'] = "Wrong parameter in [<b>_FIELD_</b>]: _VALUE_";
- // caption -------------------------------------------------------------
- $this->caption = "";
- // rows and columns data members ---------------------------------------
- $this->http = $this->GetProtocol();
- $this->port = $this->GetPort();
- $this->server_name = $this->GetServerName();
- $this->HTTP_URL = str_replace("///", "//", $this->http.$this->server_name.$this->port.$_SERVER['PHP_SELF']);
- // http get vars -------------------------------------------------------
- $this->http_get_vars = "";
- $this->another_datagrids = "";
- // css style ----------------------------------------------------------
- $this->row_highlighting_allowed = true;
- $this->css_class = "default";
- $this->rowColor = array();
- $this->is_css_class_written = false;
- // signs ---------------------------------------------------------------
- $this->amp = "&";
- $this->nbsp = ""; //
-
- $this->rows = 0;
- $this->row_lower = 0;
- $this->row_upper = 0;
- $this->columns = 0;
- $this->col_lower = 0;
- $this->col_upper = 0;
- // encoding & direction ------------------------------------------------
- $this->encoding = "utf8";
- $this->collation = "utf8_unicode_ci";
- $this->direction = "ltr";
-
- $this->layouts['view'] = "0";
- $this->layouts['edit'] = "1";
- $this->layouts['filter'] = "1";
- $this->layouts['show'] = "1";
- $this->layout_type = "view";
-
- // templates -----------------------------------------------------------
- $this->templates['view'] = "";
- $this->templates['edit'] = "";
- $this->templates['show'] = "";
-
- $this->pages_total = 0;
- $this->page_current = 0;
- $this->pages_array = array("10"=>"10", "25"=>"25", "50"=>"50", "100"=>"100", "250"=>"250", "500"=>"500", "1000"=>"1000");
- $this->first_arrow = "|<<";
- $this->previous_arrow = "<<";
- $this->next_arrow = ">>";
- $this->last_arrow = ">>|";
- $this->default_page_size = 10;
- $this->req_page_size = 10;
- $this->paging_allowed = true;
- $this->rows_numeration = false;
- $this->numeration_sign = "N #";
- $this->lower_paging['results'] = false;
- $this->lower_paging['results_align'] = "left";
- $this->lower_paging['pages'] = false;
- $this->lower_paging['pages_align'] = "center";
- $this->lower_paging['page_size'] = false;
- $this->lower_paging['page_size_align'] = "right";
- $this->upper_paging['results'] = false;
- $this->upper_paging['results_align'] = "left";
- $this->upper_paging['pages'] = false;
- $this->upper_paging['pages_align'] = "center";
- $this->upper_paging['page_size'] = false;
- $this->upper_paging['page_size_align'] = "right";
- $this->limit_start = 0;
- $this->limit_size = $this->req_page_size;
- $this->rows_total = 0;
-
- $this->sort_field = "";
- $this->sort_field_by = "";
- $this->sort_field_type = "";
- $this->sort_type = "";
- $this->default_sort_field = array();
- $this->default_sort_type = array();
- $this->sorting_allowed = true;
- $this->sql_view = "";
- $this->sql_group_by = "";
- $this->sql = "";
- $this->sql_sort = "";
-
- $this->filtering_allowed = false;
- $this->show_search_type = true;
- $this->filter_fields = array();
- $this->hide_display = "";
-
- $this->tblAlign['view'] = "center"; $this->tblAlign['edit'] = "center"; $this->tblAlign['details'] = "center";
- $this->tblWidth['view'] = "90%"; $this->tblWidth['edit'] = "70%"; $this->tblWidth['details'] = "60%";
- $this->tblBorder['view'] = "1"; $this->tblBorder['edit'] = "1"; $this->tblBorder['details'] = "1";
- $this->tblBorderColor['view'] = "#000000"; $this->tblBorderColor['edit'] = "#000000"; $this->tblBorderColor['details'] = "#000000";
- $this->tblCellSpacing['view'] = "0"; $this->tblCellSpacing['edit'] = "0"; $this->tblCellSpacing['details'] = "0";
- $this->tblCellPadding['view'] = "0"; $this->tblCellPadding['edit'] = "0"; $this->tblCellPadding['details'] = "0";
-
- // datagrid modes ------------------------------------------------------
- $this->modes["add"] = array("view"=>true, "edit"=>false, "type"=>"link", "show_add_button"=>"inside");
- $this->modes["edit"] = array("view"=>true, "edit"=>true, "type"=>"link", "byFieldValue"=>"");
- $this->modes["cancel"] = array("view"=>true, "edit"=>true, "type"=>"link");
- $this->modes["details"] = array("view"=>true, "edit"=>false, "type"=>"link");
- $this->modes["delete"] = array("view"=>true, "edit"=>true, "type"=>"image");
- $this->mode = "view";
- $this->mode_after_update = "";
- $this->rid = "";
- $this->rids = "";
- $this->tbl_name ="";
- $this->primary_key = 0;
- $this->condition = "";
- $this->foreign_keys_array = array();
-
- $this->columns_view_mode = array();
- $this->columns_edit_mode = array();
- $this->sorted_columns = array();
-
- $this->printing_allowed = true;
- $this->exporting_allowed = false;
- $this->exporting_directory = "";
- $this->exporting_types = array("excel"=>"true", "pdf"=>"true", "xml"=>"true");
-
- $this->wrap = "wrap";
- // scrolling -----------------------------------------------------------
- $this->scrolling_option = false;
- $this->scrolling_width = "90%";
- $this->scrolling_height = "100%";
- // header names --------------------------------------------------------
- $this->field_header = "";
- $this->field_value_header = "";
- // hide ----------------------------------------------------------------
- $this->hide_grid_before_serach = false;
-
- $this->summarize_columns = array();
-
- $this->multirow_allowed = false;
- $this->multi_rows = 0;
- $this->multirow_operations_array = array();
- $this->multirow_operations_array['delete'] = array("view"=>true);
- $this->multirow_operations_array['details'] = array("view"=>true);
- $this->first_field_focus_allowed = false;
- // message -------------------------------------------------------------
- $this->act_msg = "";
- if($this->debug) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
- $this->messaging = (($messaging == true) || ($messaging == "true")) ? true : false ;
- $this->is_error = false;
- $this->errors = array();
- $this->is_warning = false;
- $this->warnings = array();
- $this->dg_messages = array();
- $this->dg_messages['add'] = "";
- $this->dg_messages['update'] = "";
- $this->dg_messages['delete'] = "";
- // javascript errors display style -------------------------------------
- $this->js_validation_errors = "true";
- // set browser definitions
- $this->SetBrowserDefinitions();
- }
- //--------------------------------------------------------------------------
- // Class destructor
- //--------------------------------------------------------------------------
- function __destruct()
- {
- // echo 'this object has been destroyed';
- }
- //--------------------------------------------------------------------------
- // Set encoding
- //--------------------------------------------------------------------------
- function SetEncoding($dg_encoding = "", $dg_collation = ""){
- $this->encoding = ($dg_encoding != "") ? $dg_encoding : $this->encoding;
- $this->collation = ($dg_collation != "") ? $dg_collation : $this->collation;
- }
- //--------------------------------------------------------------------------
- // Set data source
- //--------------------------------------------------------------------------
- function DataSource($db_handl, $sql = "", $start_order = "", $start_order_type = ""){
- // clear sql statment
- $sql = str_replace("\n", " ", $sql); // new row
- $sql = str_replace("\t", " ", $sql); // tabulation
- $sql = str_replace(chr(13), " ", $sql); // CR sign
- $sql = str_replace(chr(10), " ", $sql); // LF sign
- $sql = str_replace(";", "", $sql);
-
- // get preliminary Primary Key
- $p_key = explode(" ", $sql);
- $p_key = str_replace(",", "", $p_key[1]);
- $p_key = explode(".", $p_key);
- $this->primary_key = $p_key[count($p_key)-1];
-
- $req_sort_field = $this->GetVariable('sort_field');
- $req_sort_field_by = $this->GetVariable('sort_field_by');
- $req_sort_field_type = $this->GetVariable('sort_field_type');
- $sort_field = ($req_sort_field_by != "") ? $req_sort_field_by : $req_sort_field ;
- $req_sort_type = $this->GetVariable('sort_type');
- $this->db_handler = $db_handl;
- $this->db_handler->setFetchMode(DB_FETCHMODE_ORDERED);
- $numeric_sort = false;
- // handle SELECT SQL statement
- $this->sql_view = $sql;
- if($this->LastSubStrOccurence($this->sql_view, "from ") < $this->LastSubStrOccurence($this->sql_view, "where ")){
- // handle SELECT statment with sub-SELECTs and SELECT without WHERE
- $ind = strpos(strtolower($this->sql_view), "group by");
- if($ind){
- $prefix = substr($sql, 0, $ind);
- $suffix = substr($sql, $ind);
- $this->sql_view = $prefix." ";
- $this->sql_group_by = $suffix;
- }else{
- $this->sql_view .= " WHERE 1=1 ";
- }
- }else if($this->LastSubStrOccurence($this->sql_view, "where ") == ""){
- $this->sql_view .= " WHERE 1=1 ";
- }else{
- $ind = strpos(strtolower($this->sql_view), "group by");
- if($ind){
- $prefix = substr($sql, 0, $ind);
- $suffix = substr($sql, $ind);
- $this->sql_view = $prefix." ";
- $this->sql_group_by = $suffix;
- }
- }
- $this->sql = $this->sql_view.$this->sql_group_by;
-
- // set default order
- if($start_order != ""){
- $default_sort_field = explode(",", $start_order);
- $default_sort_type = explode(",", $start_order_type);
- for($ind=0; $ind < count($default_sort_field); $ind++){
- $this->default_sort_field[$ind] = trim($default_sort_field[$ind]);
- if(isset($default_sort_type[$ind])){
- if((strtolower(trim($default_sort_type[$ind])) == "asc") || (strtolower(trim($default_sort_type[$ind])) == "desc")){
- $this->default_sort_type[$ind] = trim($default_sort_type[$ind]);
- …
Large files files are truncated, but you can click here to view the full file