title = $this->get_config('title', $this->title); $propbag->add('name', PLUGIN_COMICS_NAME); $propbag->add('description', PLUGIN_COMICS_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Wesley Hwang-Chung'); $propbag->add('version', '1.4.1'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', 'php' => '4.1.0' )); $propbag->add('groups', array('FRONTEND_ENTRY_RELATED')); $propbag->add('event_hooks', array('css' => true, 'entries_header' => true, 'entry_display' => true, 'frontend_fetchentries' => true)); $propbag->add('configuration', array('category', 'show_title', 'raw', 'hide')); } function introspect_config_item($name, &$propbag) { global $serendipity; switch($name) { case 'category': $raw_cat = serendipity_fetchCategories(); $raw_cat = serendipity_walkRecursive($raw_cat, 'categoryid', 'parentid', VIEWMODE_THREADED); $categories = array('' => NONE); if (is_array($raw_cat)) { foreach ($raw_cat as $cat) { $categories[$cat['categoryid']] = str_repeat('-', $cat['depth']) . $cat['category_name']; } } $propbag->add('type', 'select'); $propbag->add('name', PLUGIN_COMICS_CAT); $propbag->add('description', PLUGIN_COMICS_CAT_DESC); $propbag->add('select_values', $categories); $propbag->add('default', ''); break; case 'show_title': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_COMICS_TITLE); $propbag->add('description', PLUGIN_COMICS_TITLE_DESC); $propbag->add('default', 'true'); break; case 'raw': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_COMICS_RAW); $propbag->add('description', PLUGIN_COMICS_RAW_DESC); $propbag->add('default', 'true'); break; case 'hide': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_COMICS_HIDE); $propbag->add('description', PLUGIN_COMICS_HIDE_DESC); $propbag->add('default', 'true'); break; default: return false; } return true; } function timeOffset($timestamp) { if (function_exists('serendipity_serverOffsetHour')) { return serendipity_serverOffsetHour($timestamp, true); } return $timestamp; } function makeQlink($resultset, $label) { if (is_array($resultset) && is_numeric($resultset[0]['id'])) { $link = '' . $label . ''; return $link; } return false; } function jumplinks($id, $cat) { global $serendipity; $links = array(); $cond = array(); $currentTimeSQL = serendipity_db_query("SELECT timestamp FROM {$serendipity['dbPrefix']}entries WHERE id = " . (int)$id, true); $cond['joins'] = " INNER JOIN {$serendipity['dbPrefix']}entrycat ON e.id = {$serendipity['dbPrefix']}entrycat.entryid "; if (is_array($currentTimeSQL)) { $cond['compare'] = "e.timestamp [%1] " . $currentTimeSQL['timestamp']; } else { $cond['compare'] = "e.id [%1] " . (int) $id; } $cond['and'] = " AND e.isdraft = 'false' AND e.timestamp <= " . $this->timeOffset(time()); if ($cat != '') $cond['and'] .= " AND {$serendipity['dbPrefix']}entrycat.categoryid = {$cat}"; serendipity_plugin_api::hook_event('frontend_fetchentry', $cond); $querystring = "SELECT e.id, e.title, e.timestamp FROM {$serendipity['dbPrefix']}entries e {$cond['joins']} WHERE {$cond['compare']} {$cond['and']} ORDER BY e.timestamp [%2] LIMIT 1"; $firsID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('<', 'ASC'), $querystring)); $prevID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('<', 'DESC'), $querystring)); $nextID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('>', 'ASC'), $querystring)); $lastID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('>', 'DESC'), $querystring)); if ($link = $this->makeQlink($firsID, '<< ' . PLUGIN_COMICS_FIRST)) $links[] = $link; if ($link = $this->makeQlink($prevID, '< ' . PREVIOUS)) $links[] = $link; if ($link = $this->makeQlink($nextID, NEXT . ' >')) $links[] = $link; if ($link = $this->makeQlink($lastID, PLUGIN_COMICS_LAST . ' >>')) $links[] = $link; $jumplink = '