Parse error: syntax error, unexpected $end in !!

Discussion in 'PHP' started by Apolly0n, Jan 25, 2010.

  1. #1
    Hello.
    I am newbie to PHP.
    I try to install one WordPress Theme: Rockwell
    But I have a problem. When I activate Theme from WordPress Admin Panel I get this error:

    Parse error: syntax error, unexpected $end in E:\xampp\xampp\htdocs\wordpress\wp-content\themes\rockwell\functions.php on line 220
    Code (markup):
    Here is code in functions.php file:

    <?php if ( function_exists('register_sidebar') )
        register_sidebar(array(
            'before_widget' => '',
            'after_widget' => '',
            'before_title' => '<h2>',
            'after_title' => '</h2>',
        ));
    
            function content($num) {  
            $theContent = get_the_content();  
            $output = preg_replace('/<img[^>]+./','', $theContent);  
            $limit = $num+1;  
            $content = explode(' ', $output, $limit);  
            array_pop($content);  
            $content = implode(" ",$content)."...";  
            echo $content;  
    }
    
    function post_is_in_descendant_category( $cats, $_post = null )
    {
        foreach ( (array) $cats as $cat ) {
            // get_term_children() accepts integer ID only
            $descendants = get_term_children( (int) $cat, 'category');
            if ( $descendants && in_category( $descendants, $_post ) )
                return true;
        }
        return false;
    }
    
    //custom comments
    
    function mytheme_comment($comment, $args, $depth) {
       $GLOBALS['comment'] = $comment; ?>
       <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
          
    
         <div id="comment-<?php comment_ID(); ?>">
          <div class="comment-author vcard">
          <div class="comment-meta commentmetadata">
           <?php echo get_avatar($comment,$size='32',$default='http://www.gravatar.com/avatar/61a58ec1c1fba116f8424035089b7c71?s=32&d=&r=G' ); ?>
          <?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?> <br /><?php printf(__('<strong>%s</strong> says:'), get_comment_author_link()) ?><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>
             
          </div>
          <?php if ($comment->comment_approved == '0') : ?>
             <em><?php _e('Your comment is awaiting moderation.') ?></em>
             <br />
          <?php endif; ?>
    
          <div class="text"><?php comment_text() ?></div>
    
          <div class="reply">
             <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
          </div>
         </div>
    <?php }
    add_action('admin_menu', 'rockwell_theme_page');
    
    function rockwell_theme_page ()
    {
        if ( count($_POST) > 0 && isset($_POST['rockwell_settings']) )
        {
            $options = array ( 'style','logo_img','logo_alt','logo_txt', 'logo_tagline', 'tagline_width', 'contact_email','ads', 'advertise_page', 'twitter_link', 'facebook_link', 'flickr', 'about_tit', 'about_txt', 'analytics');
            
            foreach ( $options as $opt )
            {
                delete_option ( 'rockwell_'.$opt, $_POST[$opt] );
                add_option ( 'rockwell_'.$opt, $_POST[$opt] );    
            }            
            
             
        }
        add_theme_page(__('Rockwell Options'), __('Rockwell Options'), 'edit_themes', basename(__FILE__), 'rockwell_settings');    
    }
    function rockwell_settings ()
    {?>
    <div class="wrap">
        <h2>Rockwell Options Panel</h2>
        
    <form method="post" action="">
        <table class="form-table">
            <!-- General settings -->
            <tr>
                <th colspan="2"><strong>General Settings</strong></th>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="style">Theme Color Scheme</label></th>
                <td><select name="style" id="style">
                  <option value="pink.css" selected="selected" <?php if(get_option('rockwell_style') == 'pink.css'){?>selected="selected"<?php }?>>pink.css</option>
                  <option value="blue.css" <?php if(get_option('rockwell_style') == 'blue.css'){?>selected="selected"<?php }?>>blue.css</option>
                  <option value="orange.css" <?php if(get_option('rockwell_style') == 'orange.css'){?>selected="selected"<?php }?>>orange.css</option>
                </select></td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="logo_img">Logo image (full path to image)</label></th>
                <td>
                    <input name="logo_img" type="text" id="logo_img" value="<?php echo get_option('rockwell_logo_img'); ?>" class="regular-text" />
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="logo_alt">Logo image ALT text</label></th>
                <td>
                    <input name="logo_alt" type="text" id="logo_alt" value="<?php echo get_option('rockwell_logo_alt'); ?>" class="regular-text" />
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="logo_txt">Text logo</label></th>
                <td>
                    <input name="logo_txt" type="text" id="logo_txt" value="<?php echo get_option('rockwell_logo_txt'); ?>" class="regular-text" />
                    <br /><em>Leave this empty if you entered an image as logo</em>
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="logo_tagline">Logo Tag Line</label></th>
                <td>
                    <input name="logo_tagline" type="text" id="logo_tagline" value="<?php echo get_option('rockwell_logo_tagline'); ?>" class="regular-text" />
                </td>
            </tr>
            
            <tr valign="top">
                <th scope="row"><label for="tagline_width">Tag Line Box Width (px)</label><br /><em style="font-size:11px">Default width: 300px</em></th>
                <td>
                    <input name="tagline_width" type="text" id="tagline_width" value="<?php echo get_option('rockwell_tagline_width'); ?>" class="regular-text" />
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="contact_email">Email Address for Contact Form</label></th>
                <td>
                    <input name="contact_email" type="text" id="contact_email" value="<?php echo get_option('rockwell_contact_email'); ?>" class="regular-text" />
                </td>
            </tr>
            
            <tr valign="top">
                <th scope="row"><label for="twitter_link">Twitter link</label></th>
                <td>
                    <input name="twitter_link" type="text" id="twitter_link" value="<?php echo get_option('rockwell_twitter_link'); ?>" class="regular-text" />
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="facebook_link">Facebook link</label></th>
                <td>
                    <input name="facebook_link" type="text" id="facebook_link" value="<?php echo get_option('rockwell_facebook_link'); ?>" class="regular-text" />
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="flickr">Flickr Photostream</label></th>
                <td>
                    <select name="flickr" id="flickr">
                        <option value="yes" <?php if(get_option('rockwell_flickr') == 'yes'){?>selected="selected"<?php }?>>Yes</option>
                        <option value="no" <?php if(get_option('rockwell_flickr') == 'no'){?>selected="selected"<?php }?>>No</option>
                    </select> 
                    <br /><em>Make sure you have FlickrRSS plugin activated if you choose to enable Flickr Photostream</em>
                </td>
            </tr>
            <!-- Sidebar ABout Box-->
            <tr>
                <th colspan="2"><strong>Sidebar About Box</strong></th>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="about_tit">Title</label></th>
                <td>
                    <input name="about_tit" type="text" id="about_tit" value="<?php echo get_option('rockwell_about_tit'); ?>" class="regular-text" />
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="about_txt">Text</label></th>
                <td>
                    <textarea cols="60" rows="5" name="about_txt" type="text" id="about_txt" class="regular-text" /><?php echo get_option('rockwell_about_txt'); ?></textarea>
                </td>
            </tr>
            <!-- Ads Box Settings -->
            <tr>
                <th colspan="2"><strong>Ads Box Settings</strong></th>
            </tr>
            <tr>
                <th><label for="ads">Ads Section Enabled:</label></th>
                <td>
                    <select name="ads" id="ads">
                        <option value="yes" <?php if(get_option('rockwell_ads') == 'yes'){?>selected="selected"<?php }?>>Yes</option>
                        <option value="no" <?php if(get_option('rockwell_ads') == 'no'){?>selected="selected"<?php }?>>No</option>
                    </select> 
                    <br /><em>Make sure you have AdMinister plugin activated and have the position "Sidebar" created within the plugin.</em>
                </td>
            </tr>
            <tr valign="top">
                <th scope="row"><label for="advertise_page">Advertise Page</label></th>
                <td>
                    <?php wp_dropdown_pages("name=advertise_page&show_option_none=".__('- Select -')."&selected=" .get_option('rockwell_advertise_page')); ?>
                </td>
            </tr>
            
            <!-- Google Analytics -->
            <tr>
                <th><label for="ads">Google Analytics code:</label></th>
                <td>
                    <textarea name="analytics" id="analytics" rows="7" cols="70" style="font-size:11px;"><?php echo stripslashes(get_option('rockwell_analytics')); ?></textarea>
                </td>
            </tr>
            
            
        </table>
        <p class="submit">
            <input type="submit" name="Submit" class="button-primary" value="Save Changes" />
            <input type="hidden" name="rockwell_settings" value="save" style="display:none;" />
        </p>
    </form>
    
    </div>
    <? }?>
    <?php function get_first_image() {
    global $post, $posts;
    $first_img = '';
    ob_start();
    ob_end_clean();
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];
    if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";
    }
    return $first_img;
    } ?>
    Code (markup):
    Hope you help me to solve this problem!
    Thanks.
     
    Apolly0n, Jan 25, 2010 IP
  2. jwitt98

    jwitt98 Peon

    Messages:
    145
    Likes Received:
    9
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Not entirely sure, but here's a thought.
    Depending on how they are configured, some php servers will allow starting php with just:
    <?
    PHP:
    Others require:
    <?php
    PHP:
    You may have a server that requires the latter. Now take a look at line 208. Try changing:
    <? }?>
    PHP:
    to:
    <?php }?>
    PHP:
    From my limited php experience, the error you're getting usually happens when there is a missing close bracket somewhere. My thought is that php is not parsing that close bracket
     
    jwitt98, Jan 25, 2010 IP
  3. Apolly0n

    Apolly0n Peon

    Messages:
    47
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    You are right!
    Thank you, my problem was solved.
     
    Apolly0n, Jan 25, 2010 IP
  4. danx10

    danx10 Peon

    Messages:
    1,179
    Likes Received:
    44
    Best Answers:
    2
    Trophy Points:
    0
    #4
    Their won't always be short tags enabled (on every server), the best thing to do is spare a second to add the extra "php" would save you time in the future.
     
    danx10, Jan 25, 2010 IP