public function accept($req, $res, $args) { // Ensure user is admmod on forum $user = $req->getAttribute('user'); if (!$user->is_admmod) { $notFoundHandler = Container::get('notFoundHandler'); return $notFoundHandler($req, $res); } // Download archive and store info files to disk $vendor_name = Input::post('vendor_name'); $plugin_id = Input::post('plugin_id'); // Check required fields are sent from form if (!$vendor_name || !$plugin_id) { $notFoundHandler = Container::get('notFoundHandler'); return $notFoundHandler($req, $res); } // Check vendor name is unique if (ORM::for_table('market_plugins')->where('vendor_name', $vendor_name)->count() > 0) { return 'Vendor name already exists!'; } $repoURL = PluginModel::getUser($vendor_name); $userGit = explode('/', str_ireplace(array('http://', 'https://'), '', $repoURL)); if (Input::post('accept_plugin')) { // If no errors while getting data from Github, store generic infos to DB, else throw 404 if (PluginModel::downloadData($plugin_id, $vendor_name, $userGit[1]) === false) { $notFoundHandler = Container::get('notFoundHandler'); return $notFoundHandler($req, $res); } else { GithubApi::forkRepo($userGit[1], $vendor_name); } } elseif (Input::post('delete_plugin')) { // TODO: Remove plugin from DB } return Router::redirect(Router::pathFor('plugins.pending')); }
public function update($req, $res, $args) { $plugin = PluginModel::getData($args['name']); $user = $req->getAttribute('user'); // Ensure plugin exists and user has rights to update it if (!$plugin || $plugin->author != $user->username && !$user->is_admmod) { $notFoundHandler = Container::get('notFoundHandler'); return $notFoundHandler($req, $res); } PluginModel::downloadData($plugin->id, $plugin->vendor_name); return Router::redirect(Router::pathFor('plugins.view', ['name' => $plugin->vendor_name]), 'Plugin updated!'); }