Example #1
0
function anwiki__autoload($sClassName)
{
    static $asClasses;
    if (!$asClasses) {
        $asClasses = array();
        $asClasses['AnwMysql'] = ANWPATH_CLASSES_ABSTRACTION . "class_mysql.php";
        $asClasses['AnwOutput'] = ANWPATH_CLASSES . "class_output.php";
        $asClasses['AnwOutputHtml'] = ANWPATH_CLASSES . "class_output.php";
        $asClasses['AnwParser'] = ANWPATH_CLASSES . "class_parser.php";
        $asClasses['AnwAutoSync'] = ANWPATH_CLASSES . "diff/class_autosync.php";
        $asClasses['AnwXml'] = ANWPATH_CLASSES . "class_xml.php";
        $asClasses['AnwDiffAdded'] = ANWPATH_CLASSES . "diff/class_diffadded.php";
        $asClasses['AnwDiffDeleted'] = ANWPATH_CLASSES . "diff/class_diffdeleted.php";
        $asClasses['AnwDiffEdited'] = ANWPATH_CLASSES . "diff/class_diffedited.php";
        $asClasses['AnwDiffKept'] = ANWPATH_CLASSES . "diff/class_diffkept.php";
        $asClasses['AnwDiffMoved'] = ANWPATH_CLASSES . "diff/class_diffmoved.php";
        $asClasses['AnwDiff'] = ANWPATH_CLASSES . "diff/class_diffs.php";
        $asClasses['AnwDiffs'] = ANWPATH_CLASSES . "diff/class_diffs.php";
        $asClasses['AnwFeed'] = ANWPATH_CLASSES . "class_feed.php";
        $asClasses['AnwFeedItem'] = ANWPATH_CLASSES . "class_feed.php";
        $asClasses['AnwActionGlobal'] = ANWPATH_CLASSES . "class_actionglobal.php";
        $asClasses['AnwActionPage'] = ANWPATH_CLASSES . "class_actionpage.php";
        $asClasses['AnwActionMinimal'] = ANWPATH_CLASSES . "class_actionminimal.php";
        $asClasses['AnwChange'] = ANWPATH_CLASSES . "class_change.php";
        $asClasses['AnwLock'] = ANWPATH_CLASSES . "class_lock.php";
        $asClasses['AnWiki'] = ANWPATH_CLASSES . "class_anwiki.php";
        $asClasses['AnwDependancy'] = ANWPATH_CLASSES . "dependancy/class_dependancy.php";
        $asClasses['AnwDependancyConflict'] = ANWPATH_CLASSES . "dependancy/class_dependancy.php";
        $asClasses['AnwDependancyRequirement'] = ANWPATH_CLASSES . "dependancy/class_dependancy.php";
        $asClasses['AnwGoogleMap'] = ANWPATH_CLASSES . "external/google/maps/class_googlemap.php";
    }
    if (class_exists('AnwDebug')) {
        AnwDebug::log("***AUTOLOAD***: " . $sClassName);
    }
    /*if ($sClassName == "AnwContentClasses") {
    		try{
    			throw new Exception();
    		}
    		catch(Exception $e){
    		print_r($e->getTrace());
    		}
    	}*/
    if (isset($asClasses[$sClassName])) {
        loadApp($asClasses[$sClassName]);
    } else {
        //interface of contentclass
        $sPattern = '!AnwIContentFieldPage_([^_]*?)_(.*?)$!i';
        //ie: AnwIContentFieldPage_menu_menuSubItem belongs to "menu"
        if (preg_match($sPattern, $sClassName, $asMatches)) {
            $sContentClassName = $asMatches[1];
            //AnwContentClasses::loadContentClassInterface($sContentClassName);
            AnwUtils::loadContentClassInterfaceFaster($sContentClassName);
        } else {
            $sPattern = '!AnwIContentClassPageDefault_(.*?)$!i';
            //ie: AnwIContentClassPageDefault_menu belongs to "menu"
            if (preg_match($sPattern, $sClassName, $asMatches)) {
                $sContentClassName = $asMatches[1];
                //AnwContentClasses::loadContentClassInterface($sContentClassName);
                AnwUtils::loadContentClassInterfaceFaster($sContentClassName);
            } else {
                //contentclass: default
                $sPattern = '!AnwContentClassPageDefault_(.*)$!i';
                if (preg_match($sPattern, $sClassName, $asMatches)) {
                    $sContentClassName = $asMatches[1];
                    AnwContentClasses::loadContentClass($sContentClassName);
                } else {
                    //contentclass: override
                    $sPattern = '!AnwContentClassPageOverride_(.*)$!i';
                    if (preg_match($sPattern, $sClassName, $asMatches)) {
                        $sContentClassName = $asMatches[1];
                        AnwContentClasses::loadContentClass($sContentClassName);
                    } else {
                        $sPattern = '!AnwDatatype(.*)$!i';
                        if (preg_match($sPattern, $sClassName)) {
                            loadApp(ANWPATH_CLASSES . "class_datatype.php");
                        } else {
                            //__autoload is called for {AnwContentField, AnwContentMultiplicity...} althought we don't really need it
                            $sPattern = '!(AnwStructuredContentFieldsContainer|AnwContent|AnwContentPage|AnwSettingsContent|AnwContentClasses|AnwStructuredContent(.*)|AnwContentSettings)$!i';
                            if (preg_match($sPattern, $sClassName)) {
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentclasses.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentclass.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_content.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield.php");
                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentmultiplicity.php");
                            } else {
                                if (preg_match('!(AnwStructuredContentFieldsContainerPage|AnwContentClassPage)$!i', $sClassName)) {
                                    loadApp(ANWPATH_CLASSES . "contentclass/class_contentclass_page.php");
                                } else {
                                    if (preg_match('!(AnwStructuredContentFieldsContainerSettings|AnwContentClassSettings)$!i', $sClassName)) {
                                        loadApp(ANWPATH_CLASSES . "contentclass/class_contentclass_settings.php");
                                    } else {
                                        if (preg_match('!(AnwContentFieldPage(.*)|AnwContentFieldPage_(.*))$!i', $sClassName)) {
                                            loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_page.php");
                                        } else {
                                            if (preg_match('!(AnwContentFieldSettings(.*))$!i', $sClassName)) {
                                                loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_settings.php");
                                            } else {
                                                if (preg_match('!(AnwISettings_(.*))$!i', $sClassName)) {
                                                    loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_settings_interface.php");
                                                } else {
                                                    if (preg_match('!(AnwIPage_(.*))$!i', $sClassName)) {
                                                        loadApp(ANWPATH_CLASSES . "contentclass/class_contentfield_page_interface.php");
                                                    } else {
                                                        if (class_exists('AnwDebug')) {
                                                            AnwDebug::log('***AUTOLOAD*** failed');
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}