Luke Hickton Posted August 2, 2019 Share Posted August 2, 2019 Good Evening all, I was wondering if someone with some expert knowledge of php coding and blocks on Invision could assist me. I want to create an invision block for the Pages that takes information from the perscom_personnel table where the number within the personnel_administrative_unit_positions column is equal to X (basically, if they are a member of a specific administrative position, list their name). I then want to show the soldiers full rank, first name, surname ad extract the ID so that I can provide a link to that person. Example Anyone within our OACO group (group ID: 22) it will show: Rank FirstName Surname *Button to PM on forum* Rank FirstName Surname *Button to PM on forum* Is this something that is possible? Quote Link to comment Share on other sites More sharing options...
Administrators Jon Erickson Posted August 6, 2019 Administrators Share Posted August 6, 2019 Totally doable! We’ll see if someone here can assist...if not I’ll provide some code soon. Quote Owner Deschutes Design Group LLC email | jon@deschutesdesigngroup.com Link to comment Share on other sites More sharing options...
Luke Hickton Posted August 6, 2019 Author Share Posted August 6, 2019 Many thanks Jon! Quote Link to comment Share on other sites More sharing options...
Administrators Jon Erickson Posted August 6, 2019 Administrators Share Posted August 6, 2019 Using a function from our Soldier class roots(): /** * Fetch All Root Nodes * * @param string|NULL $permissionCheck The permission key to check for or NULl to not check permissions * @param \IPS\Member|NULL $member The member to check permissions for or NULL for the currently logged in member * @param mixed $where Additional WHERE clause * @param bool $includeDischarged If you want to include discharged personnel in the returned array * @return array */ public static function roots( $permissionCheck='view', $member=NULL, $where=array(), $includeDischarged=FALSE ) { // Get all the soldiers $soldiers = parent::roots( $permissionCheck, $member, $where, $includeDischarged ); // Get saved discharged and combat unit soldiers $status = \IPS\Settings::i()->perscom_settings_personnel_discharge_status; $unit = \IPS\Settings::i()->perscom_settings_personnel_discharge_unit; // Remove the ones where their status or unit matches the discharge status return array_filter( $soldiers, function( $soldier ) use ( $status, $unit ){ return $soldier->combat_unit->_id == $unit OR $soldier->status->_id == $status ? FALSE : TRUE; } ); } For straight up PHP: $position = INSERT_POSITION_ID_HERE; foreach ( \IPS\perscom\Personnel\Soldier::roots( 'view', NULL, array( array( \IPS\Db::i()->findInSet( 'personnel_administrative_unit_positions', array( $position ) ) ) ) as $soldier ) { // List each soldier echo $soldier->_title; } Using IPB template syntax: {{$position = INSERT_POSITION_ID_HERE;}} {{foreach \IPS\perscom\Personnel\Soldier::roots( 'view', NULL, array( array( \IPS\Db::i()->findInSet( 'personnel_administrative_unit_positions', array( $position ) ) ) ) as $soldier}} {$soldier->_title} {{endforeach}} I have no actually plugged this in to make sure there's no syntax errors, but I use the same queries within the application, specifically on the administrative frontend rosters. Quote Owner Deschutes Design Group LLC email | jon@deschutesdesigngroup.com Link to comment Share on other sites More sharing options...
Luke Hickton Posted August 8, 2019 Author Share Posted August 8, 2019 Hi Jon, thanks for the assistance, apologies for the lateness, we've just transferred all our data to IPS and changed host all in one night lol. I've tried both of these in a PHP Custom Block, error messages below: Straight up PHP: ParseError: syntax error, unexpected 'as' (T_AS), expecting ',' or ')' (0) #0 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/FormAbstract.php(377): IPS\cms\Blocks\_Block->IPS\cms\Blocks\{closure}('$position = 22;...') #1 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/TextArea.php(119): IPS\Helpers\Form\_FormAbstract->validate() #2 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/FormAbstract.php(165): IPS\Helpers\Form\_TextArea->validate() #3 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/FormAbstract.php(142): IPS\Helpers\Form\_FormAbstract->setValue(true) #4 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/TextArea.php(66): IPS\Helpers\Form\_FormAbstract->__construct('block_content', '', false, Array, Object(Closure), NULL, NULL, 'block_content') #5 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/Codemirror.php(68): IPS\Helpers\Form\_TextArea->__construct('block_content', '', false, Array, Object(Closure), NULL, NULL, 'block_content') #6 /home/sites/6b/5/5faa0124ea/public_html/applications/cms/sources/Blocks/Block.php(668): IPS\Helpers\Form\_Codemirror->__construct('block_content', '', false, Array, Object(Closure), NULL, NULL, 'block_content') #7 /home/sites/6b/5/5faa0124ea/public_html/system/Node/Controller.php(489): IPS\cms\Blocks\_Block->form(Object(IPS\Helpers\Form)) #8 /home/sites/6b/5/5faa0124ea/public_html/system/Node/Controller.php(388): IPS\Node\_Controller->_addEditForm(Object(IPS\cms\Blocks\Block)) #9 /home/sites/6b/5/5faa0124ea/public_html/system/Dispatcher/Controller.php(85): IPS\Node\_Controller->form() #10 /home/sites/6b/5/5faa0124ea/public_html/system/Node/Controller.php(62): IPS\Dispatcher\_Controller->execute() #11 /home/sites/6b/5/5faa0124ea/public_html/applications/cms/modules/admin/pages/blocks.php(39): IPS\Node\_Controller->execute() #12 /home/sites/6b/5/5faa0124ea/public_html/system/Dispatcher/Dispatcher.php(152): IPS\cms\modules\admin\pages\_blocks->execute() #13 /home/sites/6b/5/5faa0124ea/public_html/admin/index.php(14): IPS\_Dispatcher->run() #14 {main} IPS Syntax: ParseError: syntax error, unexpected '\' (T_NS_SEPARATOR), expecting '(' (0) #0 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/FormAbstract.php(377): IPS\cms\Blocks\_Block->IPS\cms\Blocks\{closure}('{{$position = 2...') #1 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/TextArea.php(119): IPS\Helpers\Form\_FormAbstract->validate() #2 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/FormAbstract.php(165): IPS\Helpers\Form\_TextArea->validate() #3 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/FormAbstract.php(142): IPS\Helpers\Form\_FormAbstract->setValue(true) #4 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/TextArea.php(66): IPS\Helpers\Form\_FormAbstract->__construct('block_content', '', false, Array, Object(Closure), NULL, NULL, 'block_content') #5 /home/sites/6b/5/5faa0124ea/public_html/system/Helpers/Form/Codemirror.php(68): IPS\Helpers\Form\_TextArea->__construct('block_content', '', false, Array, Object(Closure), NULL, NULL, 'block_content') #6 /home/sites/6b/5/5faa0124ea/public_html/applications/cms/sources/Blocks/Block.php(668): IPS\Helpers\Form\_Codemirror->__construct('block_content', '', false, Array, Object(Closure), NULL, NULL, 'block_content') #7 /home/sites/6b/5/5faa0124ea/public_html/system/Node/Controller.php(489): IPS\cms\Blocks\_Block->form(Object(IPS\Helpers\Form)) #8 /home/sites/6b/5/5faa0124ea/public_html/system/Node/Controller.php(388): IPS\Node\_Controller->_addEditForm(Object(IPS\cms\Blocks\Block)) #9 /home/sites/6b/5/5faa0124ea/public_html/system/Dispatcher/Controller.php(85): IPS\Node\_Controller->form() #10 /home/sites/6b/5/5faa0124ea/public_html/system/Node/Controller.php(62): IPS\Dispatcher\_Controller->execute() #11 /home/sites/6b/5/5faa0124ea/public_html/applications/cms/modules/admin/pages/blocks.php(39): IPS\Node\_Controller->execute() #12 /home/sites/6b/5/5faa0124ea/public_html/system/Dispatcher/Dispatcher.php(152): IPS\cms\modules\admin\pages\_blocks->execute() #13 /home/sites/6b/5/5faa0124ea/public_html/admin/index.php(14): IPS\_Dispatcher->run() #14 {main} Thanks Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.