<?php if (!defined('PmWiki')) exit();


/*

 ***** 
 *
 * On Action - Activate recipes in just one line for one action or more
 * On Group - Activate recipes in just one line for one or more groups
 * On Page - Activate recipes in just one line for one or more page names
 * On Mark - Used to pre-match marks in a page from config to activate anything
 *           from recipe loading, set variables to especial configurations
 *
 * Copyright 2018 Carlos A. Bonamigo <cabsec.pmwiki@gmail.com>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 ***** 

*/

$RecipeInfo['OnEvent']['Version'] = '20180220';

# You can include one or more actions
# if one action is found return true
function OnAction($a){
global $action;

$dac = trim($a); # defined action(s)
$act = trim($action); # called action

  if(stripos($dac,',') === false){

    if($dac == $act) return true;
    else return false;

  }else{

  $arr = explode(',',$dac);

    if(is_array($arr)){

      foreach($arr as $v){
        if($act == trim($v)) $found = 1;
      }

      if($found == 1) return true;
      else return false;

    }
  }
}

# You can include one or more groups
# if one group is found return true
# use: if(OnGroup('Site')) echo "Found!";
function OnGroup($g){
global $pagename;

$pgnm = $pagename;
$dgrp = $g; # defined group(s)
$cgrp = PageVar($pgnm,'$Group'); # called group

#echo "<pre>$pgnm, $dgrp, $cgrp</pre>";

  if(stripos($dgrp,',') === false){

    if($dgrp == $cgrp) return true;
    else return false;

  }else{

  $arr = explode(',',$dgrp);

    if(is_array($arr)){

      foreach($arr as $v){
        if(strpos($dgrp,trim("$v")) !== false) $found = 1;
      }

      if($found == 1) return true;
      else return false;

    }
  }
}

# You can include one or more pages
# if one page is found return true
# use: if(OnPage('Home,Miin')) echo "found";
function OnPage($p){
global $pagename;

$pgnm = $pagename;
$dpag = trim($p);# defined group(s)
$cpag = PageVar($pgnm,'$Name');# called group

  if(stripos($dpag,',') === false){

    if($dpag == $cpag) return true;
    else return false;

  }else{

  $arr = explode(',',$dpag);

    if(is_array($arr)){

      foreach($arr as $v){
        if(strpos($dpag,trim("$v")) !== false) $found = 1;
      }

      if($found == 1) return true;
      else return false;

    }
  }
}

# sniff text even if auth does not allow
SDV($OnMarkGetAuth, false);

# You can include one or more marks 
# if one mark is found return true
# use: if(OnMark('loadFonts'))
#   include_once("cookbook/loadfonts.php");
function OnMark($m){
global $OnMarkGetAuth,
 $OnMarkItens,$pagename;

$pgnm = $pagename;
$amrk = $OnMarkGetAuth;
$omrk = $OnMarkItens; # for easy ref
$dmrk = trim($m); # defined mark(s)

# now we get page text
# respect new OnMarkGetAuth var
if (!PageExists($pgnm)) return false;
else{
  if($amrk == false)
    $page = ReadPage($pgnm,READPAGE_CURRENT); 
  else
    $page = RetrieveAuthPage($pgnm, 'read', true, READPAGE_CURRENT);
}

if($page['text'] == '') return false;
else{ PCache($pgnm,$page); $ptxt = $page['text']; }

  if(strpos($dmrk,',') === false){

    if(strpos($ptxt,$dmrk) !== false) return true;
    else return false;

  }else{

  $arr = explode(',',$dmrk);

    if(is_array($arr)){

      foreach($arr as $v){
        if(strpos($ptxt,trim("$v")) !== false) $found = 1;
      }

      if($found == 1) return true;
      else return false;

    }
  }
}