add('name', PLUGIN_EVENT_PHOTOBLOG_TITLE); $propbag->add('description', PLUGIN_EVENT_PHOTOBLOG_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Cameron MacFarland'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', 'php' => '4.1.0' )); $propbag->add('version', PLUGIN_EVENT_PHOTOBLOG_VERSION); $propbag->add('event_hooks', array( 'backend_display' => true, 'frontend_display' => true, 'entry_display' => true )); $propbag->add('groups', array('IMAGES')); $this->supported_properties = array('photoname'); } function generate_content(&$title) { $title = $this->title; } function install() { $this->checkScheme(); } function checkScheme() { global $serendipity; $version = $this->get_config('version', '0.9'); if ($version != PLUGIN_EVENT_PHOTOBLOG_VERSION) { if ((float)$version < 1.0) { $q = "CREATE TABLE {$serendipity['dbPrefix']}photoblog ( entryid int(11) default null, photoid int(11) default null )"; $sql = serendipity_db_schema_import($q); $q = "CREATE INDEX kentryid ON {$serendipity['dbPrefix']}photoblog (entryid);"; $sql = serendipity_db_schema_import($q); } if ((float)$version < 1.2) { $q = "ALTER TABLE {$serendipity['dbPrefix']}photoblog ADD use_thumbnail {BOOLEAN};"; $sql = serendipity_db_schema_import($q); $q = "UPDATE {$serendipity['dbPrefix']}photoblog SET use_thumbnail = '';"; serendipity_db_query($q); } $this->set_config('version', PLUGIN_EVENT_PHOTOBLOG_VERSION); } } function addPhoto($entryid, $photoid, $thumb = false) { global $serendipity; $q = "INSERT INTO {$serendipity['dbPrefix']}photoblog (entryid, photoid, use_thumbnail) VALUES (" . (int)$entryid . ", " . (int)$photoid . ", " . (int)$thumb .")"; serendipity_db_query($q); } function updatePhoto($entryid, $photoid, $thumb = false) { global $serendipity; $q = "UPDATE {$serendipity['dbPrefix']}photoblog SET photoid = " . (int)$photoid . ", use_thumbnail = " . (int)$thumb ." WHERE entryid = " . (int)$entryid; serendipity_db_query($q); } function getPhoto($entryid) { global $serendipity; $q = "SELECT * FROM {$serendipity['dbPrefix']}photoblog WHERE entryid=" . (int)$entryid; $row = serendipity_db_query($q, true); if (!isset($row) || !is_array($row)) { $row = null; } return $row; } function deletePhoto($entryid) { global $serendipity; $q = "DELETE FROM {$serendipity['dbPrefix']}photoblog WHERE entryid = " . (int)$entryid; serendipity_db_query($q); } function parsePhotoname($name) { global $serendipity; $use_thumbnail = 0; $bits = explode("/", $name); $filename = array_pop($bits); $filebits = explode(".", $filename); if (in_array("serendipityThumb",$filebits)) { $use_thumbnail = 1; } $ext = array_pop($filebits); $f = implode(".", $filebits); $fullpath = implode("/", $bits); $uploads = $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath']; $path = substr($fullpath, strlen($uploads)) . "/"; if ($path == '/') { $path = ''; } $q = "SELECT * FROM {$serendipity['dbPrefix']}images WHERE name='" . $f . "' and extension='" . $ext . "' and path='" . $path . "'" ; $file = serendipity_db_query($q, true); if (!isset($file) || !is_array($file)) { $thumb = array_pop($filebits); $f = implode(".", $filebits); $q = "SELECT * FROM {$serendipity['dbPrefix']}images WHERE name='" . $f . "' and extension='" . $ext . "' and path='" . $path . "'" ; $file = serendipity_db_query($q, true); if (!isset($file) || !is_array($file)) { echo "Couldn't find file"; $file = null; } } if (is_array($file)) { $file['use_thumbnail'] = $use_thumbnail; } return $file; } function pb_backend_display() { global $serendipity; if ($this->get_config('version') != PLUGIN_EVENT_PHOTOBLOG_VERSION) { $this->checkScheme(); } $photoname = ''; if (isset($serendipity['POST']['properties']['photoname'])) { $file = $this->parsePhotoname($serendipity['POST']['properties']['photoname']); } elseif (isset($serendipity['GET']['id'])) { $row = $this->getPhoto($serendipity['GET']['id']); if (isset($row)) { $file = serendipity_fetchImageFromDatabase($row['photoid']); if ($row['use_thumbnail'] === 'true' || $row['use_thumbnail'] === 't' || $row['use_thumbnail'] === 1) { $file['use_thumbnail'] = 'true'; } } } if (isset($file)) { $thumbstring = $this->return_thumbstr($file); $photoname = $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] .$thumbstring.'.'. $file['extension']; } ?>
getPhoto($eventData['id']); if (isset($row)) { if (!empty($prop_val)) { $file = $this->parsePhotoname($prop_val); $this->updatePhoto($eventData['id'], $file['id'],$file['use_thumbnail']); } else { $this->deletePhoto($eventData['id']); } } elseif(!empty($prop_val)) { $file = $this->parsePhotoname($prop_val); $this->addPhoto($eventData['id'], $file['id'],$file['use_thumbnail']); } } function pb_entry_display(&$eventData) { global $serendipity; if (is_array($eventData[0]['properties'])) { unset($eventData[0]['properties']['ep_cache_body']); unset($eventData[0]['properties']['ep_cache_extended']); } if ($serendipity['POST']['preview'] == 'true') { $prop_val = $serendipity['POST']['properties']['photoname']; if (!empty($prop_val)) { $file = $this->parsePhotoname($prop_val); $thumbstring = $this->return_thumbstr($file); $imgsrc= $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] . $thumbstring.'.'. $file['extension']; $img = '
'; $eventData[0]['body'] = $img . $eventData[0]['body']; } } else { $elements = count($eventData); for ($i = 0; $i < $elements; $i++) { $row = $this->getPhoto($eventData[$i]['id']); if (isset($row)) { $file = serendipity_fetchImageFromDatabase($row['photoid']); $thumbstring = $this->return_thumbstr($row); $imgsrc= $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $file['path'] . $file['name'] . $thumbstring .'.'. $file['extension']; $img = '
'; $eventData[$i]['body'] = $img . $eventData[$i]['body']; } } } } function event_hook($event, &$bag, &$eventData, $addData = null) { global $serendipity; $hooks = &$bag->get('event_hooks'); if (isset($hooks[$event])) { switch($event) { case 'backend_display': $this->pb_backend_display(); return true; case 'frontend_display': $this->pb_backend_save($eventData); return true; case 'entry_display': $this->pb_entry_display($eventData); return true; default: return false; } } else { return false; } } function return_thumbstr($file) { $thumbstring = ""; if ($file['use_thumbnail']) { $thumbstring = ".serendipityThumb"; } return $thumbstring; } } /* vim: set sts=4 ts=4 expandtab : */ ?>