From 32bc7a2c8a870394eee9f034d1f05ede51b4e03f Mon Sep 17 00:00:00 2001 From: Andrew Coleman Date: Tue, 18 Feb 2020 10:47:46 -0500 Subject: [PATCH] historical commit of site --- admin.php | 151 +++++++++++++++++++++ config/conf.xml | 28 ++++ data.php | 40 ++++++ index.php | 47 +++++++ journal.php | 194 +++++++++++++++++++++++++++ lib/Data.php | 221 +++++++++++++++++++++++++++++++ lib/DataForm.php | 24 ++++ lib/PenguinCoder.php | 29 ++++ lib/api.php | 13 ++ lib/base.php | 27 ++++ rss.php | 33 +++++ scripts/db/penguincoder.sql | 10 ++ templates/admin/entry.inc | 7 + templates/admin/footer.inc | 1 + templates/admin/header.inc | 7 + templates/common-header.inc | 24 ++++ templates/data/data.inc | 1 + templates/data/footer.inc | 1 + templates/data/header.inc | 1 + templates/frontpage.inc | 6 + templates/journal/listentry.inc | 1 + templates/journal/listfooter.inc | 1 + templates/journal/listheader.inc | 2 + templates/journal/rss.xml | 16 +++ templates/menu/menu.inc | 5 + themes/graphics/about.png | Bin 0 -> 659 bytes themes/graphics/banner.png | Bin 0 -> 63431 bytes themes/graphics/dot.gif | Bin 0 -> 49 bytes themes/graphics/favicon.ico | Bin 0 -> 859 bytes themes/graphics/friends.png | Bin 0 -> 667 bytes themes/graphics/home.png | Bin 0 -> 803 bytes themes/graphics/journal.png | Bin 0 -> 802 bytes themes/graphics/machine.png | Bin 0 -> 760 bytes themes/graphics/penguincoder.png | Bin 0 -> 942 bytes themes/graphics/rss.png | Bin 0 -> 981 bytes 35 files changed, 890 insertions(+) create mode 100644 admin.php create mode 100644 config/conf.xml create mode 100644 data.php create mode 100644 index.php create mode 100644 journal.php create mode 100644 lib/Data.php create mode 100644 lib/DataForm.php create mode 100644 lib/PenguinCoder.php create mode 100644 lib/api.php create mode 100644 lib/base.php create mode 100644 rss.php create mode 100644 scripts/db/penguincoder.sql create mode 100644 templates/admin/entry.inc create mode 100644 templates/admin/footer.inc create mode 100644 templates/admin/header.inc create mode 100644 templates/common-header.inc create mode 100644 templates/data/data.inc create mode 100644 templates/data/footer.inc create mode 100644 templates/data/header.inc create mode 100644 templates/frontpage.inc create mode 100644 templates/journal/listentry.inc create mode 100644 templates/journal/listfooter.inc create mode 100644 templates/journal/listheader.inc create mode 100644 templates/journal/rss.xml create mode 100644 templates/menu/menu.inc create mode 100644 themes/graphics/about.png create mode 100644 themes/graphics/banner.png create mode 100644 themes/graphics/dot.gif create mode 100644 themes/graphics/favicon.ico create mode 100644 themes/graphics/friends.png create mode 100644 themes/graphics/home.png create mode 100644 themes/graphics/journal.png create mode 100644 themes/graphics/machine.png create mode 100644 themes/graphics/penguincoder.png create mode 100644 themes/graphics/rss.png diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..db557dd --- /dev/null +++ b/admin.php @@ -0,0 +1,151 @@ +addHidden('', 'actionId', 'text', true); + $this->addHidden('', 'data_id', 'int', false); + $this->addVariable(_("Title"), 'title', 'text', true); + $this->addVariable(_("Type"), 'type', 'text', true); + $this->addVariable(_("Info"), 'info', 'longText', true); + } +} + +class JournalForm extends Horde_Form +{ + function JournalForm(&$vars) + { + parent::Horde_Form($vars); + + $this->addHidden('', 'actionId', 'text', true); + $this->addVariable(_("Title"), 'title', 'text', true); + $this->addVariable(_("Entry"), 'entry', 'longText', true); + } +} + +$title = _("Master Blaster"); + +$vars = &Variables::getDefaultVariables(); +$tabs = &new Horde_UI_Tabs('actionId', $vars); +$tabs->addTab(_("List Data"), 'admin.php', 'list'); +$tabs->addTab(_("Add Data"), 'admin.php', 'add'); +$tabs->addTab(_("Post Journal"), 'admin.php', 'post'); + +$renderer = &new Horde_Form_Renderer(); +global $pdata; +global $pjournal; +$data_id = Util::getFormData('data_id'); +$vars->set('actionId', Util::getFormData('actionId')); + +switch ($vars->get('actionId')) { +case 'post': + $form = &Horde_Form::singleton('JournalForm', $vars); + $valid = $form->validate($vars); + if ($valid) { + $result = $pjournal->add($vars->get('title'), $vars->get('entry')); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf( + _("There was a problem saving the post: %s"), + $result->getMessage()), 'horde.error'); + } else { + $notification->push(_("Success"), 'horde.success'); + header('Location: ' . Horde::selfUrl()); + exit; + } + } + break; +case 'add': +case 'edit': + $form = &Horde_Form::singleton('DataForm', $vars); + $valid = $form->validate($vars); + if ($valid) { + switch ($vars->get('actionId')) { + case 'add': + $result = $pdata->add($vars->get('title'), $vars->get('type'), + $vars->get('info')); + break; + case 'edit': + $result = $pdata->update($vars->get('data_id'), $vars->get('title'), + $vars->get('type'), $vars->get('info')); + break; + } + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf( + _("There was a problem with the data persistence: %s"), + $result->getMessage()), 'horde.error'); + } else { + $notification->push(_("Success"), 'horde.success'); + header('Location: ' . Horde::selfUrl()); + exit; + } + } + if ($vars->get('actionId') == 'edit' && !$valid) { + $item = $pdata->retrieveById($data_id); + if (is_a($item, 'PEAR_Error')) { + $notification->push(sprintf( + _("There was a problem with the data persistence: %s"), + $item->getMessage()), 'horde.error'); + } else { + $vars->set('data_id', $data_id); + $vars->set('title', $item['title']); + $vars->set('type', $item['type']); + $vars->set('info', $item['info']); + } + } + break; +case 'delete': + if (isset($data_id)) { + $result = $pdata->delete($data_id); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf( + _("There was a problem with the data persistence: %s"), + $result->getMessage()), 'horde.error'); + } else { + $notification->push(_("Success"), 'horde.success'); + } + } +case 'list': +default: + $result = $pdata->retrieve(); + if (is_a($result, 'PEAR_Error')) { + $notification->push(sprintf( + _("There was a problem with the data persistence: %s"), + $result->getMessage()), 'horde.error'); + } + $data = $pdata->listData(); + break; +} + +require_once PENGUINCODER_TEMPLATES . '/common-header.inc'; +require_once PENGUINCODER_TEMPLATES . '/menu/menu.inc'; +echo '
'; +echo $tabs->render(); +if (isset($form)) { + $form->renderActive($renderer, $vars, 'admin.php', 'post'); +} else { + require PENGUINCODER_TEMPLATES . '/admin/header.inc'; + $style = 'item1'; + foreach ($data as $d) { + if ($style == 'item1') {$style = 'item0';} + else {$style = 'item1';} + include PENGUINCODER_TEMPLATES . '/admin/entry.inc'; + } + require PENGUINCODER_TEMPLATES . '/admin/footer.inc'; +} +echo '
'; +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/config/conf.xml b/config/conf.xml new file mode 100644 index 0000000..eb018ec --- /dev/null +++ b/config/conf.xml @@ -0,0 +1,28 @@ + + + + + + + Storage Driver Settings + sql + + + + + + + + + + + + + + + + + + + + diff --git a/data.php b/data.php new file mode 100644 index 0000000..34cc62e --- /dev/null +++ b/data.php @@ -0,0 +1,40 @@ +getByCategory($category); +if (is_a($data, 'PEAR_Error')) { + $notification->push("There was a problem getting the information: " . + $data->getMessage(), 'horde.error'); +} elseif (!count($data)) { + $notification->push("No content was found, try again later (:^)"); +} + +require PENGUINCODER_TEMPLATES . '/common-header.inc'; +require PENGUINCODER_TEMPLATES . '/menu/menu.inc'; + +if (is_array($data)) { + foreach ($data as $entry) { + require PENGUINCODER_TEMPLATES . '/data/header.inc'; + if($admin) { + require PENGUINCODER_TEMPLATES . '/actions/header.inc'; + require PENGUINCODER_TEMPLATES . '/actions/admin.inc'; + require PENGUINCODER_TEMPLATES . '/actions/footer.inc'; + } + require PENGUINCODER_TEMPLATES . '/data/data.inc'; + require PENGUINCODER_TEMPLATES . '/data/footer.inc'; + } +} +echo '

 

