function getVariations(array $sequence, array $head = array())
{
    $variations = array();
    $remainder = array_diff($sequence, $head);
    if (!count($remainder)) {
        return array($head);
    }
    foreach ($remainder as $element) {
        $tail = array_diff($remainder, array($element));
        $variation = array_merge($head, array($element), $tail);
        if (isVariationValid($head, $element, $tail)) {
            $newHead = array_merge($head, array($element));
            $newVariations = getVariations($sequence, $newHead);
            $variations = array_merge($variations, $newVariations);
        }
    }
    return $variations;
}
Пример #2
0
/**
 * Launch a channel
 * @param integer ID of the channel
 */
function launchChannel($channelId)
{
    global $db;
    $var = getVariations();
    $sql = "SELECT ARTICLE_ID FROM channel_articles WHERE CHID={$channelId} AND VERSION=0";
    $query = new query($db, $sql);
    while ($query->getrow()) {
        for ($j = 0; $j < count($var); $j++) {
            launchArticle($query->field("ARTICLE_ID"), 10, $var[$j]);
        }
    }
}