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; }
/** * 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]); } } }