'; +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/index.php b/index.php new file mode 100644 index 0000000..1b3bd61 --- /dev/null +++ b/index.php @@ -0,0 +1,47 @@ +getNewestJournals(); +$maxJournalId = $pdata->getMaxJournalId(); +$minJournalId = $pdata->getMinJournalId(); +$admin = Auth::isAdmin('penguincoder:admin'); +$adminDelete = Auth::isAdmin('penguincoder:admin', PERMS_DELETE); +$goodEntry = true; + +if (is_a($entries, 'PEAR_Error')) { + $goodEntry = false; + $notification->push(_("There was a problem getting the Journal: ") . + $entry->getMessage(), 'horde.error'); +} + +require PENGUINCODER_TEMPLATES . '/common-header.inc'; +require PENGUINCODER_TEMPLATES . '/menu/menu.inc'; +require PENGUINCODER_TEMPLATES . '/frontpage.inc'; + +if ($goodEntry) { + $baseUrl = Util::addParameter(Horde::applicationUrl('journal.php'), + 'actionId', 'show'); + $appUrl = Horde::applicationUrl('journal.php'); + foreach ($entries as $entry) { + $commentcount = $registry->call('forums/numMessages', array( + $entry['id'], 'penguincoder')); + if (is_a($commentcount, 'PEAR_Error')) { + $commentcount = 0; + } + include PENGUINCODER_TEMPLATES . '/data/header.inc'; + include PENGUINCODER_TEMPLATES . '/actions/header.inc'; + include PENGUINCODER_TEMPLATES . '/actions/main.inc'; + include PENGUINCODER_TEMPLATES . '/actions/admin.inc'; + include PENGUINCODER_TEMPLATES . '/actions/footer.inc'; + include PENGUINCODER_TEMPLATES . '/data/data.inc'; + include PENGUINCODER_TEMPLATES . '/data/footer.inc'; + } +} + +echo '

 

