fetchPairs() public static method

Executes SQL query and fetch pairs - Monostate for Dibi\Connection::query() & fetchPairs().
public static fetchPairs ( $args ) : array
return array
 protected function createComponentAddEdit($name)
 {
     $form = new AppForm($this, $name);
     $access = array(1 => 'Allow', 0 => 'Deny');
     // roles
     $mroles = new RolesModel();
     $roles = $mroles->getTreeValues();
     // resources
     $resources[0] = '- All resources -';
     $mresources = new ResourcesModel();
     $rows = $mresources->getTreeValues();
     foreach ($rows as $key => $row) {
         // function array_merge does't work correctly with integer indexes
         // manual array merge
         $resources[$key] = $row;
     }
     // privileges
     $privileges[0] = '- All privileges -';
     $rows = dibi::fetchAll('SELECT id, name FROM %n ORDER BY name;', TABLE_PRIVILEGES);
     foreach ($rows as $row) {
         // function array_merge does't work correctly with integer indexes
         // manual array merge
         $privileges[$row->id] = $row->name;
     }
     // assertions
     $assertions = array('Choose') + dibi::fetchPairs('SELECT id, class FROM %n ORDER BY class', TABLE_ASSERTIONS);
     //$renderer = $form->getRenderer();
     //$renderer->wrappers['label']['suffix'] = ':';
     //$form->addGroup('Add');
     $form->addMultiSelect('role_id', 'Role', $roles, 15)->addRule(Form::FILLED, 'You have to fill roles.');
     $form->addMultiSelect('resource_id', 'Resources', $resources, 15)->addRule(Form::FILLED, 'You have to fill resources.');
     $form->addMultiSelect('privilege_id', 'Privileges', $privileges, 15)->addRule(Form::FILLED, 'You have to fill privileges.');
     $form->addSelect('assertion_id', 'Assertion', $assertions);
     //$form->addSelect('access', 'Access', $access)
     $form->addRadioList('access', 'Access', $access)->addRule(Form::FILLED, 'You have to fill access.');
     $form->addSubmit('assign', 'Assign');
     $form->onSubmit[] = array($this, 'addEditOnFormSubmitted');
 }
Beispiel #2
0
 public function load()
 {
     $this->vars = dibi::fetchPairs("SELECT name, value FROM configs");
 }
Beispiel #3
0
 /**
  * determine signatures with the same context
  * currently we only check if the class we detected matches the signature
  *
  * @param array $candidates Array of DibiRows
  * @return array
  */
 protected function _filterByContext($candidates)
 {
     if (false === array_key_exists('class', $this->_context) && 0 < strlen($this->_context['class']) && Method::TYPE_MIXED !== $this->_context['class'] && 0 < count($candidates)) {
         $classIds = array();
         $query = 'SELECT name, id FROM [classes] WHERE id IN (%s) AND name=%s';
         foreach ($candidates as $key => $candidate) {
             if ($candidate->class_id) {
                 $classIds[$key] = $candidate->class_id;
             }
         }
         try {
             $result = dibi::fetchPairs($query, $classIds, $this->_context['class']);
         } catch (\DibiDriverException $e) {
             dibi::test($query, $classIds, $this->_context['class']);
             throw $e;
         }
         $contextMatchingCandidates = $candidates;
         foreach ($candidates as $key => $candidate) {
             if (false == in_array($candidate->class_id, $classIds)) {
                 unset($contextMatchingCandidates[$key]);
             }
         }
         return count($contextMatchingCandidates) ? $contextMatchingCandidates : $candidates;
     }
     return $candidates;
 }