Add script to get highest related tag
This commit is contained in:
parent
0ea9c31845
commit
50ff1a2339
56
src/NodaHierarchyHelper.php
Normal file
56
src/NodaHierarchyHelper.php
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
<?PHP
|
||||||
|
/**
|
||||||
|
* Helper for noda hierarchies.
|
||||||
|
*
|
||||||
|
* @author Joshua Ramon Enslin <joshua@jrenslin.de>
|
||||||
|
*/
|
||||||
|
declare(strict_types = 1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class for splitting times.
|
||||||
|
*/
|
||||||
|
final class NodaHierarchyHelper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds highest related tag.
|
||||||
|
*
|
||||||
|
* @param MDMysqli $mysqli_noda DB connection.
|
||||||
|
* @param integer $tag_id Tag ID to find in hierarchy.
|
||||||
|
* @param MDMysqliStmt|null $higherStmt Statement for getting higher IDs from
|
||||||
|
* the hierarchy.
|
||||||
|
*
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
public static function findHighestRelatedTag(MDMysqli $mysqli_noda, int $tag_id, $higherStmt = null):int {
|
||||||
|
|
||||||
|
$builtHigherStmt = false;
|
||||||
|
if (!$higherStmt instanceOf MDMysqliStmt) {
|
||||||
|
$higherStmt = $mysqli_noda->do_prepare("SELECT `tag_mayor_id`
|
||||||
|
FROM `tag_relation`
|
||||||
|
WHERE `tag_relation`.`tag_relation` != 2
|
||||||
|
AND `tag_menor_id` = ?
|
||||||
|
LIMIT 1");
|
||||||
|
$builtHigherStmt = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$higherStmt->bind_param("i", $tag_id);
|
||||||
|
$higherStmt->execute();
|
||||||
|
|
||||||
|
$result = $higherStmt->do_get_result();
|
||||||
|
if ($cur = $result->fetch_row()) {
|
||||||
|
$curID = (int)$cur[0];
|
||||||
|
$output = self::findHighestRelatedTag($mysqli_noda, $curID, $higherStmt);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$output = $tag_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($builtHigherStmt === true) {
|
||||||
|
$higherStmt->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user