From 70e810eb6833b18eeda7f55cbd39389084d9e4f0 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 15 Apr 2015 12:27:31 -0700 Subject: [PATCH] New $sql method max() and Admin-UI auto-incrementing on order fields during record creation. --- e107_handlers/admin_ui.php | 18 +++++++++++++++++- e107_handlers/mysql_class.php | 25 +++++++++++++++++++++++++ e107_plugins/faqs/admin_config.php | 25 +++++++++++++------------ 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/e107_handlers/admin_ui.php b/e107_handlers/admin_ui.php index 9eec9430e..94462695b 100644 --- a/e107_handlers/admin_ui.php +++ b/e107_handlers/admin_ui.php @@ -2278,6 +2278,8 @@ class e_admin_controller //FIXME - move everything from e_admin_ui except model auto-create related code class e_admin_controller_ui extends e_admin_controller { + + protected $table; /** * @var array UI field data */ @@ -3957,10 +3959,24 @@ class e_admin_controller_ui extends e_admin_controller } } + // $model->addMessageDebug(print_a($_posted,true)); + // $model->addMessageDebug(print_a($this,true)); + + // - Autoincrement sortField on 'Create'. + + if(($_posted['etrigger_submit'] == 'Create') && !empty($this->sortField) && empty($this->sortParent) && empty($_posted[$this->sortField]) ) + { + + $incVal = e107::getDb()->max($this->table, $this->sortField) + 1; + $_posted[$this->sortField] = $incVal; + // $model->addMessageInfo(print_a($_posted,true)); + } + // Trigger Admin-ui event. 'pre' if($triggerName = $this->getEventTriggerName($_posted['etrigger_submit'])) // 'create' or 'update'; { + $eventData = array('newData'=>$_posted,'oldData'=>$old_data,'id'=> $id); if(E107_DBG_ALLERRORS >0 ) { @@ -3976,7 +3992,7 @@ class e_admin_controller_ui extends e_admin_controller // Scenario I - use request owned POST data - toForm already executed - $model->setPostedData($_posted, null, false, false) + $model->setPostedData($_posted, null, false, false) // insert() or update() dbInsert(); ->save(true); diff --git a/e107_handlers/mysql_class.php b/e107_handlers/mysql_class.php index cdd01ba9b..b4c4ede23 100644 --- a/e107_handlers/mysql_class.php +++ b/e107_handlers/mysql_class.php @@ -1557,6 +1557,31 @@ class e_db_mysql return $list; } + + + + /** + * Return the maximum value for a given table/field + * @param $table (without the prefix) + * @param $field + * @param string $where (optional) + * @return bool|resource + */ + public function max($table, $field, $where='') + { + $qry = "SELECT MAX(".$field.") FROM `".$this->mySQLPrefix.$table."` "; + + if(!empty($where)) + { + $qry .= "WHERE ".$where; + } + + return $this->retrieve($qry); + + } + + + /** * @return integer * @desc returns total number of queries made so far diff --git a/e107_plugins/faqs/admin_config.php b/e107_plugins/faqs/admin_config.php index 2c67bc4d1..a910bffc9 100644 --- a/e107_plugins/faqs/admin_config.php +++ b/e107_plugins/faqs/admin_config.php @@ -194,23 +194,23 @@ class faq_main_ui extends e_admin_ui //TODO - finish 'user' type, set 'data' to all editable fields, set 'noedit' for all non-editable fields protected $fields = array( - 'checkboxes' => array('title'=> '', 'type' => null, 'width' =>'5%', 'forced'=> TRUE, 'thclass'=>'center', 'class'=>'center'), - 'faq_id' => array('title'=> LAN_ID, 'tab' => 0, 'type' => null, 'width' =>'5%', 'forced'=> TRUE), - 'faq_question' => array('title'=> LANA_FAQ_QUESTION, 'tab' => 0, 'type' => 'text', 'width' => 'auto', 'thclass' => 'left first', 'required'=>TRUE, 'readParms'=>'editable=1', 'writeParms'=>'size=block-level'), + 'checkboxes' => array('title'=> '', 'type' => null, 'width' =>'5%', 'forced'=> TRUE, 'thclass'=>'center', 'class'=>'center'), + 'faq_id' => array('title'=> LAN_ID, 'tab' => 0, 'type' => null, 'width' =>'5%', 'forced'=> TRUE), + 'faq_question' => array('title'=> LANA_FAQ_QUESTION, 'tab' => 0, 'type' => 'text', 'width' => 'auto', 'thclass' => 'left first', 'required'=>TRUE, 'readParms'=>'editable=1', 'writeParms'=>'size=block-level'), 'faq_answer' => array('title'=> LANA_FAQ_ANSWER, 'tab' => 0, 'type' => 'bbarea', 'width' => '30%', 'readParms' => 'expand=1&truncate=50&bb=1'), - 'faq_parent' => array('title'=> LAN_CATEGORY, 'tab' => 0, 'type' => 'dropdown', 'data'=> 'int', 'inline'=>true,'width' => '10%', 'filter'=>TRUE, 'batch'=>TRUE), + 'faq_parent' => array('title'=> LAN_CATEGORY, 'tab' => 0, 'type' => 'dropdown', 'data'=> 'int', 'inline'=>true,'width' => '10%', 'filter'=>TRUE, 'batch'=>TRUE), - 'faq_tags' => array('title'=> LANA_FAQ_TAGS, 'tab' => 1, 'type' => 'tags', 'data' => 'str', 'width' => 'auto', 'inline'=> true, 'help' => LANA_FAQ_TAGS_HELP), // User id - 'faq_comment' => array('title'=> LANA_FAQ_COMMENT, 'tab' => 1, 'type' => 'userclass', 'data' => 'int', 'width' => 'auto', 'inline'=> true), // User id + 'faq_tags' => array('title'=> LANA_FAQ_TAGS, 'tab' => 1, 'type' => 'tags', 'data' => 'str', 'width' => 'auto', 'inline'=> true, 'help' => LANA_FAQ_TAGS_HELP), // User id + 'faq_comment' => array('title'=> LANA_FAQ_COMMENT, 'tab' => 1, 'type' => 'userclass', 'data' => 'int', 'width' => 'auto', 'inline'=> true), // User id - 'faq_datestamp' => array('title'=> LAN_DATE, 'tab' => 1, 'type' => 'datestamp', 'data'=> 'int','width' => 'auto', 'noedit' => false,'writeParms'=>'auto=1'), - 'faq_author' => array('title'=> LAN_USER, 'tab' => 1, 'type' => 'user', 'data'=> 'int', 'width' => 'auto', 'thclass' => 'center', 'class'=>'center', 'writeParms' => 'currentInit=1', 'filter' => true, 'batch' => true, 'nolist' => true ), // Photo - 'faq_author_ip' => array('title'=> LAN_IP, 'tab' => 1, 'type' => 'ip', 'readonly'=>2, 'data'=> 'str', 'width' => 'auto', 'thclass' => 'center', 'class'=>'center', 'writeParms' => 'currentInit=1', 'filter' => true, 'batch' => true, 'nolist' => true ), // Photo + 'faq_datestamp' => array('title'=> LAN_DATE, 'tab' => 1, 'type' => 'datestamp', 'data'=> 'int','width' => 'auto', 'noedit' => false,'writeParms'=>'auto=1'), + 'faq_author' => array('title'=> LAN_USER, 'tab' => 1, 'type' => 'user', 'data'=> 'int', 'width' => 'auto', 'thclass' => 'center', 'class'=>'center', 'writeParms' => 'currentInit=1', 'filter' => true, 'batch' => true, 'nolist' => true ), // Photo + 'faq_author_ip' => array('title'=> LAN_IP, 'tab' => 1, 'type' => 'ip', 'readonly'=>2, 'data'=> 'str', 'width' => 'auto', 'thclass' => 'center', 'class'=>'center', 'writeParms' => 'currentInit=1', 'filter' => true, 'batch' => true, 'nolist' => true ), // Photo 'u.user_name' => array('title'=> LANA_FAQ_UNAME, 'tab' => 1, 'type' => 'user', 'width' => 'auto', 'noedit' => true, 'readParms'=>'idField=faq_author&link=1'), // User name 'u.user_loginname' => array('title'=> LANA_FAQ_ULOGINNAME, 'tab' => 1, 'type' => 'user', 'width' => 'auto', 'noedit' => true, 'readParms'=>'idField=faq_author&link=1'), // User login name - 'faq_order' => array('title'=> LAN_ORDER, 'tab' => 1, 'type' => 'number', 'data'=> 'int','width' => '5%', 'thclass' => 'center','nolist' => false, 'noedit'=>false, 'readParms'=>'editable=1'), - 'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'forced'=>TRUE, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center','readParms'=>'sort=1') + 'faq_order' => array('title'=> LAN_ORDER, 'tab' => 1, 'type' => 'number', 'data'=> 'int','width' => '5%', 'thclass' => 'center','nolist' => false, 'noedit'=>false, 'readParms'=>'editable=1'), + 'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'forced'=>TRUE, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center','readParms'=>'sort=1') ); protected $fieldpref = array('checkboxes', 'faq_question', 'faq_answer', 'faq_parent', 'faq_datestamp', 'options'); @@ -222,7 +222,8 @@ class faq_main_ui extends e_admin_ui 'submit_question' => array('title'=> LANA_FAQ_PREF_2, 'type'=>'userclass' ), 'submit_question_limit' => array('title'=> "'Ask a Question' limit per user", 'type'=>'number', 'data'=>'int', 'help'=>'0 = no limit'), 'classic_look' => array('title'=> LANA_FAQ_PREF_3, 'type'=>'boolean' ), - + 'list_type' => array('title'=> "List Type", 'type'=>'dropdown', 'writeParms'=>array('ul'=>'Unordered List', 'ol'=>'Ordered List') ), + 'page_title' => array('title'=> "Page Title", 'type'=>'text', 'help'=>'Leave blank to use default' ), ); protected $categories = array();