SitePoint Sponsor

User Tag List

Results 1 to 2 of 2
  1. #1
    SitePoint Zealot
    Join Date
    Jan 2004
    Location
    USA
    Posts
    125
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Cannot figure out how to add definition...

    The following page (http://handycode.kahi.cz/my/?code=php:font-switcher), has a script I'd like to try.

    Below is the way they have the code displayed. I cannot figure out how to test this. Are you supposed to include the definition in some fashion? I have the distinct feeling its something obvious I'm overlooking. :)


    Definition

    PHP Code:
    <?php
    /*
     * (c) 2007, Peter Kahoun aka Kahi
     *   web:  kahi.cz
     *   mail: kahi@kahi.cz  
     * BSD licence
     * 
     * Version: 1.0 RC1
     * Last change: 3.3.2007
    **/

    // SETTINGS

    $sett_influenced_elements 'body';

    $sett_fonts '
      Arial;sans-serif
      Times;serif
    '
    ;

    $sett_address $_SERVER['SERVER_NAME'];

    // CLASS

    class FontSwitcher {

      var 
    $fonts;
      var 
    $active_font;
      var 
    $default_font;
      var 
    $unique_string;
      var 
    $influenced_elements;


      
    // Parse settings // Create unique string // Find active font // Check switching
      
    function FontSwitcher () {
        
    session_start();

        
    // Parse fonts from settings
        
    global $sett_fonts;
        
    $sett_fonts explode ("\n"trim ($sett_fonts));
        
    $row_count count($sett_fonts);

        for (
    $i 0$i $row_count$i++) {
          
    $row $sett_fonts[$i];
          
    $row explode (';'$row);

          
    $fonts[trim ($row[0])] = trim ($row[1]);

          if (
    $i == 0) {
            
    $this -> default_font = array('name' => $row[0], 'family' => $row[1]);
          }
        }

        
    $this -> fonts $fonts;

        
    // Create unique string and so
        
        
    global $sett_address;
        
    $this -> unique_string 'font_switcher_' substrmd5($sett_address), 0);

        global 
    $sett_influenced_elements;
        
    $this -> influenced_elements $sett_influenced_elements;

        
    // Find active font
        
        
    $font_session = @$_SESSION [$this -> unique_string];
        
    $font_cookie = @$_COOKIE [$this -> unique_string];

        if (isset (
    $font_sess) AND array_key_exists($font_sess$fonts)) {
          
    $active_font $font_sess;

        } elseif (isset (
    $font_cookie) AND array_key_exists($font_cookie$fonts)) {
          
    $active_font $font_cookie;

        } else {
          
    $active_font $this -> default_font['name'];
        }

        
    $this -> active_font $active_font;

        
    // Check switching
        
    $this -> SwitchFont();
      }

      
      
    // Switch it easy
      
    function SwitchFont () {
        if (isset (
    $_GET['font_switcher'])) {
          
    $new_font $_GET['font_switcher'];

          if (
    $new_font) {
            
    setcookie($this -> unique_string$new_fonttime()+30*24*3600);
            
    $_SESSION[$this -> unique_string] = $new_font;
            
    Header ('Location: '.$_SERVER['HTTP_REFERER']);
          }
        }
      }


      
    // Echoes <style> element with right css definition
      
    function EchoCss () {
        
    $active_font $this -> active_font;
        
    $fonts $this -> fonts;
        if (
    array_key_exists ($active_font$fonts)) {
          
    $family $fonts [$active_font];
          
    $message '';
        } else {
          
    $family $this->default_font['family'];
          
    $message "/* '$active_font' family definition not found. Default font is: '"$this->default_font['name'] ."'  */ \n";
        }

        echo 
    "\n" '<style type="text/css">' "\n" $message $this -> influenced_elements " {font-family: $family } \n</style>\n";

      }

      
    // Links that cause switching :)
      
    function EchoLinks ($separator ' ') {
        
    $fonts $this -> fonts;
        
    $active_font $this -> active_font;
        
    $fonts_count count($fonts);

        
    $active_address 'http://' $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
        
    $active_address_any_par strpos($active_address'?');
        
    $active_address .= ($active_address_any_par) ? '&' '?';

        
    $link_list = array();

        foreach (
    $fonts as $font => $family) {
          if (
    $active_font != $font) {
            
    $link_list[] = '<a href="'$active_address 'font_switcher=' $font .'" rel="nofollow">' $font '</a>';
          } else {
            
    $link_list[] = $font;
          }

        }

        echo 
    implode ($separator$link_list);
      }
      
    // This is the end...

    ?>

    Using:

    PHP Code:
    <?php $fs = new FontSwitcher(); ?>
    <html>
    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <title>Font Switcher demonstration page</title>

    <style type="text/css">
     #all {width:400px; margin:2em auto; padding:2em;}
    </style>

    <?php $fs -> EchoCss (); ?>

    </head>

    <body>
    <div id="all">

        <h1>Font Switcher demonstration page</h1>

        <p>Lorem ipsum dolor sit amet consectetuer nisl sit et dui tincidunt. In Vivamus Maecenas Ut eu habitant vel Curabitur Morbi at faucibus. Magnis magna sagittis non auctor pretium odio Ut nibh dis felis. Leo facilisi Nunc turpis enim tortor Nunc elit nibh Sed wisi. Justo felis rutrum massa metus lacus Curabitur Nulla orci vel nisl. Habitasse nisl cursus ante tincidunt congue aliquet Nulla Vivamus lacus interdum.</p>
        
        <p><?php $fs -> EchoLinks (' / '); ?></p>
        
        <p>&copy; 2007, <a href="http://kahi.cz">Kahi</a> </p>
    </div>
    </body>
    </html>

  2. #2
    SitePoint Enthusiast
    Join Date
    Mar 2007
    Location
    Toronto
    Posts
    58
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You're going to need to

    include() the php file containing the class definition

    PHP Code:
    <?php 
    include("/path/to/fontSwitcher.php");
    $fs = new FontSwitcher();
    ?>


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •