/** * @param int $parentFolder parent folder_pk * @return string HTML of the folder tree */ public function showFolderTree($parentFolder) { $uri = Traceback_uri(); $sql = $this->folderDao->getFolderTreeCte($parentFolder) . " SELECT folder_pk, folder_name, folder_desc, depth, name_path FROM folder_tree ORDER BY name_path"; $stmt = __METHOD__; $this->dbManager->prepare($stmt, $sql); $res = $this->dbManager->execute($stmt, array($parentFolder)); $out = ''; $lastDepth = -1; while ($row = $this->dbManager->fetchArray($res)) { for (; $row['depth'] < $lastDepth; $lastDepth--) { $out .= '</li></ul>'; } if ($row['depth'] == $lastDepth) { $out .= "</li>\n<li>"; } if ($row['depth'] == 0) { $out .= '<ul id="tree"><li>'; $lastDepth++; } for (; $row['depth'] > $lastDepth; $lastDepth++) { $out .= '<ul><li>'; } $out .= $this->getFormattedItem($row, $uri); } for (; -1 < $lastDepth; $lastDepth--) { $out .= '</li></ul>'; } return $out; }
public function rerunBulkAndDeciderOnUpload($uploadId, $groupId, $userId, $jobId) { $bulkIds = $this->getBulkIds($uploadId, $groupId, $userId); if (count($bulkIds) == 0) { return 0; } /* @var $uploadDao UploadDao */ $uploadDao = $GLOBALS['container']->get('dao.upload'); $topItem = $uploadDao->getUploadParent($uploadId); /* @var $deciderPlugin DeciderJobAgentPlugin */ $deciderPlugin = plugin_find("agent_deciderjob"); $dependecies = array(); $sql = "INSERT INTO license_ref_bulk (user_fk,group_fk,rf_text,upload_fk,uploadtree_fk) " . "SELECT \$1 AS user_fk, \$2 AS group_fk,rf_text,\$3 AS upload_fk, \$4 as uploadtree_fk\n FROM license_ref_bulk WHERE lrb_pk=\$5 RETURNING lrb_pk, \$5 as lrb_origin"; $sqlLic = "INSERT INTO license_set_bulk (lrb_fk,rf_fk,removing) " . "SELECT \$1 as lrb_fk,rf_fk,removing FROM license_set_bulk WHERE lrb_fk=\$2"; $this->dbManager->prepare($stmt = __METHOD__ . 'cloneBulk', $sql); $this->dbManager->prepare($stmtLic = __METHOD__ . 'cloneBulkLic', $sqlLic); foreach ($bulkIds as $bulkId) { $res = $this->dbManager->execute($stmt, array($userId, $groupId, $uploadId, $topItem, $bulkId)); $row = $this->dbManager->fetchArray($res); $this->dbManager->freeResult($res); $resLic = $this->dbManager->execute($stmtLic, array($row['lrb_pk'], $row['lrb_origin'])); $this->dbManager->freeResult($resLic); $dependecies[] = array('name' => 'agent_monk_bulk', 'args' => $row['lrb_pk'], AgentPlugin::PRE_JOB_QUEUE => array('agent_decider')); } $errorMsg = ''; $jqId = $deciderPlugin->AgentAdd($jobId, $uploadId, $errorMsg, $dependecies); if (!empty($errorMsg)) { throw new Exception($errorMsg); } return $jqId; }
public function hasActionPermissionsOnJob($jobId, $userId, $groupId) { $result = array(); $stmt = __METHOD__; $this->dbManager->prepare($stmt, "SELECT *\n FROM job\n LEFT JOIN group_user_member gm\n ON gm.user_fk = job_user_fk\n WHERE job_pk = \$1\n AND (job_user_fk = \$2\n OR gm.group_fk = \$3)"); $res = $this->dbManager->execute($stmt, array($jobId, $userId, $groupId)); while ($row = $this->dbManager->fetchArray($res)) { $result[$row['jq_pk']] = $row['end_bits']; } $this->dbManager->freeResult($res); return $result; }
public function getAllJobStatus($uploadId, $userId, $groupId) { $result = array(); $stmt = __METHOD__; $this->dbManager->prepare($stmt, "SELECT jobqueue.jq_pk as jq_pk, jobqueue.jq_end_bits as end_bits\n FROM jobqueue INNER JOIN job ON jobqueue.jq_job_fk = job.job_pk\n LEFT JOIN group_user_member gm ON gm.user_fk = job_user_fk\n WHERE job.job_upload_fk = \$1 AND (job_user_fk = \$2 OR gm.group_fk = \$3)"); $res = $this->dbManager->execute($stmt, array($uploadId, $userId, $groupId)); while ($row = $this->dbManager->fetchArray($res)) { $result[$row['jq_pk']] = $row['end_bits']; } $this->dbManager->freeResult($res); return $result; }
/** * \brief Display the user record edit form * * \param $UserRec - Database users record for the user to be edited. * \param $SessionIsAdmin - Boolean: This session is by an admin * \return the text of the display form on success, or error on failure. */ private function DisplayForm($UserRec, $SessionIsAdmin) { $vars = array('isSessionAdmin' => $SessionIsAdmin, 'userId' => $UserRec['user_pk']); /* For Admins, get the list of all users * For non-admins, only show themself */ if ($SessionIsAdmin) { $stmt = __METHOD__ . '.asSessionAdmin'; $sql = "SELECT * FROM users ORDER BY user_name"; $this->dbManager->prepare($stmt, $sql); $res = $this->dbManager->execute($stmt); $allUsers = array(); while ($row = $this->dbManager->fetchArray($res)) { $allUsers[$row['user_pk']] = htmlentities($row['user_name']); } $this->dbManager->freeResult($res); $vars['allUsers'] = $allUsers; } $vars['userName'] = $UserRec['user_name']; $vars['userDescription'] = $UserRec['user_desc']; $vars['userEMail'] = $UserRec["user_email"]; $vars['eMailNotification'] = $UserRec['email_notify'] == 'y'; if ($SessionIsAdmin) { $vars['allAccessLevels'] = array(PLUGIN_DB_NONE => _("None (very basic, no database access)"), PLUGIN_DB_READ => _("Read-only (read, but no writes or downloads)"), PLUGIN_DB_WRITE => _("Read-Write (read, download, or edit information)"), PLUGIN_DB_ADMIN => _("Full Administrator (all access including adding and deleting users)")); $vars['accessLevel'] = $UserRec['user_perm']; $SelectedFolderPk = $UserRec['root_folder_fk']; $vars['folderListOption'] = FolderListOption($ParentFolder = -1, $Depth = 0, $IncludeTop = 1, $SelectedFolderPk); } $vars['isBlankPassword'] = $UserRec['_blank_pass'] == 'on'; $vars['agentSelector'] = AgentCheckBoxMake(-1, array("agent_unpack", "agent_adj2nest", "wget_agent"), $UserRec['user_name']); $vars['bucketPool'] = SelectBucketPool($UserRec["default_bucketpool_fk"]); return $vars; }
/** * @param int $uploadId * @return Package|null */ public function findPackageForUpload($uploadId) { $statementName = __METHOD__; $this->dbManager->prepare($statementName, "\nSELECT p.*, u.*\nFROM package p\n INNER JOIN upload_packages up ON p.package_pk = up.package_fk\n INNER JOIN upload_packages up2 ON p.package_pk = up2.package_fk\n INNER JOIN upload u ON up2.upload_fk = u.upload_pk\nWHERE up.upload_fk = \$1\nORDER BY up2.upload_fk ASC"); $res = $this->dbManager->execute($statementName, array($uploadId)); $packageId = 0; $packageName = ""; $uploads = array(); while ($row = $this->dbManager->fetchArray($res)) { $packageId = intval($row['package_pk']); $packageName = $row['package_name']; $uploads[] = Upload::createFromTable($row); } $this->dbManager->freeResult($res); return $packageId > 0 ? new Package($packageId, $packageName, $uploads) : null; }
/** * @brief Return total Job data with time elapsed * @param $job_pk * @return $row */ public function getDataForASingleJob($job_pk) { $statementName = __METHOD__ . "getDataForASingleJob"; $this->dbManager->prepare($statementName, "SELECT *, jq_endtime-jq_starttime as elapsed FROM jobqueue LEFT JOIN job ON job.job_pk = jobqueue.jq_job_fk WHERE jobqueue.jq_pk =\$1"); $result = $this->dbManager->execute($statementName, array($job_pk)); $row = $this->dbManager->fetchArray($result); $this->dbManager->freeResult($result); return $row; }
/** * * @param string $tablename * @param string $columnname * @param array $map using keys * @return int */ private function checkDatabaseEnum($tablename, $columnname, $map) { $errors = 0; $stmt = __METHOD__ . ".{$tablename}.{$columnname}"; $sql = "SELECT {$columnname},count(*) FROM {$tablename} GROUP BY {$columnname}"; $this->dbManager->prepare($stmt, $sql); $res = $this->dbManager->execute($stmt); while ($row = $this->dbManager->fetchArray($res)) { if (!array_key_exists($row[$columnname], $map)) { echo "(-) found invalid {$columnname} '" . $row[$columnname] . "' in table '{$tablename}'\n"; $errors++; } else { if ($this->verbose) { echo "(+) found valid {$columnname} '" . $row[$columnname] . "' in table '{$tablename}'\n"; } } } $this->dbManager->freeResult($res); return $errors; }
public function getPermissionGroups($uploadId) { $this->dbManager->prepare($stmt = __METHOD__, "SELECT perm_upload_pk, perm, group_pk, group_name\n FROM groups, perm_upload\n WHERE group_fk=group_pk AND upload_fk=\$1\n ORDER BY group_name"); $res = $this->dbManager->execute($stmt, array($uploadId)); $groupMap = array(); while ($row = $this->dbManager->fetchArray($res)) { $groupMap[$row['group_pk']] = $row; } $this->dbManager->freeResult($res); return $groupMap; }
/** * @param string $agentName * @param int $uploadId * @return AgentRef[] */ public function getSuccessfulAgentRuns($agentName, $uploadId) { $stmt = __METHOD__ . ".getAgent.{$agentName}"; $this->dbManager->prepare($stmt, $sql = "SELECT agent_pk,agent_rev,agent_name FROM agent LEFT JOIN " . $this->getArsTableName($agentName) . " ON agent_fk=agent_pk " . "WHERE agent_name=\$2 AND agent_enabled AND upload_fk=\$1 AND ars_success " . "ORDER BY agent_pk DESC"); $res = $this->dbManager->execute($stmt, array($uploadId, $agentName)); $agents = array(); while ($row = $this->dbManager->fetchArray($res)) { $agents[] = $this->createAgentRef($row); } $this->dbManager->freeResult($res); return $agents; }
public function getMainLicenseIds($uploadId, $groupId) { $stmt = __METHOD__; $sql = "SELECT rf_fk FROM upload_clearing_license WHERE upload_fk=\$1 AND group_fk=\$2"; $this->dbManager->prepare($stmt, $sql); $res = $this->dbManager->execute($stmt, array($uploadId, $groupId)); $ids = array(); while ($row = $this->dbManager->fetchArray($res)) { $ids[$row['rf_fk']] = $row['rf_fk']; } $this->dbManager->freeResult($res); return $ids; }
public function getFolderChildFolders($folderId) { $results = array(); $stmtFolder = __METHOD__; $sqlFolder = "SELECT foldercontents_pk,foldercontents_mode, folder_name FROM foldercontents,folder " . "WHERE foldercontents.parent_fk=\$1 AND foldercontents.child_id=folder.folder_pk" . " AND foldercontents_mode=" . self::MODE_FOLDER; $this->dbManager->prepare($stmtFolder, $sqlFolder); $res = $this->dbManager->execute($stmtFolder, array($folderId)); while ($row = $this->dbManager->fetchArray($res)) { $results[$row['foldercontents_pk']] = $row; } $this->dbManager->freeResult($res); return $results; }
private function getGroupMembers($groupsWhereUserIsAdmin) { $this->dbManager->prepare($stmt = __METHOD__, "SELECT user_name,gum.group_fk FROM group_user_member gum, users WHERE user_fk=user_pk"); $res = $this->dbManager->execute($stmt); $gum = array(); while ($row = $this->dbManager->fetchArray($res)) { if (array_key_exists($row['group_fk'], $groupsWhereUserIsAdmin)) { $gum[] = array($row['user_name'], $row['group_fk']); } } $this->dbManager->freeResult($res); return $gum; }
public function getTopLevelLicenseRefs() { $licenseView = new LicenseViewProxy($this->groupId, array('columns' => array('rf_pk', 'rf_shortname', 'rf_fullname')), 'license_visible'); $query = $licenseView->asCTE() . ' SELECT rf_pk, rf_shortname, rf_fullname FROM ' . $licenseView->getDbViewName() . ' LEFT JOIN license_map ON rf_pk=rf_fk AND rf_fk!=rf_parent AND usage=$1' . ' WHERE license_map_pk IS NULL'; $stmt = __METHOD__ . ".{$this->usageId},{$this->groupId}"; $this->dbManager->prepare($stmt, $query); $res = $this->dbManager->execute($stmt, array($this->usageId)); $topLevel = array(); while ($row = $this->dbManager->fetchArray($res)) { $topLevel[$row['rf_pk']] = new LicenseRef($row['rf_pk'], $row['rf_shortname'], $row['rf_fullname']); } return $topLevel; }
/** * @var ItemTreeBounds $itemTreeBounds * @param string $addCondition * @param array $addParameters * @return Item[] */ public function getContainedItems(ItemTreeBounds $itemTreeBounds, $addCondition = "", $addParameters = array()) { $uploadTreeTableName = $itemTreeBounds->getUploadTreeTableName(); $statementName = __METHOD__ . ".{$uploadTreeTableName}"; $view = new UploadTreeViewProxy($itemTreeBounds, array(UploadTreeViewProxy::CONDITION_PLAIN_FILES)); $this->dbManager->prepare($statementName, $view->asCTE() . " SELECT * FROM " . $view->getDbViewName() . " ut " . ($addCondition ? " WHERE " . $addCondition : '')); $res = $this->dbManager->execute($statementName, $addParameters); $items = array(); while ($row = $this->dbManager->fetchArray($res)) { $items[] = $this->createItem($row, $uploadTreeTableName); } $this->dbManager->freeResult($res); return $items; }
/** * @return string[] with keys being shortname */ protected function getLicenseTexts() { $licenseTexts = array(); $licenseViewProxy = new LicenseViewProxy($this->groupId, array(LicenseViewProxy::OPT_COLUMNS => array('rf_pk', 'rf_shortname', 'rf_text'))); $this->dbManager->prepare($stmt = __METHOD__, $licenseViewProxy->getDbViewQuery()); $res = $this->dbManager->execute($stmt); while ($row = $this->dbManager->fetchArray($res)) { if (array_key_exists($row['rf_pk'], $this->includedLicenseIds)) { $licenseTexts[$row['rf_shortname']] = $row['rf_text']; } } $this->dbManager->freeResult($res); return $licenseTexts; }
function addFunctions($schema) { // prosrc // proretset == setof $sql = "SELECT proname AS name,\n pronargs AS input_num,\n proargnames AS input_names,\n proargtypes AS input_type,\n proargmodes AS input_modes,\n proretset AS setof,\n prorettype AS output_type\n FROM pg_proc AS proc\n INNER JOIN pg_language AS lang ON proc.prolang = lang.oid\n WHERE lang.lanname = 'plpgsql'\n ORDER BY proname;"; $stmt = __METHOD__; $this->dbman->prepare($stmt, $sql); $result = $this->dbman->execute($stmt); while ($row = $this->dbman->fetchArray($result)) { $sql = "CREATE or REPLACE function " . $row['proname'] . "()"; $sql .= ' RETURNS ' . "TBD" . ' AS $$'; $sql .= " " . $row['prosrc']; $schema['FUNCTION'][$row['proname']] = $sql; } $this->dbman->freeResult($result); return $schema; }
/** * @brief Returns Estimated time using jobid * @param int $job_pk * @param string $jq_Type * @param float $filesPerSec * @param int $uploadId * @return Returns empty if estimated time is 0 else returns time. **/ public function getEstimatedTime($job_pk, $jq_Type = '', $filesPerSec = 0, $uploadId = 0) { if (!empty($uploadId)) { $itemCount = $this->dbManager->getSingleRow("SELECT jq_itemsprocessed FROM jobqueue INNER JOIN job ON jq_job_fk=job_pk " . " WHERE jq_type LIKE 'ununpack' AND jq_end_bits ='1' AND job_upload_fk=\$1", array($uploadId), __METHOD__ . '.ununpack_might_be_in_other_job'); } else { $itemCount = $this->dbManager->getSingleRow("SELECT jq_itemsprocessed FROM jobqueue WHERE jq_type LIKE 'ununpack' AND jq_end_bits ='1' AND jq_job_fk =\$1", array($job_pk), __METHOD__ . '.ununpack_must_be_in_this_job'); } if (!empty($itemCount['jq_itemsprocessed'])) { $selectCol = "jq_type, jq_endtime, jq_starttime, jq_itemsprocessed"; if (empty($jq_Type)) { $removeType = "jq_type NOT LIKE 'ununpack' AND jq_type NOT LIKE 'reportgen' AND jq_type NOT LIKE 'decider' AND"; /* get starttime endtime and jobtype form jobqueue for a jobid except $removeType */ $statementName = __METHOD__ . "{$selectCol}.{$removeType}"; $this->dbManager->prepare($statementName, "SELECT {$selectCol} FROM jobqueue WHERE {$removeType} jq_job_fk =\$1 ORDER BY jq_type DESC"); $result = $this->dbManager->execute($statementName, array($job_pk)); } else { $statementName = __METHOD__ . "{$selectCol}.{$jq_Type}"; $this->dbManager->prepare($statementName, "SELECT {$selectCol} FROM jobqueue WHERE jq_type LIKE '{$jq_Type}' AND jq_job_fk =\$1"); $result = $this->dbManager->execute($statementName, array($job_pk)); } $estimatedArray = array(); // estimate time for each agent while ($row = $this->dbManager->fetchArray($result)) { $timeOfCompletion = 0; if (empty($row['jq_endtime']) && !empty($row['jq_starttime'])) { // for agent started and not ended if (empty($filesPerSec)) { $burnTime = time() - strtotime($row['jq_starttime']); $filesPerSec = $this->getNumItemsPerSec($row['jq_itemsprocessed'], $burnTime); } if (!empty($filesPerSec)) { $timeOfCompletion = ($itemCount['jq_itemsprocessed'] - $row['jq_itemsprocessed']) / $filesPerSec; } array_push($estimatedArray, $timeOfCompletion); } } if (empty($estimatedArray)) { return ""; } else { $estimatedTime = round(max($estimatedArray)); // collecting max agent time in seconds return intval($estimatedTime / 3600) . gmdate(":i:s", $estimatedTime); // convert seconds to time and return } } }
/** * @param ItemTreeBounds $item * @param string $hash * @param string $content * @param int $userId * @param string $cpTable */ public function updateTable($item, $hash, $content, $userId, $cpTable = 'copyright') { $itemTable = $item->getUploadTreeTableName(); $stmt = __METHOD__ . ".{$cpTable}.{$itemTable}"; $params = array($hash, $item->getLeft(), $item->getRight(), $content); $sql = "UPDATE {$cpTable} AS cpr SET content = \$4, hash = md5(\$4)\n FROM {$cpTable} as cp\n INNER JOIN {$itemTable} AS ut ON cp.pfile_fk = ut.pfile_fk\n WHERE cpr.ct_pk = cp.ct_pk\n AND cp.hash =\$1\n AND ( ut.lft BETWEEN \$2 AND \$3 )"; if ('uploadtree_a' == $item->getUploadTreeTableName()) { $params[] = $item->getUploadId(); $sql .= " AND ut.upload_fk=\$" . count($params); $stmt .= '.upload'; } $this->dbManager->prepare($stmt, "{$sql} RETURNING cp.* "); $oldData = $this->dbManager->execute($stmt, $params); if ($cpTable == "copyright") { while ($row = $this->dbManager->fetchArray($oldData)) { $this->dbManager->insertTableRow('copyright_audit', array('ct_fk' => $row['ct_pk'], 'oldtext' => $row['content'], 'user_fk' => $userId, 'upload_fk' => $item->getUploadId(), 'uploadtree_pk' => $item->getItemId(), 'pfile_fk' => $row['pfile_fk']), __METHOD__ . "writeHist"); } } $this->dbManager->freeResult($oldData); }
/** * @param int $uploadTreeId * @param int|null $clearingId * @return Highlight[] */ public function getHighlightBulk($uploadTreeId, $clearingId = null) { $stmt = __METHOD__; $sql = "SELECT h.clearing_event_fk, h.start, h.len, ce.rf_fk, rf_text\n FROM clearing_event ce\n INNER JOIN highlight_bulk h ON ce.clearing_event_pk = h.clearing_event_fk\n INNER JOIN license_ref_bulk lrb ON lrb.lrb_pk = h.lrb_fk\n WHERE ce.uploadtree_fk = \$1"; $params = array($uploadTreeId); if (!empty($clearingId)) { $stmt .= ".clearingId"; $params[] = $clearingId; $sql .= " AND h.clearing_event_fk = \$" . count($params); } $this->dbManager->prepare($stmt, $sql); $result = $this->dbManager->execute($stmt, $params); $highlightEntries = array(); while ($row = $this->dbManager->fetchArray($result)) { $newHighlight = new Highlight(intval($row['start']), intval($row['start'] + $row['len']), Highlight::BULK, 0, 0); $newHighlight->setLicenseId($row['rf_fk']); $highlightEntries[] = $newHighlight; } $this->dbManager->freeResult($result); return $highlightEntries; }
public function getLicenseShortnamesContained(ItemTreeBounds $itemTreeBounds, $latestSuccessfulAgentIds = null, $filterLicenses = array('VOID')) { $uploadTreeTableName = $itemTreeBounds->getUploadTreeTableName(); $noLicenseFoundStmt = empty($filterLicenses) ? "" : " AND rf_shortname NOT IN (" . implode(", ", array_map(function ($name) { return "'" . $name . "'"; }, $filterLicenses)) . ")"; $statementName = __METHOD__ . '.' . $uploadTreeTableName; $agentFilter = ''; if (is_array($latestSuccessfulAgentIds)) { $agentIdSet = "{" . implode(',', $latestSuccessfulAgentIds) . "}"; $statementName .= ".{$agentIdSet}"; $agentFilter = " AND agent_fk=ANY('{$agentIdSet}')"; } $this->dbManager->prepare($statementName, "SELECT license_ref.rf_shortname\n FROM license_file JOIN license_ref ON license_file.rf_fk = license_ref.rf_pk\n INNER JOIN {$uploadTreeTableName} uploadTree ON uploadTree.pfile_fk=license_file.pfile_fk\n WHERE upload_fk=\$1\n AND lft BETWEEN \$2 AND \$3\n {$noLicenseFoundStmt} {$agentFilter}\n GROUP BY rf_shortname\n ORDER BY rf_shortname ASC"); $result = $this->dbManager->execute($statementName, array($itemTreeBounds->getUploadId(), $itemTreeBounds->getLeft(), $itemTreeBounds->getRight())); $licenses = array(); while ($row = $this->dbManager->fetchArray($result)) { $licenses[] = $row['rf_shortname']; } $this->dbManager->freeResult($result); return $licenses; }
/** * \brief Add a new license_ref to the database * * \return An add status string */ function Adddb() { $rf_shortname = trim($_POST['rf_shortname']); $rf_fullname = trim($_POST['rf_fullname']); $rf_url = $_POST['rf_url']; $rf_notes = $_POST['rf_notes']; $rf_text = trim($_POST['rf_text']); $parent = $_POST['rf_parent']; $report = $_POST['rf_report']; $riskLvl = intval($_POST['risk_level']); if (empty($rf_shortname)) { $text = _("ERROR: The license shortname is empty."); return "<b>{$text}</b><p>"; } if ($this->isShortnameBlocked(0, $rf_shortname, $rf_text)) { $text = _("ERROR: The shortname or license text already exist in the license list. License not added."); return "<b>{$text}</b><p>"; } $md5term = empty($rf_text) || stristr($rf_text, "License by Nomos") ? 'null' : 'md5($7)'; $stmt = __METHOD__ . '.rf'; $sql = "INSERT into license_ref (\n rf_active, marydone, rf_shortname, rf_fullname,\n rf_url, rf_notes, rf_md5, rf_text, rf_text_updatable,\n rf_detector_type, rf_risk) \n VALUES (\n \$1, \$2, \$3, \$4, \$5, \$6, {$md5term}, \$7, \$8, \$9, \$10) RETURNING rf_pk"; $this->dbManager->prepare($stmt, $sql); $res = $this->dbManager->execute($stmt, array($_POST['rf_active'], $_POST['marydone'], $rf_shortname, $rf_fullname, $rf_url, $rf_notes, $rf_text, $_POST['rf_text_updatable'], $_POST['rf_detector_type'], $riskLvl)); $row = $this->dbManager->fetchArray($res); $rfId = $row['rf_pk']; $parentMap = new LicenseMap($this->dbManager, 0, LicenseMap::CONCLUSION); $parentLicenses = $parentMap->getTopLevelLicenseRefs(); if (array_key_exists($parent, $parentLicenses)) { $this->dbManager->insertTableRow('license_map', array('rf_fk' => $rfId, 'rf_parent' => $parent, 'usage' => LicenseMap::CONCLUSION)); } $reportMap = new LicenseMap($this->dbManager, 0, LicenseMap::REPORT); $reportLicenses = $reportMap->getTopLevelLicenseRefs(); if (array_key_exists($report, $reportLicenses)) { $this->dbManager->insertTableRow('license_map', array('rf_fk' => $rfId, 'rf_parent' => $report, 'usage' => LicenseMap::REPORT)); } $ob = "License {$_POST['rf_shortname']} (id={$rfId}) added.<p>"; return $ob; }
/** * @param $itemId - uploadtree id * @param $uploadId - upload id */ public function getCopyrightList($itemId, $uploadId) { if (empty($itemId)) { $itemId = $this->uploadDao->getUploadParent($uploadId); } if (!$this->selectAgentId($uploadId)) { echo 'no valid copyright agent found'; return; } $uploadtree_tablename = $this->uploadDao->getUploadtreeTableName($uploadId); $toprow = $this->uploadDao->getItemTreeBounds($itemId, $uploadtree_tablename); $extraWhere = 'agent_fk=' . $this->agentId . ' AND lft>' . $toprow->getLeft() . ' AND rgt<' . $toprow->getRight(); $allCopyrightEntries = $this->copyrightDao->getAllEntries('copyright', $uploadId, $uploadtree_tablename, empty($this->type) || $this->type == 'all' ? null : $this->type, false, null, $extraWhere); $modeMask = empty($this->includeContainer) ? 3 << 28 : 1 << 28; $sql = "SELECT uploadtree_pk, ufile_name, lft, rgt FROM {$uploadtree_tablename} \n WHERE upload_fk=\$1 AND lft>\$2 AND rgt<\$3 AND (ufile_mode & \$4) = 0\n ORDER BY uploadtree_pk"; $this->dbManager->prepare($outerStmt = __METHOD__ . '.loopThroughAllRecordsInTree', $sql); $outerresult = $this->dbManager->execute($outerStmt, array($toprow->getUploadId(), $toprow->getLeft(), $toprow->getRight(), $modeMask)); while ($row = $this->dbManager->fetchArray($outerresult)) { $this->printRow($row, $uploadtree_tablename, $allCopyrightEntries); //$this->uploadDao->getParentItemBounds($uploadId)->getItemId()); } $this->dbManager->freeResult($outerresult); }
public function testGetLicenseShortnamesContained() { $this->testDb->createPlainTables(array('license_ref', 'license_file', 'uploadtree')); $this->dbManager->queryOnce("CREATE TABLE \"uploadtree_a\" AS SELECT * FROM uploadtree"); $this->testDb->createViews(array('license_file_ref')); $this->testDb->insertData(array('license_file', 'uploadtree_a')); $this->testDb->insertData_license_ref($limit = 3); $stmt = __METHOD__ . '.select.license_ref'; $this->dbManager->prepare($stmt, "SELECT rf_pk,rf_shortname FROM license_ref"); $licRes = $this->dbManager->execute($stmt); $licAll = array(); while ($erg = $this->dbManager->fetchArray($licRes)) { $licAll[$erg['rf_pk']] = $erg['rf_shortname']; } $this->dbManager->freeResult($licRes); $pfileId = 42; $agentId = 23; $matchPercent = 50; $uploadtreeId = 512; $uploadId = 123; $left = 2009; $right = 2014; $mydate = "'2014-06-04 14:01:30.551093+02'"; foreach ($licAll as $licenseRefNumber => $shortname) { $this->dbManager->queryOnce("INSERT INTO license_file (rf_fk, agent_fk, rf_match_pct, rf_timestamp, pfile_fk)\n VALUES ({$licenseRefNumber}, {$agentId}, {$matchPercent}, {$mydate}, {$pfileId})"); } $this->dbManager->queryOnce("INSERT INTO uploadtree (uploadtree_pk, upload_fk, pfile_fk, lft, rgt)\n VALUES ({$uploadtreeId}, {$uploadId}, {$pfileId}, {$left}, {$right})"); $licDao = new LicenseDao($this->dbManager); $itemTreeBounds = new ItemTreeBounds($uploadtreeId, "uploadtree", $uploadId, $left, $right); $licenses = $licDao->getLicenseShortnamesContained($itemTreeBounds); assertThat($licenses, is(arrayContainingInAnyOrder(array_values($licAll)))); $licensesForBadAgent = $licDao->getLicenseShortnamesContained($itemTreeBounds, array(2 * $agentId)); assertThat($licensesForBadAgent, is(emptyArray())); $licensesForNoAgent = $licDao->getLicenseShortnamesContained($itemTreeBounds, array()); assertThat($licensesForNoAgent, is(emptyArray())); $this->addToAssertionCount(\Hamcrest\MatcherAssert::getCount() - $this->assertCountBefore); }