2ad9ba07ff7d4d39b365a493c44846f2c7385bce
Author: gwoo
Date: 2009-01-26 12:53:16 -0800
diff --cc config/routes.php
index 0000000,0000000..ab9a15e
new file mode 100644
--- /dev/null
+++ b/config/routes.php
@@@ -1,0 -1,0 +1,9 @@@
++<?php
++
++ Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
++
++ Router::mapResources('plugins');
++ Router::mapResources('users');
++ Router::parseExtensions();
++
++?>
diff --cc controllers/plugins_controller.php
index 0000000,4e8c9aa..ed322c4
mode 000000,100644..100644
--- a/controllers/plugins_controller.php
+++ b/controllers/plugins_controller.php
@@@ -1,0 -1,285 +1,287 @@@
+ <?php
+ /**
+ * Plugins controller.
+ *
+ * @package default
+ * @author John David Anderson
+ */
+ class PluginsController extends AppController {
+
+ /**
+ * Controller name.
+ *
+ * @var string
+ */
+ var $name = 'Plugins';
+
+ /**
+ * Helpers.
+ *
+ * @var string
+ */
+ var $helpers = array('Html', 'Form', 'Xml');
+
+ /**
+ * Components.
+ *
+ * @var string
+ */
+ var $components = array('RequestHandler');
+
+ /**
+ * Used by CLI clients to upload new plugins.
+ *
+ * @return void
+ * @author John David Anderson
+ */
+ function upload() {
+ $this->layout = 'xml';
+
+ $this->Plugin->create();
+ if(!$this->Plugin->save($this->data)) {
+ $this->set('error', 'There was an unknown error in saving your plugin. Please contact a core team member for assistance.');
+ $this->render();
+ return;
+ }
+
+ if(!$this->Plugin->saveAsset($this->Plugin->id, $this->data['Plugin']['data'])) {
+ $this->set('error', 'There was an unknown error in saving your plugin package. Please contact a core team member for assistance.');
+ $this->render();
+ return;
+ }
+
+ $this->set('success', true);
+ $this->set('pluginId', $this->Plugin->id);
+ }
+
+ function index() {
+ $this->Plugin->recursive = -1;
+ $this->set('plugins', $this->paginate());
+ }
+
+ /**
+ * Used by CLI clients to identify a plugin to install.
+ *
+ * @return void
+ * @author John David Anderson
+ */
+ function search() {
+ $plugins = $this->Plugin->find('all', array(
+ 'conditions' => array(
+ 'OR' => array(
+ 'Plugin.name LIKE' => '%' . $this->data['Plugin']['query'] . '%',
+ 'Plugin.description LIKE' => '%' . $this->data['Plugin']['query'] . '%',
+ ),
+ ),
+ 'fields' => array(
+ 'Plugin.name',
+ 'Plugin.description',
+ 'Plugin.major_version_number',
+ 'Plugin.minor_version_number',
+ 'Plugin.build_number',
+ 'Plugin.modified',
+ ),
+ 'contain' => false,
+ 'limit' => 10,
+ ));
+
+ $this->set(compact('plugins'));
+ }
+
+ /**
+ * Used by CLI clients to view plugin metadata (esp. version numbers for updates).
+ *
+ */
+ function searchByName($name) {
+ $plugin = $this->Plugin->find('first', array(
+ 'conditions' => array(
+ 'Plugin.name' => $name
+ ),
+ 'contain' => false,
+ ));
+ unset($plugin['Plugin']['id']);
+
+ $this->set(compact('plugin'));
+ }
+
+ /**
+ * Used by CLI clients to download plugin assets.
+ *
+ * @param string $pluginId
+ * @return void
+ * @author John David Anderson
+ */
+ function download($name) {
+ Configure::write('debug', 2);
+ $this->layout = null;
+ $plugin = $this->Plugin->findByName($name);
+ $this->Plugin->id = $plugin['Plugin']['id'];
+ $this->Plugin->saveField('downloads', $plugin['Plugin']['downloads'] + 1);
+ $package = new File($this->Plugin->getAssetPath($plugin['Plugin']['id']));
+ $this->set('data', $package->read());
+ }
+
+ /**
+ * Allows CLI clients to check plugin names for uniqueness.
+ *
+ * @param string $name Name of the plugin
+ * @return void
+ * @author John David Anderson
+ *
+ */
+ function checkName($name) {
+ $plugin = $this->Plugin->find('first', array(
+ 'conditions' => array(
+ 'Plugin.name' => $name,
+ ),
+ 'fields' => array(
+ 'Plugin.name',
+ ),
+ 'contain' => false,
+ ));
- unset($plugin['Plugin']['id']);
++ if(isset($plugin['Plugin']['id'])) {
++ unset($plugin['Plugin']['id']);
++ }
+
+ $this->set(compact('plugin'));
+ }
+
+ /**
+ * Allows CLI clients to check plugin names and UUIDs.
+ *
+ * @param string $name Name of the plugin
+ * @param string $uuid UUID of the plugin
+ * @return void
+ * @author John David Anderson
+ *
+ */
+ function checkId($name, $uuid) {
+ $plugin = $this->Plugin->find('first', array(
+ 'conditions' => array(
+ 'Plugin.id' => $uuid,
+ ),
+ 'fields' => array(
+ 'Plugin.name',
+ ),
+ 'contain' => false,
+ ));
+
+ $this->set('success', (!empty($plugin) && $plugin['Plugin']['name'] == $name));
+ }
+
+ /*
+
+ function view($id = null) {
+ if (!$id) {
+ $this->Session->setFlash(__('Invalid Plugin.', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ $this->set('plugin', $this->Plugin->read(null, $id));
+ }
+
+ function add() {
+ if (!empty($this->data)) {
+ $this->Plugin->create();
+ if ($this->Plugin->save($this->data)) {
+ $this->Session->setFlash(__('The Plugin has been saved', true));
+ $this->redirect(array('action'=>'index'));
+ } else {
+ $this->Session->setFlash(__('The Plugin could not be saved. Please, try again.', true));
+ }
+ }
+ $users = $this->Plugin->User->find('list');
+ $this->set(compact('users'));
+ }
+
+ function edit($id = null) {
+ if (!$id && empty($this->data)) {
+ $this->Session->setFlash(__('Invalid Plugin', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ if (!empty($this->data)) {
+ if ($this->Plugin->save($this->data)) {
+ $this->Session->setFlash(__('The Plugin has been saved', true));
+ $this->redirect(array('action'=>'index'));
+ } else {
+ $this->Session->setFlash(__('The Plugin could not be saved. Please, try again.', true));
+ }
+ }
+ if (empty($this->data)) {
+ $this->data = $this->Plugin->read(null, $id);
+ }
+ $users = $this->Plugin->User->find('list');
+ $this->set(compact('users'));
+ }
+
+ function delete($id = null) {
+ if (!$id) {
+ $this->Session->setFlash(__('Invalid id for Plugin', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ if ($this->Plugin->del($id)) {
+ $this->Session->setFlash(__('Plugin deleted', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ }
+
+
+ function admin_index() {
+ $this->Plugin->recursive = 0;
+ $this->set('plugins', $this->paginate());
+ }
+
+ function admin_view($id = null) {
+ if (!$id) {
+ $this->Session->setFlash(__('Invalid Plugin.', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ $this->set('plugin', $this->Plugin->read(null, $id));
+ }
+
+ function admin_add() {
+ if (!empty($this->data)) {
+ $this->Plugin->create();
+ if ($this->Plugin->save($this->data)) {
+ $this->Session->setFlash(__('The Plugin has been saved', true));
+ $this->redirect(array('action'=>'index'));
+ } else {
+ $this->Session->setFlash(__('The Plugin could not be saved. Please, try again.', true));
+ }
+ }
+ $users = $this->Plugin->User->find('list');
+ $this->set(compact('users'));
+ }
+
+ function admin_edit($id = null) {
+ if (!$id && empty($this->data)) {
+ $this->Session->setFlash(__('Invalid Plugin', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ if (!empty($this->data)) {
+ if ($this->Plugin->save($this->data)) {
+ $this->Session->setFlash(__('The Plugin has been saved', true));
+ $this->redirect(array('action'=>'index'));
+ } else {
+ $this->Session->setFlash(__('The Plugin could not be saved. Please, try again.', true));
+ }
+ }
+ if (empty($this->data)) {
+ $this->data = $this->Plugin->read(null, $id);
+ }
+ $users = $this->Plugin->User->find('list');
+ $this->set(compact('users'));
+ }
+
+ function admin_delete($id = null) {
+ if (!$id) {
+ $this->Session->setFlash(__('Invalid id for Plugin', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ if ($this->Plugin->del($id)) {
+ $this->Session->setFlash(__('Plugin deleted', true));
+ $this->redirect(array('action'=>'index'));
+ }
+ }
+ */
+ }
+ ?>