'; +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/journal.php b/journal.php new file mode 100644 index 0000000..0a989eb --- /dev/null +++ b/journal.php @@ -0,0 +1,194 @@ +set('id', $id); + $vars->set('actionId', $actionId); + $vars->set('category', $category); + $form = &Horde_Form::singleton('PDataForm', &$vars); + if ($form->validate($vars)) { + $vals = array( + 'title' => $vars->get('title'), + 'info' => $vars->get('info'), + 'category' => $vars->get('category'), + 'attributes' => serialize(array()), + ); + if ($actionId == 'edit') { + $vals['time_modified'] = time(); + $result = $pdata->update($id, $vals); + } else { + $vals['time_created'] = time(); + $result = $pdata->add($vals); + } + if (is_a($result, 'PEAR_Error')) { + $notification->push(_("There was a problem saving the entry: ") . + $result->getMessage(), 'horde.error'); + } else { + $notification->push(_("Success!"), 'horde.success'); + $goodEntry = false; + } + } elseif ($actionId == 'edit') { + $entry = $pdata->getById($id); + if (is_a($entry, 'PEAR_Error')) { + $goodEntry = false; + $notification->push(_("There was a problem fetching the data: ") . + $entry->getMessage(), 'horde.error'); + } else { + $vars->set('time_created', $entry['time_created']); + $vars->set('category', $entry['category']); + $vars->set('title', $entry['title']); + $vars->set('info', $entry['info']); + } + } + break; +case 'show': + // base url for generation later + $baseUrl = Util::addParameter(Horde::selfUrl(), 'actionId', 'show'); + $appUrl = Horde::selfUrl(); + + // get the maximum journal id + $maxJournalId = $pdata->getMaxJournalId(); + $minJournalId = $pdata->getMinJournalId(); + + // if no direction has been specified, then you want this id, fetch it + if (is_null($direction)) { + $entry = $pdata->getById($id); + } elseif ($direction) { + $entry = $pdata->getJournalById($id, '>', 'ASC'); + } else { + $entry = $pdata->getJournalById($id, '<', 'DESC'); + } + + // check the fetched entry + if (is_a($entry, 'PEAR_Error')) { + $goodEntry = false; + $notification->push("There was a problem getting the journal entry: " . + $entry->getMessage(), 'horde.error'); + } + break; +default: + if ($direction) { + $direction = 'ASC'; + } else { + $direction = 'DESC'; + } + $entries = $pdata->getByCategory('Journal', $order, $direction); + if (is_a($entries, 'PEAR_Error')) { + $goodEntry = false; + $notification->push("There was a problem getting the information: " . + $entries->getMessage(), 'horde.error'); + } + break; +} + +require PENGUINCODER_TEMPLATES . '/common-header.inc'; +require PENGUINCODER_TEMPLATES . '/menu/menu.inc'; + +switch ($actionId) { +case 'post': +case 'edit': + if (!is_null($form)) { + $renderer = &new Horde_Form_Renderer(); + if ($goodEntry) { + $form->renderActive($renderer, $vars, Horde::selfUrl(), 'post'); + } else { + $form->renderInactive($renderer, $vars, Horde::selfUrl(), 'post'); + } + } + break; +case 'show': + $commentcount = $registry->call('forums/numMessages', array( + $entry['id'], 'penguincoder')); + if (is_a($commentcount, 'PEAR_Error')) { + $commentcount = 0; + } + if (!is_a($entry, 'PEAR_Error')) { + require PENGUINCODER_TEMPLATES . '/data/header.inc'; + require PENGUINCODER_TEMPLATES . '/actions/header.inc'; + require PENGUINCODER_TEMPLATES . '/actions/main.inc'; + require PENGUINCODER_TEMPLATES . '/actions/nav.inc'; + require PENGUINCODER_TEMPLATES . '/actions/admin.inc'; + require PENGUINCODER_TEMPLATES . '/actions/footer.inc'; + require PENGUINCODER_TEMPLATES . '/data/data.inc'; + require PENGUINCODER_TEMPLATES . '/data/footer.inc'; + } + $comments = $registry->call('forums/postMessage', array( + 'penguincoder', $entry['id'], 'commentCallback' + )); + $threads = $registry->call('forums/renderThreads', array( + $entry['id'], true, 'penguincoder')); + if (is_a($threads, 'PEAR_Error')) { + $threads = $threads->getMessage(); + } + if (is_a($comments, 'PEAR_Error')) { + $comments = $comments->getMessage(); + } + if (!empty($threads)) { + echo '
' . $threads; + } + if (!empty($comments)) { + echo '
' . $comments; + } + break; +default: + if (!is_a($entries, 'PEAR_Error') && count($entries)) { + if ($direction == 'DESC') { + $direction = 0; + } else { + $direction = 1; + } + require PENGUINCODER_TEMPLATES . '/journal/listheader.inc'; + $style = 'item0'; + $counter = 0; + foreach ($entries as $entry) { + if ($style === 'item1') {$style = 'item0';} + else {$style = 'item1';} + include PENGUINCODER_TEMPLATES . '/journal/listentry.inc'; + $counter++; + } + include PENGUINCODER_TEMPLATES . '/journal/listfooter.inc'; + } + break; +} +echo '

 

