function save_settings()
    {
        global $wpdb;
        check_admin_referer('flickr-gallery');
        $options = explode(',', $_POST['page_options']);
        $out = array();
        include_once dirname(__FILE__) . '/phpFlickr.php';
        $phpFlickr = new phpFlickr($_POST['fg-API-key'], empty($_POST['fg-secret']) ? null : $_POST['fg-secret']);
        switch ($_POST['fg-user_id-type']) {
            case 'name':
                $user = $phpFlickr->people_findByUsername($_POST['fg-user_id']);
                $_POST['fg-user_id'] = $user['id'];
                break;
            case 'email':
                $user = $phpFlickr->people_findByEmail($_POST['fg-user_id']);
                $_POST['fg-user_id'] = $user['id'];
                break;
            case 'url':
                $user = $phpFlickr->urls_lookupUser($_POST['fg-user_id']);
                $_POST['fg-user_id'] = $user['id'];
                break;
        }
        if ($_POST['fg-db-cache'] == 1) {
            if (isset($wpdb->charset) && !empty($wpdb->charset)) {
                $charset = ' DEFAULT CHARSET=' . $wpdb->charset;
            } elseif (defined(DB_CHARSET) && DB_CHARSET != '') {
                $charset = ' DEFAULT CHARSET=' . DB_CHARSET;
            } else {
                $charset = '';
            }
            $query = '
				CREATE TABLE IF NOT EXISTS `' . $wpdb->prefix . 'phpflickr_cache` (
					`request` CHAR( 35 ) NOT NULL ,
					`response` MEDIUMTEXT NOT NULL ,
					`expiration` DATETIME NOT NULL ,
					PRIMARY KEY ( `request` )
				)  ' . $charset . '
			';
            $wpdb->query($query);
        }
        /*
        if ( empty($_POST['fg-token']) && !empty($_POST['fg-frob']) ) {
        	$token = $phpFlickr->auth_getToken($_POST['fg-frob']);
        	$_POST['fg-token'] = $token['token'];
        }
        */
        foreach ($options as $o) {
            if (get_option($o) === false) {
                add_option($o, $_POST[$o], null, no);
            } else {
                update_option($o, $_POST[$o]);
            }
            if (is_array($_POST[$o])) {
                $out[] = '"' . $o . '":["' . implode('","', $_POST[$o]) . '"]';
            } else {
                $out[] = '"' . $o . '":"' . addslashes($_POST[$o]) . '"';
            }
        }
        echo '{' . implode(', ', $out) . '}';
        exit;
    }
 function generate_content(&$title)
 {
     global $serendipity;
     $title = $this->get_config('title');
     $username = $this->get_config('email');
     $num = $this->get_config('perpage');
     $choices = $this->get_config('numberOfChoices');
     //added 110730 by artodeto
     $useChoices = $this->get_config('useChoices');
     //added 110730 by artodeto
     $apiKey = $this->get_config('apikey');
     $apiSecret = $this->get_config('apisecret');
     $sourceimgtype = $this->get_config('sourceimgtype');
     $targetimgtype = $this->get_config('targetimgtype');
     $errors = array();
     /* 		Get image data from flickr */
     $f = new phpFlickr($apiKey, $apiSecret);
     $f->enableCache("fs", $serendipity['serendipityPath'] . 'templates_c/', $this->get_config('cachetimeout'));
     if (stristr($username, '@')) {
         $nsid = $f->people_findByEmail($username);
     } else {
         $nsid = $f->people_findByUsername($username);
     }
     if ($nsid === false) {
         $errors[] = PLUGIN_SIDEBAR_FLICKR_ERROR_WRONGUSER;
     }
     /* Can't find user */
     $photos_url = $f->urls_getUserPhotos($nsid['nsid']);
     if ($useChoices === true) {
         $photos = $f->photos_search(array("user_id" => $nsid['nsid'], "per_page" => $choices, "sort" => "date-posted-desc", "extras" => "date_taken"));
     } else {
         $photos = $f->photos_search(array("user_id" => $nsid['nsid'], "per_page" => $num, "sort" => "date-posted-desc", "extras" => "date_taken"));
     }
     if ($photos[total] > 0 && $f) {
         $sizelist = array("0" => "Square", "1" => "Thumbnail", "2" => "Small", "3" => "Medium", "4" => "Large", "5" => "Original");
         if ($useChoices === true) {
             //added 110730 by artodeto
             shuffle($photos['photo']);
             array_splice($photos['photo'], $num);
         }
         foreach ($photos['photo'] as $photo) {
             if ($photo['ispublic'] !== 1) {
                 continue;
             }
             $imgdate = strftime("%d.%m.%y %H:%M", strtotime($photo['datetaken']));
             $imgtitle = $photo['title'];
             /* 				Choose available image size */
             $sizes_available = $f->photos_getSizes($photo[id]);
             $photosize = $sourceimgtype;
             $imgsrcdata = NULL;
             while ($imgsrcdata == NULL && $photosize >= 0) {
                 $imgsrcdata = getsizedata($sizes_available, $sizelist[$photosize]);
                 $photosize--;
             }
             /* If updating from previous versions, $targetimgtype could be -1. So we set it to the next legal value 2. */
             $photosize = max($targetimgtype, 2);
             $imgtrgdata = NULL;
             while ($imgtrgdata == NULL && $photosize >= 0) {
                 $imgtrgdata = getsizedata($sizes_available, $sizelist[$photosize]);
                 $photosize--;
             }
             $img_width = $imgsrcdata['width'];
             $img_height = $imgsrcdata['height'];
             $img_url = $imgsrcdata['source'];
             if ($this->get_config('targetlink') == "JPG") {
                 $link_url = $imgtrgdata['source'];
             } else {
                 $link_url = $imgtrgdata['url'];
             }
             if ($this->get_config('showdate') || $this->get_config('showtitle')) {
                 unset($info);
                 if ($this->get_config('showdate')) {
                     $info .= '<span class="serendipity_plugin_flickr_date">' . $imgdate . '</span>';
                 }
                 if ($this->get_config('showtitle')) {
                     $info .= '<span class="serendipity_plugin_flickr_title">' . $imgtitle . '</span>';
                 }
                 if ($this->get_config('lightbox') != '') {
                     $lightbox = 'rel="' . $this->get_config('lightbox') . '" ';
                 }
                 $images .= sprintf('<dd style="width:%spx;"><a %shref="%s" ><img src="%s" width="%s" height="%s" title="%s" alt="%s"/></a></dd><dt style="width:%spx;margin-left:-%spx;">%s</dt>' . "\n", $img_width, $lightbox, $link_url, $img_url, $img_width, $img_height, $photo[title], $photo[title], $img_width, $img_width + 5, $info);
             } else {
                 $images .= sprintf('<dd style="width:%spx;"><a href="%s"><img src="%s" width="%s" height="%s" alt="%s"/></a></dd>' . "\n", $img_width, $link_url, $img_url, $img_width, $img_height, $photo[title]);
             }
             $i++;
         }
     } else {
         $errors[] = PLUGIN_SIDEBAR_FLICKR_ERROR_NOIMG;
         /* No images available */
     }
     $content = '<dl class="serendipity_plugin_flickr">' . "\n";
     $content .= "\n" . $images;
     $content .= '</dl>';
     $footer = array();
     if ($this->get_config('showrss')) {
         $rssicon = serendipity_getTemplateFile('img/xml.gif');
         $footer[] = '<a class="serendipity_xml_icon" href="http://api.flickr.com/services/feeds/photos_public.gne?id=' . $nsid['nsid'] . '&amp;format=rss_200"><img src="' . $rssicon . '" alt="XML" style="border: 0px" /></a>' . "\n" . '<a href="http://api.flickr.com/services/feeds/photos_public.gne?id=' . $nsid['nsid'] . '&amp;format=rss_200">' . PLUGIN_SIDEBAR_FLICKR_LINK_SHOWRSS . '</a>';
     }
     if ($this->get_config('showphotostream')) {
         $footer[] = '<a href="http://www.flickr.com/photos/' . $username . '/">' . PLUGIN_SIDEBAR_FLICKR_LINK_PHOTOSTREAM . '</a>';
     }
     if (count($footer) > 0) {
         $content .= '<p class="serendipity_plugin_flickr_links">';
         $content .= join("<br />\n", $footer) . "\n";
         $content .= '</p>';
     }
     if (count($errors) > 0) {
         $content .= '<p class="serendipity_plugin_flickr_errors">';
         $content .= join("<br />\n", $errors) . "\n";
         $content .= '</p>';
     }
     echo $content;
 }