Пример #1
0
 public function findAll($qbuilder)
 {
     if (UserSession::getInstance()->getAccessLevel() < 3) {
         die("<h1>Forbidden resource for you.</h1>");
     }
     @($dao = new DAO(Test));
     if (!isset($qbuilder)) {
         $qbuilder = new QueryBuilder('test');
         $qbuilder->addOrder("dsc_code", QueryBuilder::$ASC, 'discipline');
         $qbuilder->addOrder("tst_title", QueryBuilder::$ASC);
     }
     $qbuilder->addJoin("discipline", "tst_dsc_id", "dsc_id");
     $qbuilder->addLeftJoin("testproblems", "tst_id", "tpb_tst_id");
     $qbuilder->addGroupBy("tst_id", "test");
     $tests = $dao->findByQueryWithMetaFields($qbuilder);
     return $tests;
 }
 /**
  * Builds the SQL statement to select the data for this page and schema
  *
  * @return array Two fields: the SQL string and the parameters array
  */
 protected function buildGetDataSQL()
 {
     $sep = Search::CONCAT_SEPARATOR;
     $stable = 'data_' . $this->schema->getTable();
     $mtable = 'multi_' . $this->schema->getTable();
     $QB = new QueryBuilder();
     $QB->addTable($stable, 'DATA');
     $QB->addSelectColumn('DATA', 'pid', 'PID');
     $QB->addGroupByStatement('DATA.pid');
     foreach ($this->schema->getColumns(false) as $col) {
         $colref = $col->getColref();
         $colname = 'col' . $colref;
         $outname = 'out' . $colref;
         if ($col->getType()->isMulti()) {
             $tn = 'M' . $colref;
             $QB->addLeftJoin('DATA', $mtable, $tn, "DATA.pid = {$tn}.pid AND DATA.rev = {$tn}.rev AND {$tn}.colref = {$colref}");
             $col->getType()->select($QB, $tn, 'value', $outname);
             $sel = $QB->getSelectStatement($outname);
             $QB->addSelectStatement("GROUP_CONCAT({$sel}, '{$sep}')", $outname);
         } else {
             $col->getType()->select($QB, 'DATA', $colname, $outname);
             $QB->addGroupByStatement($outname);
         }
     }
     $pl = $QB->addValue($this->pid);
     $QB->filters()->whereAnd("DATA.pid = {$pl}");
     $pl = $QB->addValue($this->getLastRevisionTimestamp());
     $QB->filters()->whereAnd("DATA.rev = {$pl}");
     return $QB->getSQL();
 }
Пример #3
0
 public function findAll($qbuilder)
 {
     if (UserSession::getInstance()->getAccessLevel() < 3) {
         die("<h1>Forbidden resource for you.</h1>");
     }
     @($dao = new DAO(Problem));
     if (!isset($qbuilder)) {
         $qbuilder = new QueryBuilder('problem');
         $qbuilder->addOrder("dsc_code", QueryBuilder::$ASC, 'discipline');
         $qbuilder->addOrder("prb_difficultyLevel", QueryBuilder::$ASC);
         $qbuilder->addOrder("prb_title", QueryBuilder::$ASC);
     }
     $qbuilder->addJoin("discipline", "prb_dsc_id", "dsc_id");
     $qbuilder->addLeftJoin("evaluationcase", "prb_id", "evc_prb_id");
     $qbuilder->addGroupBy("prb_id", "problem");
     $problems = $dao->findByQueryWithMetaFields($qbuilder);
     return $problems;
 }