User:Fcarpani

= Some Personal Data = I live in Uruguay and I'm a teacher at the state university (Universidad de la República) in the Computer Institute of Ingeneering School (Instituto de Computación, Facultad de Ingeniería).

= Why I use MediaWiki =

I'm trying to use MediaWiki as communication way for several projects. As an effective replacement to BSCW.

= Extension in Use =

I'm using extension:PageSecurity and User:Hex2bit/Calendar. Also I have a "dirty" extensions to protect SpecialPages based on groups.

= I need... =
 * Lean php, a lot more.
 * An english course! (yes, I know !!!! sorry :-) )
 * A lot of other things...

= Contributions =


 * A modified version of PageSecurity which allows a user if he belongs to an allowed group... or not... If the variable $wgPageSecurityAllowGroupAccept is false or not set, then is the normal PageSecurity. If the variable is true then a user is allow if belongs to an allowed group. The modified code is here.


 * An extension that can control the access to SpecialPages based on groups. The code is here.

I need help pls, where shall I paste this? end of specialpage.php? I am trying to access the specail page but say Thanks Dean 'PageSpecialSecurity',     'version'=>$pageSpecialSecurityVersion,     'author'=>'Fernando Carpani',     'url'=>'http://www.mediawiki.org/wiki/User:Fcarpani/SpecialPageSecurity',     'description' => 'Restricts access to special pages according to security definitions'     ); $wgHooks['SpecialPageAuthCheck'][]="SpecialPageAuthCheck"; /* Must be a boolean function. */     // The array $wgSpecialPageAuth have list of group that can execute this special page. // The variable $wgSpecialPageAuthEnable control de check (if true, then the do the check // global $wgSpecialPageAuth; is an array indexed by group and has a regular expression of allowed special page names. // global $wgSpecialPageAuthEnable; function wfSetSpecialPageSecurity {   global $wgSpecialPageAuth,$wgSpecialPageAuthEnable;   if ($wgSpecialPageAuth==NULL){     $wgSpecialPageAuth=array;   }   if ($wgSpecialPageAuthEnable==NULL){     $wgSpecialPageAuthEnable=false;   }         wfDebug("=====>SetSpecialPageSecurity\n"); }  // The implementation is based on a new hook SpecialPageAuthCheck  function SpecialPageAuthCheck{   global $wgSpecialPageAuthErrorPage,$wgUser,$wgTitle,$wgOut;    if (!SpecialPageAuthTest($wgTitle,$wgUser)){     if (empty($wgSpecialPageAuthErrorPage)) return false;     $title = Title::newFromText($wgSpecialPageAuthErrorPage);     $redirectURL = $title->getFullURL; $wgOut->redirect($redirectURL); wfDebug(sprintf("====>SpecialPageAuthCheck: %s user=%d no permitida\n",$wgTitle->mDbkeyform,$wgUser->mId)); return false; } return true; } function SpecialPageAuthTest(&$title,&$user){ global $wgSpecialPageAuthEnable,$wgSpecialPageAuth; //$user=$wgUser; //$title=$wgTitle; wfDebug(sprintf("===>SpecialPageAuthTest: title=%s, user=%d\n",$title->mDbkeyform,$user->mId)); if($wgSpecialPageAuthEnable){ // get user groups wfDebug(sprintf("===>SpecialPageAuthCheck: AuthEnable title=%s,user=%d\n",$title->mDbkeyform,$user->mId)); $user_groups=$user->getEffectiveGroups; // Sysops can execute with basis in other checks. if (in_array("sysop", $user_groups)) { return true; // sysop access override granted } else { // if the user has a group that is allowed to execute this page, then true, else false. foreach($user_groups as $group){ wfDebug(sprintf("===>SpecialPageAuthCheck: user %d in group=%s\n",$user->mId,$group)); #if(preg_match("$wgSpecialPageAuth[$group]",$title->mDbkeyform)){ if(preg_match($wgSpecialPageAuth[$group], $title->mDbkeyform, $matches, PREG_OFFSET_CAPTURE)){ wfDebug(sprintf("===>SpecialPageAuthCheck: return Allowed by group=%s\n",$group)); return true; }        }         return false; }  } else  { return true; } }