2ad9ba07ff7d4d39b365a493c44846f2c7385bce

Author: gwoo

Date: 2009-01-26 12:53:16 -0800

Merge branch 'refactor' into damerger

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')); + } + } + */ + } + ?>