/**
  * Process all the rules collection
  *
  * @param input the input data used to check criterias
  * @param output the initial ouput array used to be manipulate by actions
  * @param params parameters for all internal functions
  * @param force_no_cache don't write rule's result into cache (for preview mode mainly)
  *
  * @return the output array updated by actions
  **/
 function processAllRules($input = array(), $output = array(), $params = array(), $force_no_cache = false)
 {
     //If cache enabled : try to get value from the cache
     $new_values = $this->checkDataInCache($input);
     if ($new_values != Rule::RULE_NOT_IN_CACHE) {
         $output["_rule_process"] = true;
         return array_merge($output, $new_values);
     }
     $output = parent::processAllRules($input, $output, $params);
     if (!$force_no_cache && isset($output["_ruleid"])) {
         $this->insertDataInCache($input, $output);
         unset($output["_ruleid"]);
     }
     return $output;
 }