예제 #1
0
 protected function getCopyrights($upload_pk, $item, $uploadTreeTableName, $agentId, $type, $filter)
 {
     $offset = GetParm('iDisplayStart', PARM_INTEGER);
     $limit = GetParm('iDisplayLength', PARM_INTEGER);
     $tableName = $this->getTableName($type);
     $orderString = $this->getOrderString();
     list($left, $right) = $this->uploadDao->getLeftAndRight($item, $uploadTreeTableName);
     if ($filter == "") {
         $filter = "none";
     }
     $sql_upload = "";
     if ('uploadtree_a' == $uploadTreeTableName) {
         $sql_upload = " AND UT.upload_fk={$upload_pk} ";
     }
     $join = "";
     $filterQuery = "";
     if ($type == 'statement' && $filter == "nolic") {
         $noLicStr = "No_license_found";
         $voidLicStr = "Void";
         $join = " INNER JOIN license_file AS LF on cp.pfile_fk=LF.pfile_fk ";
         $filterQuery = " AND LF.rf_fk IN (SELECT rf_pk FROM license_ref WHERE rf_shortname IN ('{$noLicStr}','{$voidLicStr}')) ";
     } else {
         // No filter, nothing to do
     }
     $params = array($left, $right, $type, $agentId);
     $filterParms = $params;
     $searchFilter = $this->addSearchFilter($filterParms);
     $unorderedQuery = "FROM {$tableName} AS cp " . "INNER JOIN {$uploadTreeTableName} AS UT ON cp.pfile_fk = UT.pfile_fk " . $join . "WHERE cp.content!='' " . "AND ( UT.lft  BETWEEN  \$1 AND  \$2 ) " . "AND cp.type = \$3 " . "AND cp.agent_fk= \$4 " . $sql_upload;
     $totalFilter = $filterQuery . " " . $searchFilter;
     $grouping = " GROUP BY content ";
     $countQuery = "SELECT count(*) FROM (SELECT content, count(*) {$unorderedQuery} {$totalFilter} {$grouping}) as K";
     $iTotalDisplayRecordsRow = $this->dbManager->getSingleRow($countQuery, $filterParms, __METHOD__ . $tableName . ".count");
     $iTotalDisplayRecords = $iTotalDisplayRecordsRow['count'];
     $countAllQuery = "SELECT count(*) FROM (SELECT content, count(*) {$unorderedQuery}{$grouping}) as K";
     $iTotalRecordsRow = $this->dbManager->getSingleRow($countAllQuery, $params, __METHOD__, $tableName . "count.all");
     $iTotalRecords = $iTotalRecordsRow['count'];
     $range = "";
     $filterParms[] = $offset;
     $range .= ' OFFSET $' . count($filterParms);
     $filterParms[] = $limit;
     $range .= ' LIMIT $' . count($filterParms);
     $sql = "SELECT content, hash, count(*) as copyright_count  " . $unorderedQuery . $totalFilter . " GROUP BY content, hash " . $orderString . $range;
     $statement = __METHOD__ . $filter . $tableName . $uploadTreeTableName;
     $this->dbManager->prepare($statement, $sql);
     $result = $this->dbManager->execute($statement, $filterParms);
     $rows = $this->dbManager->fetchAll($result);
     $this->dbManager->freeResult($result);
     return array($rows, $iTotalDisplayRecords, $iTotalRecords);
 }