public static function dropdown($data, $selected = NULL, $extra = '') { // standardize the $data as an array, strings default to the class_type if (!is_array($data)) { $data = array('name' => $data); } // add in all the defaults if they are not provided $defaults = array('null_option' => FALSE, 'default_first' => TRUE, 'unauth_before_auth' => FALSE); $data = arr::merge($defaults, $data); $options = array(); $sipinterfaces = Doctrine::getTable('SipInterface')->findAll(); foreach ($sipinterfaces as $sipinterface) { if (!($id = arr::get($sipinterface, 'sipinterface_id')) or !($name = arr::get($sipinterface, 'name'))) { continue; } if ($data['unauth_before_auth'] and !$sipinterface['auth'] or !$data['unauth_before_auth'] and $sipinterface['auth']) { arr::unshift_assoc($options, $id, $name); continue; } $options[$id] = $name; } if ($data['default_first'] and $default_sipinterface = SipInterface::get_default()) { unset($options[$default_sipinterface['sipinterface_id']]); arr::unshift_assoc($options, $default_sipinterface['sipinterface_id'], $default_sipinterface['name']); } if ($data['null_option']) { arr::unshift_assoc($options, 0, $data['null_option']); } $data = array_diff($data, $defaults); // use kohana helper to generate the markup return form::dropdown($data, $options, $selected, $extra); }
/** * Tests the arr::unshift_assoc() function. * @dataProvider unshift_assoc_provider * @group core.helpers.arr.unshift_assoc * @test */ public function unshift_assoc($input_array, $input_key, $input_value, $expected_result) { $result = arr::unshift_assoc($input_array, $input_key, $input_value); $this->assertEquals($expected_result, $result); }