get_config('media_hotlinks_only','no') == 'no') { $select['gallery'] = ALL_DIRECTORIES; $paths = serendipity_traversePath($serendipity['serendipityPath'] . $serendipity['uploadPath']); foreach ( $paths as $folder ) { $select[$folder['relpath']] = str_repeat('-', $folder['depth']) . ' '. $folder['name']; } $propbag->add('type', 'select'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_DIRECTORY_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_DIRECTORY_DESC); $propbag->add('select_values', $select); } break; case 'media_image_strict': if ($this->get_config('media_hotlinks_only','no') == 'no') { $propbag->add('type', 'radio'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_IMAGESTRICT_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_IMAGESTRICT_DESC); $propbag->add('radio', array( 'value' => array('yes','no'), 'desc' => array(YES,NO) )); $propbag->add('radio_per_row', '2'); $propbag->add('default', 'yes'); } break; case 'media_number_images': $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_NUMIMAGES_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_NUMIMAGES_DESC); $propbag->add('default', '1'); break; case 'media_rotate_time': $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_ROTATETIME_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_ROTATETIME_DESC); $propbag->add('default', '60'); break; case 'media_linkbehavior': $select["inpage"] = PLUGIN_SIDEBAR_MEDIASIDEBAR_LINKBEHAVIOR_INPAGE; $select["popup"] = PLUGIN_SIDEBAR_MEDIASIDEBAR_LINKBEHAVIOR_POPUP; $select["url"] = PLUGIN_SIDEBAR_MEDIASIDEBAR_LINKBEHAVIOR_URL; $select["entry"] = PLUGIN_SIDEBAR_MEDIASIDEBAR_LINKBEHAVIOR_ENTRY; $select['none'] = NONE; if (class_exists('serendipity_event_usergallery')){ $select["gallery"] = PLUGIN_SIDEBAR_MEDIASIDEBAR_LINKBEHAVIOR_GALLERY; } $propbag->add('type', 'select'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_LINKBEHAVIOR_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_LINKBEHAVIOR_DESC); $propbag->add('select_values', $select); $propbag->add('default', 'inpage'); break; case 'media_lightbox': $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_LIGHTBOX_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_LIGHTBOX_DESC); $propbag->add('default', ''); break; case 'media_fixed_width': $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_WIDTH_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_WIDTH_DESC); $propbag->add('default', '162'); break; case 'media_url': if ($this->get_config('media_linkbehavior') == 'url') { $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_URL_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_URL_DESC); $propbag->add('default', $serendipity['baseURL']); } break; case 'media_gal_permalink': if ($this->get_config('media_linkbehavior') == 'gallery') { $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_GALPERM_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_GALPERM_DESC); $propbag->add('default', $serendipity['rewrite'] != 'none' ? $serendipity['serendipityHTTPPath'] . 'pages/gallery.html' : $serendipity['serendipityHTTPPath'] . $serendipity['indexFile'] . '?serendipity[subpage]=gallery'); } break; case 'media_intro': $propbag->add('type', 'html'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_INTRO); $propbag->add('description', ''); $propbag->add('default', ''); break; case 'media_summery': $propbag->add('type', 'html'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_SUMMERY); $propbag->add('description', ''); $propbag->add('default', ''); break; case 'media_hotlinks_only': $propbag->add('type', 'radio'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_HOTLINKS_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_HOTLINKS_DESC); $propbag->add('radio', array( 'value' => array('yes','no'), 'desc' => array(YES,NO) )); $propbag->add('radio_per_row', '2'); $propbag->add('default', 'no'); break; case 'media_hotlink_base': if ($this->get_config('media_hotlinks_only','no') == 'yes') { $propbag->add('type', 'string'); $propbag->add('name', PLUGIN_SIDEBAR_MEDIASIDEBAR_HOTLINKBASE_NAME); $propbag->add('description', PLUGIN_SIDEBAR_MEDIASIDEBAR_HOTLINKBASE_DESC); $propbag->add('default', ''); } break; default: return false; break; } return true; } function generate_content_custom(&$title) { global $serendipity; $update = true; $rotate_time = $this->get_config('media_rotate_time'); $next_update = $this->get_config('media_next_update',''); if (@include_once("Cache/Lite.php")) { $cache_obj = new Cache_Lite( array('cacheDir' => $serendipity['serendipityPath'].'templates_c/','automaticSerialization' => true)); $cache_output = $cache_obj->get('mediasidebar_cache'); } else { $cache_output = $this->get_config('media_cache_output',''); } if ($rotate_time !=0 ) { if ($next_update > time()) { $update = false; } else { $next_update = $this->calc_update_time($rotate_time,$next_update); $this->set_config('media_next_update',$next_update); } } $title = $this->get_config('title', $this->title); if ($update || $cache_output == '') { $output_str = ''; if ($this->get_config('media_image_strict') == 'yes') { $strict = true; } else { $strict = false; } if ($this->get_config('media_hotlinks_only','no')== 'yes') { $dir_extension = $this->get_config('media_hotlink_base',''); if ($dir_extension != '' ) { $dir_extension = $dir_extension . '%'; } $directory = "http://%" . $dir_extension; $strict = false; } else { $directory = $this->get_config('media_base_directory'); } if (version_compare((float)$serendipity['version'],'1.1','>=')) { if ($directory == 'gallery') {$directory = '';} $images_all = serendipity_fetchImagesFromDatabase(0, 0, $total, false, false, $directory,'','', array(), $strict); } else { $images_all = $this->mediasidebar_getimage($directory,$strict); } $number = $this->get_config('media_number_images'); $total_count = count($images_all); if ($total_count < $number) { $number = $total_count; } $images = array(); $random_check = array(); for ( $counter = 0; $counter < $number; $counter += 1) { $checkit = rand(0, $total_count-1); while (in_array($checkit,$random_check)) { $checkit = rand(0, $total_count); } $random_check[] = $checkit; $images[] = $images_all[$checkit]; } $width_test = $this->get_config('media_fixed_width'); if ($width_test > 0) { $width_str = 'width:'.$width_test.'px;'; } if (is_array($images)) { $output_str .= $this->get_config('media_intro'); foreach ($images as $image) { serendipity_prepareMedia($image); if (isset($image['name'])) { if ($image['hotlink'] == 1) { $thumb_path = $image_path = $image['path']; } else { $image_path = $serendipity['serendipityHTTPPath'].$serendipity['uploadPath'].$image['path'].$image['name'].'.'.$image['extension']; $thumb_path = $serendipity['serendipityHTTPPath'].$serendipity['uploadPath'].$image['path'].$image['name'].'.'.$image['thumbnail_name'].'.'.$image['extension']; if (!serendipity_isImage($image)) { $thumb_path = serendipity_getTemplateFile('admin/img/mime_unknown.png'); $width_str = ''; } } $output_str .= '
'; switch ($this->get_config("media_linkbehavior")) { case 'entry': $e = $this->fetchLinkedEntries($image['id'], $image_path, $thumb_path, true); if (is_array($e)) { $link = serendipity_archiveURL($e[0]['id'], $e[0]['title'], 'serendipityHTTPPath', true, array('timestamp' => $e[0]['timestamp'])); } else { $link = $image_path; } $output_str .= ''; break; case 'popup': $output_str .= ''; break; case 'url': $output_str .= ''; break; case 'gallery': $gallery_str = $this->get_config('media_gal_permalink'); if (strstr($gallery_str,'?')) { $gallery_str = $gallery_str.'&serendipity[image]='.$image['id']; } else { $gallery_str = $gallery_str.'?serendipity[image]='.$image['id']; } $output_str .= ''; break; case 'none': $output_str .= ''; break; case 'inpage': default: $output_str .= 'get_config('media_lightbox', '') . ' href="'.$image_path.'">'; break; } $output_str .= '
'; } } $output_str .= $this->get_config('media_summery'); } else { $output_str = 'Error accessing images.'; } if (class_exists('Cache_Lite') && is_object($cache_obj)) { $cache_obj->save($output_str,'mediasidebar_cache'); } else { $this->set_config('media_cache_output',$output_str); } } else { $output_str = $cache_output; } echo $output_str; } function mediasidebar_getimage($directory,$strict = false) { global $serendipity; if ($directory == 'gallery') {$directory = '';} if (!$strict) { if ($directory == '') { $directorysql = ''; } else { $directorysql = "WHERE path LIKE '".serendipity_db_escape_string($directory)."%'"; } } else { $directorysql = "WHERE path = '".serendipity_db_escape_string($directory)."'"; } $query = "SELECT * FROM {$serendipity['dbPrefix']}images $directorysql"; $rs = serendipity_db_query($query, false, 'assoc'); if (!is_array($rs)) return false; return $rs; } function cleanup_custom() { $this->set_config('media_next_update',''); } function calc_update_time ($rotate_time,$last_update) { $next_time = mktime(date("H"), date("i"), 0, date("m"), date("d"), date("Y")); if ($last_update == '') { $last_update = mktime(date("H"), 0, 0, date("m"), date("d"), date("Y")); } if ($rotate_time !=0 ) { if ($rotate_time > 1440) { $rotate_time = 1440; } $day = (int) ($rotate_time / 1440); $hours = (int) (($rotate_time % 1440)/ 60); $minutes = (int) ((($rotate_time % 1440) % 60)/1); while ($next_time < time()) { $next_time = mktime(date("H",$last_update)+$hours, date("i",$last_update)+$minutes, 0, date("m",$last_update), date("d",$last_update)+ $day, date("Y",$last_update)); $last_update = $next_time; } } return $next_time; } // Fetches a list of referenced entries function fetchLinkedEntries($id, $big, $thumb, $single = false) { global $serendipity; if (strtolower($serendipity['dbType']) != 'mysql' && strtolower($serendipity['dbType']) != 'mysqli') { return false; } $q = "SELECT e.id, e.timestamp, e.title FROM {$serendipity['dbPrefix']}entries AS e WHERE (MATCH(e.title, e.body, e.extended) AGAINST ('" . serendipity_db_escape_string($big) . "') OR MATCH(e.title, e.body, e.extended) AGAINST ('" . serendipity_db_escape_string($thumb) . "')) AND (e.body REGEXP '(" . preg_quote(serendipity_db_escape_String($thumb)) . "|" . preg_quote(serendipity_db_escape_string($big)) . ")' OR e.extended REGEXP '(" . preg_quote(serendipity_db_escape_String($thumb)) . "|" . preg_quote(serendipity_db_escape_string($big)) . ")') AND e.isdraft = 'false' ORDER BY e.timestamp DESC"; $e = serendipity_db_query($q, false, 'assoc'); if (is_array($e)) { $_e = $e; $e = array(); foreach($_e AS $idx => $item) { $e[$item['id']] = $item; } } if ($single && is_array($e)) { reset($e); $return = array( 0 => current($e) ); return $return; } return $e; } } /* vim: set sts=4 ts=4 expandtab : */