'Creator', 'license' => 'Apache License 2.0', 'url' => 'http://habariproject.org/', 'author' => 'Habari Community', 'authorurl' => 'http://habariproject.org/', 'version' => '0.1', 'description' => 'Plugin creator for Habari', 'copyright' => '2007' ); } public function create_plugin($ui) { $plugin_uuid= UUID::get(); $plugin_name= strtolower($ui->controls['plugin_name']->value); $plugin_author= strtolower($ui->controls['plugin_author']->value); $plugin_body= << '', 'name' => '$plugin_name', 'license' => 'Apache License 2.0', 'author' => '$plugin_author', 'version' => '0.1', 'description' => '' ); } function action_update_check() { Update::add( '$plugin_name', '$plugin_uuid', \$this->info->version ); } EOT; if ( strtolower($ui->controls['configurable']->value == 1) ) { $plugin_body.= <<plugin_id()) { \$actions[] = 'Configure'; } return \$actions; } /** * Respond to the user selecting an action on the plugin page * @param string \$plugin_id The string id of the acted-upon plugin * @param string \$action The action string supplied via the filter_plugin_config hook **/ public function action_plugin_ui(\$plugin_id, \$action) { if (\$plugin_id == \$this->plugin_id()) { switch (\$action) { case 'Configure' : // Expand this to create the Configure UI // See the FormUI documentation for details \$ui = new FormUI(strtolower(get_class(\$this))); \$ui->on_success(array(\$this, 'updated_config')); \$ui->out(); break; } } } /** * Returns true if plugin config form values defined in action_plugin_ui should be stored in options by Habari * @return boolean True if options should be stored **/ public function updated_config(\$ui) { return true; } EOT; } // Close the class $plugin_body.= << EOT; // Save $plugin_body; $plugin_directory= dirname(__FILE__) . '/../' . $plugin_name . '/'; $plugin_file= strtolower($plugin_name) . '.plugin.php'; // create directory mkdir($plugin_directory) or die ("Could not make directory"); // create plugin $fh = fopen($plugin_directory . $plugin_file, 'w') or die("can't open file"); fwrite($fh, $plugin_body); fclose($fh); // No need to store the returned values, so return false return false; } /** * Add actions to the plugin page for this plugin * @param array $actions An array of actions that apply to this plugin * @param string $plugin_id The string id of a plugin, generated by the system * @return array The array of actions to attach to the specified $plugin_id **/ public function filter_plugin_config($actions, $plugin_id) { if ( $plugin_id == $this->plugin_id() ) { $actions[]= 'Create Plugin'; } return $actions; } /** * Respond to the user selecting an action on the plugin page * @param string $plugin_id The string id of the acted-upon plugin * @param string $action The action string supplied via the filter_plugin_config hook **/ public function action_plugin_ui($plugin_id, $action) { if ( $plugin_id == $this->plugin_id() ) { switch ( $action ) { case 'Create Plugin' : $ui= new FormUI(strtolower(get_class($this))); $plugin_name= $ui->add('text', 'plugin_name', 'Plugin Name:'); $plugin_author= $ui->add('text', 'plugin_author', 'Plugin Author:'); $configurable= $ui->add('select', 'configurable', 'Plugin is configurable'); $configurable->options= array('0' => 'No', '1' => 'Yes'); $ui->on_success(array($this, 'create_plugin')); $ui->out(); break; } } } function action_update_check() { Update::add( 'Creator', 'fd6fb33c-df30-49f4-c116-9cc08bbd9611', $this->info->version ); } } ?>