method search documentation in bbn\Appui\Task

function(array $where = [], $sort = [], $start = 0, $num = 25) { $fields = [ 'ids' => [ 'id_parent' => 'bbn_tasks.id_parent', 'id_user' => 'bbn_tasks.id_user', 'state' => 'bbn_tasks.state', 'role' => 'my_role.role', 'type' => 'bbn_tasks.type' ], 'nums' => [ 'num_notes' => 'num_notes', 'duration' => 'duration', 'priority' => 'bbn_tasks.priority' ], 'dates' => [ 'deadline' => 'bbn_tasks.deadline', 'creation_date' => 'creation_date', 'last_action' => 'last_action' ], 'texts' => [ 'title' => 'bbn_tasks.title', 'text' => 'bbn_notes_versions.content' ], 'users' => [ 'my_user' => '', 'my_group' => '' ], 'refs' => [ 'reference' => 'reference' ] ]; $query = ''; $join = ''; $having = ''; $order = ''; $args1 = []; $args2 = []; foreach ( $where as $i => $w ){ if ( isset($fields['ids'][$w[0]]) ){ // For id_parent, no other search for now if ( $w[0] === 'id_parent' ){ $query = "AND ".$fields['ids'][$w[0]]." = ? "; $args = [$w[2]]; break; } else if ( \is_array($w[2]) ){ $query .= "AND ( "; foreach ( $w[2] as $j => $v ){ if ( $j ){ $query .= " OR "; } $query .= $fields['ids'][$w[0]]." = ? "; array_push($args1, $v); } $query .= ") "; } else{ $query .= " AND ".$fields['ids'][$w[0]]." $w[1] ? "; array_push($args1, $w[2]); } } else if ( isset($fields['dates'][$w[0]]) ){ if ( strpos($w[1], 'IS ') === 0 ){ $query .= " AND ".$fields['dates'][$w[0]]." $w[1] "; } else if ( bbn\Date::validateSQL($w[2]) ){ if ( $w[0] !== 'deadline' ){ $having .= " AND DATE(".$fields['dates'][$w[0]].") $w[1] ? "; array_push($args2, $w[2]); } else{ $query .= " AND DATE(".$fields['dates'][$w[0]].") $w[1] ? "; array_push($args1, $w[2]); } } } else if ( isset($fields['nums'][$w[0]]) ){ if ( \is_int($w[2]) ){ $query .= " AND ".$fields['nums'][$w[0]]." $w[1] ? "; array_push($args1, $w[2]); } } else if ( isset($fields['texts'][$w[0]]) ){ if ( !empty($w[2]) ){ if ( $w[0] === 'title' ){ $query .= " AND bbn_tasks.title LIKE ? "; array_push($args1, "%$w[2]%"); } else if ( $w[0] === 'text' ){ $query .= " AND (bbn_tasks.title LIKE ? OR bbn_notes_versions.content LIKE ?) "; array_push($args1, "%$w[2]%", "%$w[2]%"); $join .= " LEFT JOIN bbn_tasks_notes ON bbn_tasks_notes.id_task = bbn_tasks.id"; } } } else if ( isset($fields['users'][$w[0]]) ){ if ( !empty($w[2]) ){ if ( $w[0] === 'my_user' ){ $query .= " AND user_role.id_user = ?"; array_push($args1, hex2bin($w[2])); $join .= " JOIN bbn_tasks_roles AS user_role ON user_role.id_task = bbn_tasks.id"; } else if ( ($w[0] === 'my_group') && ($usr = bbn\User::getInstance()) ){ $usr_table = $usr->getTables()['users']; $usr_fields = $usr->getFields('users'); $query .= " AND `".$usr_table."`.`".$usr_fields['id_group']."` = ? "; array_push($args1, hex2bin($w[2])); $join .= " JOIN bbn_tasks_roles AS group_role ON group_role.id_task = bbn_tasks.id JOIN `".$usr_table."` ON bbn_tasks_roles.id_user = `".$usr_table."`.`".$usr_fields['id']."`"; } } } else if ( isset($fields['refs'][$w[0]]) ){ if ( \is_int($w[2]) ){ $having .= " AND ".$fields['refs'][$w[0]]." $w[1] ? "; array_push($args1, $w[2]); } } } foreach ( $fields as $i => $f ){ foreach ( $f as $n => $g ){ if ( isset($sort[$n]) ){ $order = '`'.$n.'`'.( strtolower($sort[$n]) === 'desc' ? ' DESC' : ' ASC').', '; } } } if ( !empty($order) ){ $order = "ORDER BY ".substr($order, 0, -2); } $args0 = [ hex2bin($this->idState('closed')), hex2bin($this->id_user) ]; $sql = " SELECT my_role.role, bbn_tasks.*, FROM_UNIXTIME(MAX(bbn_tasks_logs.chrono)) AS `last_action`, COUNT(children.id) AS num_children, COUNT(DISTINCT bbn_tasks_notes.id_note) AS num_notes, {$this->references_select} IF(bbn_tasks.`state` = ?, MAX(bbn_tasks_logs.chrono), UNIX_TIMESTAMP()) - MIN(bbn_tasks_logs.chrono) AS duration FROM bbn_tasks LEFT JOIN bbn_tasks_roles AS my_role ON my_role.id_task = bbn_tasks.id AND my_role.id_user = ? LEFT JOIN bbn_tasks_roles ON bbn_tasks_roles.id_task = bbn_tasks.id JOIN bbn_tasks_logs ON bbn_tasks_logs.id_task = bbn_tasks_roles.id_task LEFT JOIN bbn_tasks_notes ON bbn_tasks_notes.id_task = bbn_tasks.id LEFT JOIN bbn_tasks AS children ON bbn_tasks_roles.id_task = children.id_parent $join {$this->references_join} WHERE bbn_tasks.active = 1 $query GROUP BY bbn_tasks.id HAVING 1 $having $order"; //die(X::dump($sql)); if ( !isset($args) ){ $args = array_merge($args0, $args1, $args2); } $data = $this->db->getRows($sql." LIMIT $start, $num", $args); /** @var bbn\User $user */ $user = bbn\User::getInstance(); foreach ( $data as $i => $d ){ if ( $this->template ){ if ( $d['reference'] ){ /** @todo How do I get the t1able with the way I made the request??! */ $data[$i]['reference'] = \call_user_func($this->template, $this->db, $d['reference'], ''); } } } return [ 'data' => $data, 'total' => $this->db->getOne("SELECT COUNT(*) FROM ($sql) AS t", $args), 'start' => $start, 'limit' => $num ]; }

BBN is a suite of PHP and JS libraries and VueJS components - all open-source! bbn.io, build applications, the quick way

This website uses cookies to ensure you get the best experience on our website.