'; +require $registry->get('templates', 'horde') . '/common-footer.inc'; diff --git a/lib/Data.php b/lib/Data.php new file mode 100644 index 0000000..03eaf81 --- /dev/null +++ b/lib/Data.php @@ -0,0 +1,221 @@ +_params = $params; + } + + function &singleton() + { + // array of instances + static $instances; + + // driver configuration + $driver = $GLOBALS['conf']['storage']['driver']; + $params = Horde::getDriverConfig('storage', $driver); + + if (!isset($instances)) { + $instances = array(); + } + + // set up this driver configuration + $signature = serialize(array($driver, $params)); + if (!isset($instances[$signature])) { + $instances[$signature] = &new PData($params); + } + + return $instances[$signature]; + } + + function getByCategoryAndLimit($category, $limit) + { + $this->_connect(); + + // Build up the query + $query = sprintf('SELECT * FROM penguin_data WHERE category=%s ' . + 'LIMIT %d', $this->_db->quote($category)); + + // Log and submit query + Horde::logMessage(sprintf('PData::getByCategoryAndLimit %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getAll($query, array(), DB_FETCHMODE_ASSOC); + } + + function getByTitle($title) + { + $this->_connect(); + + // Build up the query + $query = sprintf('SELECT * FROM penguin_data WHERE title=%s', + $this->_db->quote($category)); + + // Log and submit query + Horde::logMessage(sprintf('PData::getByTitle %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getAll($query, array(), DB_FETCHMODE_ASSOC); + } + + function getByCategory($category, $order = 'id', $direction = 'ASC') + { + $this->_connect(); + + // Build up the query + $query = sprintf('SELECT * FROM penguin_data WHERE category=%s ORDER ' . + 'BY %s %s', $this->_db->quote($category), $order, $direction); + + // Log and submit query + Horde::logMessage(sprintf('PData::getByCategory %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getAll($query, array(), DB_FETCHMODE_ASSOC); + } + + function getById($id) + { + $this->_connect(); + + // Build up the query + $query = sprintf('SELECT * FROM penguin_data WHERE id=%d', $id); + + // Log and submit query + Horde::logMessage(sprintf('PData::getById %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getRow($query, array(), DB_FETCHMODE_ASSOC); + } + + function getJournalById($id, $oper, $order) + { + $this->_connect(); + + // Build up the query + $query = sprintf('SELECT * FROM penguin_data WHERE id%s%d AND ' . + 'category="Journal" ORDER BY id %s LIMIT 1', $oper, $id, + $order); + + // Log and submit query + Horde::logMessage(sprintf('PData::getJournalById %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getRow($query, array(), DB_FETCHMODE_ASSOC); + } + + function getNewestJournals() + { + $this->_connect(); + $query = 'SELECT * FROM penguin_data WHERE category = "Journal" ORDER ' + . 'BY id DESC LIMIT 5'; + + // db log/query + Horde::logMessage(sprintf('PData::getNewestJournal %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->getAll($query, array(), DB_FETCHMODE_ASSOC); + } + + function getMaxJournalId() + { + $this->_connect(); + $query = 'SELECT MAX(id) FROM penguin_data WHERE category = "Journal"'; + + Horde::logMessage(sprintf('PDATA::getMaxJournalId %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_db->getRow($query); + if(is_a('PEAR_Error', $result)) { + $result = -1; + } else { + $result = $result[0]; + } + return $result; + } + + function getMinJournalId() + { + $this->_connect(); + $query = 'SELECT MIN(id) FROM penguin_data WHERE category = "Journal"'; + + Horde::logMessage(sprintf('PDATA::getMinJournalId %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + $result = $this->_db->getRow($query); + if(is_a('PEAR_Error', $result)) { + $result = -1; + } else { + $result = $result[0]; + } + return $result; + } + + function add($values = array()) + { + // sanity checks + if (!isset($values['title'])) { + return PEAR::raiseError(_("No title is set!")); + } + if (!isset($values['info'])) { $values['info'] = ''; } + if (!isset($values['attributes']) || !is_array($values['attributes'])) { + $values['attributes'] = array(); + } + + // db init + $this->_connect(); + require_once 'Horde/SQL.php'; + $query = sprintf('INSERT INTO penguin_data %s', Horde_SQL::insertValues( + $this->_db, $values)); + + // db log/query + Horde::logMessage(sprintf('PData::add %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->query($query); + } + + function update($id, $values = array()) + { + // sanity checks + if (isset($values['id'])) { unset($values['id']); } + + // db init + $this->_connect(); + require_once 'Horde/SQL.php'; + $query = sprintf('UPDATE penguin_data SET %s WHERE id=%d', + Horde_SQL::updateValues($this->_db, $values), $id); + + // db log/query + Horde::logMessage(sprintf('PData::update %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->query($query); + } + + function delete($id) + { + $this->_connect(); + + $query = sprintf('DELETE FROM penguin_data WHERE id=%d', $id); + Horde::logMessage(sprintf('PData::delete %s', $query), + __FILE__, __LINE__, PEAR_LOG_DEBUG); + return $this->_db->query($query); + } + + function _connect() + { + // yay persistent connections + if (!$this->_connected) { + Horde::assertDriverConfig($this->_params, 'storage', + array('phptype', 'hostspec', 'username', 'database', + 'charset')); + + require_once 'DB.php'; + $this->_db = &DB::connect($this->_params, + array('persistent' => !empty( + $this->_params['persistent']))); + if (is_a($this->_db, 'PEAR_Error')) { + Horde::fatal($this->_db, __FILE__, __LINE__); + } + + $this->_db->setOption('optimize', 'portability'); + $this->_connected = true; + } + + return true; + } +} diff --git a/lib/DataForm.php b/lib/DataForm.php new file mode 100644 index 0000000..8522ebd --- /dev/null +++ b/lib/DataForm.php @@ -0,0 +1,24 @@ +setButtons(_("Save")); + $this->addHidden('', 'actionId', 'text', true, false); + $this->addHidden('', 'id', 'int', false, false); + $this->addVariable(_("Data ID"), 'id', 'int', false, true); + $this->addVariable(_("Time Posted"), 'time_created', 'time', + false, true); + $this->addVariable(_("Title"), 'title', 'text', true, false); + $this->addVariable(_("Category"), 'category', 'text', true, false); + $this->addVariable(_("Info"), 'info', 'longText', true, false); + } +} diff --git a/lib/PenguinCoder.php b/lib/PenguinCoder.php new file mode 100644 index 0000000..a045e79 --- /dev/null +++ b/lib/PenguinCoder.php @@ -0,0 +1,29 @@ +add(Horde::applicationUrl('index.php', true, 1.), _("/home"), 'home.png'); + $menu->add(Horde::applicationUrl('journal.php', true, 1.), _("Archive"), 'journal.png'); + $menu->add(Util::addParameter(Util::addParameter(Horde::applicationUrl('data.php', true, 1.), 'category', 'Machine'), 'title', _("Machines")), _("Machines"), 'machine.png'); + $menu->add(Util::addParameter(Util::addParameter(Horde::applicationUrl('data.php', true, 1.), 'category', 'About'), 'title', _("About")), _("About"), 'about.png'); + $menu->add(Horde::applicationUrl('rss.php', true), _("RSS"), 'rss.png'); + + if ($returnType == 'object') { + return $menu; + } + return $menu->render(); + } + + function fileUrl($filename) + { + if(is_null($filename) || !file_exists(escapeshellcmd($filename))) + return ''; + return Horde::url($registry->get('webroot') . '/fileset/' . + escapeshellcmd($filename), true, -1); + } +} diff --git a/lib/api.php b/lib/api.php new file mode 100644 index 0000000..2d7230d --- /dev/null +++ b/lib/api.php @@ -0,0 +1,13 @@ + array('id' => 'string'), + 'type' => 'boolean' +); + + +function _penguincoder_commentCallback($entry_id) +{ + return true; +} + diff --git a/lib/base.php b/lib/base.php new file mode 100644 index 0000000..8523ce4 --- /dev/null +++ b/lib/base.php @@ -0,0 +1,27 @@ +pushApp('penguincoder', + !defined('AUTH_HANDLER'))), 'PEAR_Error')) { + if ($pushed->getCode() == 'permission_denied') { + Horde::authenticationFailureRedirect(); + } + Horde::fatal($pushed, __FILE__, __LINE__, false); +} +$conf = &$GLOBALS['conf']; + +@define('PENGUINCODER_TEMPLATES', $registry->get('templates')); +@define('PENGUINCODER_BASE', dirname(__FILE__) . '/..'); + +$notification = &Notification::singleton(); +$notification->attach('status'); + +Horde::compressOutput(); + +require PENGUINCODER_BASE . '/lib/PenguinCoder.php'; +require PENGUINCODER_BASE . '/lib/Data.php'; + +$GLOBALS['pdata'] = &PData::singleton(); \ No newline at end of file diff --git a/rss.php b/rss.php new file mode 100644 index 0000000..4ca1d09 --- /dev/null +++ b/rss.php @@ -0,0 +1,33 @@ +getNewestJournals(); + +if (is_a($entries, 'PEAR_Error')) { + exit("There was a problem fetching the entries: " . $entries->getMessage()); +} + +$template->set('charset', NLS::getCharset()); +$template->set('channel_name', _("Penguin Coder"), NLS::getCharset()); +$template->set('channel_desc', _("The ramblings of a computer geek..."), + NLS::getCharset()); +$template->set('channel_updated', @htmlspecialchars(date('r', + ($entries[0]['time_modified'] > 0 ? $entries[0]['time_modified'] : + $entries[0]['time_created']))), NLS::getCharset()); +$template->set('channel_url', Horde::applicationUrl('index.php', true)); + +$baseUrl = Util::addParameter(Horde::applicationUrl('journal.php', true), + 'actionId', 'show'); +foreach ($entries as $key => $entry) { + $entries[$key]['link'] = Util::addParameter($baseUrl, 'id', $entry['id']); +} +$template->set('entries', $entries); + +header('Content-Type: text/xml'); +echo $template->fetch(PENGUINCODER_TEMPLATES . '/journal/rss.xml'); diff --git a/scripts/db/penguincoder.sql b/scripts/db/penguincoder.sql new file mode 100644 index 0000000..02b55ff --- /dev/null +++ b/scripts/db/penguincoder.sql @@ -0,0 +1,10 @@ +CREATE TABLE `penguin_data` ( + `id` int(11) NOT NULL auto_increment, + `time_created` int(11) NOT NULL default '0', + `time_modified` int(11) NOT NULL default '0', + `title` varchar(255) default NULL, + `category` varchar(255) NOT NULL default 'Journal', + `info` longtext, + `attributes` longtext, + PRIMARY KEY (`id`) +) TYPE=MyISAM; \ No newline at end of file diff --git a/templates/admin/entry.inc b/templates/admin/entry.inc new file mode 100644 index 0000000..141200a --- /dev/null +++ b/templates/admin/entry.inc @@ -0,0 +1,7 @@ + + + getImageDir('horde')) . ''; ?> + ' ?> + + + diff --git a/templates/admin/footer.inc b/templates/admin/footer.inc new file mode 100644 index 0000000..94eb82e --- /dev/null +++ b/templates/admin/footer.inc @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/admin/header.inc b/templates/admin/header.inc new file mode 100644 index 0000000..d390664 --- /dev/null +++ b/templates/admin/header.inc @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/templates/common-header.inc b/templates/common-header.inc new file mode 100644 index 0000000..249359f --- /dev/null +++ b/templates/common-header.inc @@ -0,0 +1,24 @@ + + +' : '' ?> + +get('name'); +if (!empty($title)) $page_title .= ' :: ' . $title; +if (!empty($refresh_time) && ($refresh_time > 0) && !empty($refresh_url)) { + echo "\n"; +} + +Horde::includeScriptFiles(); +?> +<?php echo $page_title ?> + + + +> diff --git a/templates/data/data.inc b/templates/data/data.inc new file mode 100644 index 0000000..eed64ca --- /dev/null +++ b/templates/data/data.inc @@ -0,0 +1 @@ +
diff --git a/templates/data/footer.inc b/templates/data/footer.inc new file mode 100644 index 0000000..97a8afb --- /dev/null +++ b/templates/data/footer.inc @@ -0,0 +1 @@ +
diff --git a/templates/data/header.inc b/templates/data/header.inc new file mode 100644 index 0000000..9b1b0c7 --- /dev/null +++ b/templates/data/header.inc @@ -0,0 +1 @@ +
[Posted ] [Last Modified ]
\ No newline at end of file diff --git a/templates/frontpage.inc b/templates/frontpage.inc new file mode 100644 index 0000000..7caf2f2 --- /dev/null +++ b/templates/frontpage.inc @@ -0,0 +1,6 @@ +
+
 IDTitleType
+
Who is driving?
+OMG Bear is driving, how can this be?!
+
+
\ No newline at end of file diff --git a/templates/journal/listentry.inc b/templates/journal/listentry.inc new file mode 100644 index 0000000..f834962 --- /dev/null +++ b/templates/journal/listentry.inc @@ -0,0 +1 @@ + diff --git a/templates/journal/listfooter.inc b/templates/journal/listfooter.inc new file mode 100644 index 0000000..4bde969 --- /dev/null +++ b/templates/journal/listfooter.inc @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/templates/journal/listheader.inc b/templates/journal/listheader.inc new file mode 100644 index 0000000..821c379 --- /dev/null +++ b/templates/journal/listheader.inc @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/templates/journal/rss.xml b/templates/journal/rss.xml new file mode 100644 index 0000000..8e0ceff --- /dev/null +++ b/templates/journal/rss.xml @@ -0,0 +1,16 @@ +"?> + + + + <tag:channel_name /> + + + + + + <tag:entries.title /> + + + + + diff --git a/templates/menu/menu.inc b/templates/menu/menu.inc new file mode 100644 index 0000000..af38d9b --- /dev/null +++ b/templates/menu/menu.inc @@ -0,0 +1,5 @@ +
Date PostedTitle
+ + +
+notify(array('listeners' => 'status')) ?> diff --git a/themes/graphics/about.png b/themes/graphics/about.png new file mode 100644 index 0000000000000000000000000000000000000000..3e827f15d2f7c66b98aed28e913a87e0978b9f25 GIT binary patch literal 659 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 literal 0 HcmV?d00001 diff --git a/themes/graphics/friends.png b/themes/graphics/friends.png new file mode 100644 index 0000000000000000000000000000000000000000..c7fe872a97aa0b3939f7212d476024bfc2155f4a GIT binary patch literal 667 zcmV;M0%ZM(P)0TTa7Y8RDLG<6m|jov9~HcNd+@>X+?lOv;*^_s z-Iu$1(LW2E0|tS>p3{>PeV2;MSDHrgiEM4(m-?@9nR*s%AMW8PFa`8^Y5?%>Cb)Gi zJlUhhdwjuB@T&+R2n!jS8s#Jq2l{u;DZ2?uMYHMXNrYwMw$d0IdFpF|d=(oA1CgEh z4uZ$C=7-CtSJ&hHe~wz3L2b$8%MVfhxJe4I0c$6|!w|=D)ac06NF`GbRWq)#s)uW7 zRn-O}Ztrr&{S9mZ6+m=VFf(&!?9s#Nn{DkSb~%aL(6OrR!R?qF&1_KqoEAc#0WbRXz_kMx0FF+(`vH=u<8X&tqhEECB7S^4W)V54|;IB({ z-njy&<&yK{R{`PMX-_|kJPQb~pP6{IE8lW7%k4`uX=il!;TP$@k~!>+2&3W3(+v?3LPqIPivILA>p>Jqw5>fXg4h zpZw_JyPtn~^{aPmUla=mhZ#LQil%9(stUls?meiTNtWmT?3ab;q#sKq$8jHt0F~=)x{m9*1VMmd7)(t~A;}V{ttl33wfe%s!WY18z>}ZMZv)@wa=8~9jmG4K z3m;%Mn~aQ%AWITAzWbIP=`^`)4nw&nXikHZ*8O%O&Q{R6vs<>kW^i^Cv*x>=3|f#7M;zmwzV_os{{=fvQ^(3RQJ zT`^&bR4kL7`R!<_1YYP+f8-Dbaa-$(zqab)n=?O_Yw}a6Lph>n#NxgA@)f@`$lC3; z+nJWLu2PSDTQpj$f!%I}ji%AM(K5ALbL9uM4IQitMN&j5x362%lA98V&2mQ=L{YtF hnbq>L14Qe0@E1_7F1Ms}oNE98002ovPDHLkV1gGOh2;PM literal 0 HcmV?d00001 diff --git a/themes/graphics/journal.png b/themes/graphics/journal.png new file mode 100644 index 0000000000000000000000000000000000000000..28f539f2b7cf446d3fa292ebaa289393269ee225 GIT binary patch literal 802 zcmV+-1Ks?IP)8<4%%I zbed$fNj5>VFxeQJt+*<2cZIeZEC>>@O$h`vCvQ2FT)arnp~XT=FI5ZyPeMru8?l=T zu_UDm3I;-?F=9iFwrJR0=bN3)%y?)5Dp6l}FYlk{eR$pn-V@W)(??3B(zdtt^|#c; z@bK`NL?Y2SGBR?nsj2BGa1QX^9MoQ2%H?w1(P*@1XlQ6)adFX-QXYy%qo;LU-xH6= zujO*Nr$F!~fCR$nbo!I!<>j7CCet@HHI?k@>PmW^x4pZ&TUJ+BS6Y_!X($vLo1LA_ zzeW`>>+9=39~>O~*0${i%d)U6i^j%A48y>29300%2!ZRmH#3>c@q9jC*kB?7!*Lwb zw(V{G{r#lVY1-P_2#3Q2L4c-d2q92P;dx#ro6Y_J7_VvIx~`m`pZ7XDJNKnhDG>w# zzVA~il~79I`#u1+Z6l>j^!D~TqobpL0KNpu-=`DpKc77vyL92ZJ2NvgXqtxWy8mC$ zG|J^NN+~o=Ln(z}7~f1xOq>FA0knMCQh)W-!Q}q!17|$D_(*o_Jt`_{8YmPBxUP%m zc@&F9Y}+OX0!-7SwYAlWL?X=^P&J>o8y24a+pOC&TX*mHPnzZyDnb&ch$NgLR;Lwi0m*~`Df9; za{0%RpDtcKzq-2mJMailViOxz0UrZjg)8+Fsd%XFWXh~eb|qxZ&VGsxU+?>@?*ia& z7-_Qz0WCl~5SNkz#|}mhbXf7)`zs~q=IrghXLR=a>z;5zX5eE^#Q g>g(<;18V>;0XkR>z9Q$Vr2qf`07*qoM6N<$g6pt!qyPW_ literal 0 HcmV?d00001 diff --git a/themes/graphics/machine.png b/themes/graphics/machine.png new file mode 100644 index 0000000000000000000000000000000000000000..647bf4054f45b9e3fe476b6568b47ddd66d81ce5 GIT binary patch literal 760 zcmVA^5if0D7fhFq|149`y;n#^y$0{-`M)pB@_@ zpS(CW_PAcJ%RW&|5kU~8P+MFIhDc{LChCnUHa7|h00%7r$$`}DPT9B_j&uV)KWYsf zx}w3*74*hboFD4(V)6LBABTr80YEsmA2FDFA=)FOGuj1!fB>MBgK-YYFTyYkgu>wm zEiK5&Lqre#4lOjx!J%d)^3Loncns;U5xZVAYaj$SpG2gVIJjsxAWU>GJC z<>1^wS7#XIuiuF4x@ZYFnMhpQtJ!eCK^cc_Q*h3ImE$1X9>lJufl+F=1SI?Vu8dzl zjcVP1rkhY3IyBuvLpP!8Cgk22KGy57ENkIt$JcysrCj!}xy1c|HrSc1x^F06{O@Pa<=jN7l!+<~F2crz!aZoHCVE_9*6h%R`Qt|e7 zc9^0l1&{Mfe_0THB0`dcU?_xvGXpR!6S6F0B%4LKRKm*AG6_ghK*{A2$1~`DHZ$|I zqa)(Bx1A7N&x7kYuxtvOQWQR|;q%rOL{WspIXuqQW}>At)KnG%LA9zv(=@2H z8g$bHqZD#73D5K30mv^b?85WzG>1sPY;V8GFD`!Ij1fZ6mp+wgBZ7cZv54WJAy}pf z?mAdsTgTe!>Jx{t{1Je(dcVxz;O$!z6O+mQ{`;wPy8EzFK`xi`-p|j!(^d5$02}|Q q(AklZ8;_=^-}YxRuYSMwANmQo^+8n-AP3n10000dBJWPTBfi`0z|=#xjz)q`G*Ziw{_C4H@)q>J@+2ZEhaL;_j1m|_kHI(-|rk^ z>tBLMepr=hfR#biry&RoMmggi8JSE_<2vbyyu4rac4^BiPr&D^LKM9Ka(Z}hv9Cv?5&6$JI+2BIi}TB4dBJ{Au&Uh4OF8Ze!y;I}_2_oF!+Q!@c?VJ4|gy6&X+VI+|O_-ZE(Gd=zwdqn{DtY*L)igbT za?gN>5-iHpGpE0gJL2$Dei$Z0VTD4|C_1-$abvcOpT|ph?wJ<&-9NmZ{`UPrYB5#d zTEV1-Cp{cb_#5Z?!|iLp7{Sc-GA5>V?CbTRbDIa7H@R@+(=3XbjjbI)_+97w(?cI0 zH)+)?c5KqV3at6HFWlY?qry;MFW|FdiwJLVVG9@9j6snFd_K5@XSceszD-3a=tXJe z_a`UDXE#cgZOTOC_aROdgh#iaC<0m@QD9m3iV_6^o9`=SR_lhxCw8jWRh zEy>C0JP0TLb<@PV2ZNZHDq-%n$w{@2aq^4D5ezCY42G#|dE8kH4EIELzd`KMQB)~) zrB0_#G`QyX*42CP*m{+ZuZ*z^8gk1fLIDNuycytoib7!ph0=y^x_1r4B;3+SwfG4? zfx)D<_e}c7giD^;v#zZHH~Hukg`iF)SXiP6G)p{r1q->>p3%-O$En>fb|B#aI0RW@dUxcdfpq$^M6J6*G_q|!7wZp-9sDc60M^ZP>9lsq QX8-^I07*qoM6N<$f}rrm2mk;8 literal 0 HcmV?d00001 diff --git a/themes/graphics/rss.png b/themes/graphics/rss.png new file mode 100644 index 0000000000000000000000000000000000000000..6d049d4d72ecfa71d9a1b2375d222ba7c74fcbb9 GIT binary patch literal 981 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5el!3-qN_Um5(QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`6_P!Id>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4Fdx+ zLx4|+Yg$^`e;`O>=gTe~DWM4f0K-63 literal 0 HcmV?d00001