if (!PEAR::isError($res) && $dbh->affectedRows() > 0) { $sql = 'SELECT * FROM packages WHERE id = ?'; $row = $dbh->getRow($sql, array($id), DB_FETCHMODE_ASSOC); if ($action == 'approved') { include_once 'pear-rest.php'; $pear_rest = new pearweb_Channel_REST_Generator(PEAR_REST_PATH, $dbh); $pear_rest->savePackageREST($row['name']); $pear_rest->saveAllPackagesREST(); include_once 'pear-database-package.php'; $pear_rest->savePackagesCategoryREST(package::info($row['name'], 'category')); } // {{{ Logging mechanism require_once "Damblan/Log.php"; require_once "Damblan/Log/Mail.php"; $logger = new Damblan_Log(); $observer = new Damblan_Log_Mail(); $observer->setRecipients(PEAR_GROUP_EMAIL); $observer->setHeader("In-Reply-To", "<approve-request-" . $row['id'] . "@" . PEAR_CHANNELNAME . ">"); $observer->setHeader("Subject", "[" . SITE_BIG . " Group] Package " . $row['name'] . " has been " . $action); $logger->attach($observer); $logger->log($auth_user->handle . " " . $action . " " . $row['name']); // }}} if (!DEVBOX) { $mailtext = 'Your package "' . $row['name'] . '" has been ' . $action . ' by the PEAR Group.'; $mailtext = wordwrap($mailtext, 72); $query = 'SELECT u.email FROM users u, maintains m WHERE m.package = ? AND u.handle = m.handle'; $rows = $dbh->getAll($query, array($id), DB_FETCHMODE_ASSOC); foreach ($rows as $u_row) { mail($u_row['email'], SITE_BIG . ' Package ' . $action, $mailtext, 'From: "' . SITE_BIG . ' Package Approval System" <' . PEAR_GROUP_EMAIL . '>', '-f ' . PEAR_BOUNCE_EMAIL); } }
/** * Notification method * * Sends out an email to the administrative body when karma has * been updated. * * @access private * @param string Handle of the administrator who granted karma * @param string Handle of the user whose karma has been updated * @param string Describes the type of karma update * @return void */ function _notify($admin_user, $user, $action) { require_once "Damblan/Log.php"; require_once "Damblan/Log/Mail.php"; static $logger, $observer; if (!isset($logger)) { $logger = new Damblan_Log(); } if (!DEVBOX && !isset($observer)) { $observer = new Damblan_Log_Mail(); $observer->setRecipients("*****@*****.**"); $observer->setHeader("From", "\"PEAR Karma Manager\" <*****@*****.**>"); $observer->setHeader("Reply-To", "<*****@*****.**>"); $observer->setHeader("Subject", "[PEAR Group] Karma update"); $logger->attach($observer); } $text = $admin_user . " has updated karma for " . $user . ": " . $action; $logger->log($text); }
/** * Add new package * * @param array * @return mixed ID of new package or PEAR error object */ static function add($data) { global $dbh, $auth_user; // name, category // license, summary, description // lead extract($data); if (empty($license)) { $license = 'BSD License'; } if (!empty($category) && (int) $category == 0) { $sql = 'SELECT id FROM categories WHERE name = ?'; $category = $dbh->getOne($sql, array($category)); } if (empty($category)) { return PEAR::raiseError("package::add: invalid `category' field"); } if (empty($name)) { return PEAR::raiseError("package::add: invalid `name' field"); } $query = ' INSERT INTO packages (id, name, package_type, category, license, summary, description, homepage, cvs_link) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)'; $id = $dbh->nextId('packages'); $err = $dbh->query($query, array($id, $name, $type, $category, $license, $summary, $description, $homepage, $cvs_link)); if (DB::isError($err)) { return $err; } $sql = 'UPDATE categories SET npackages = npackages + 1 WHERE id = ?'; $err = $dbh->query($sql, array($category)); if (DB::isError($err)) { return $err; } include_once 'pear-database-maintainer.php'; $err = maintainer::add($id, $lead, 'lead'); if (isset($lead) && DB::isError($err)) { return $err; } $event = $auth_user->handle . " (" . $auth_user->name . ") has added a new package " . $name; $mailtext = $event . "\n\nApprove: http://" . PEAR_CHANNELNAME . "/admin/package-approval.php?approve=" . $id; $mailtext .= "\nReject: http://" . PEAR_CHANNELNAME . "/admin/package-approval.php?reject=" . $id; // {{{ Logging mechanism require_once "Damblan/Log.php"; require_once "Damblan/Log/Mail.php"; // Syslog $logger = new Damblan_Log(); $logger->log($event); // Logging via email $logger = new Damblan_Log_Mail(); $logger->setRecipients("*****@*****.**"); $logger->setHeader("From", $auth_user->email); $logger->setHeader("Message-Id", "<approve-request-" . $id . "@" . PEAR_CHANNELNAME . ">"); $logger->setHeader("Subject", "New package"); $logger->log($mailtext); // }}} return $id; }
$req = new HTTP_Request2(); $dir = explode("/", $url->getPath()); if (!empty($dir)) { array_pop($dir); } $dir[] = 'channel.xml'; $url->setPath(implode("/", $dir)); $req->setURL($url->getURL()); channel::validate($req, $chan); if (channel::exists($project_name->getValue())) { throw new Exception("Already exists"); } $text = sprintf("[Channels] Please activate %s (%s) on the channel index.", $project_name->getValue(), $project_link->getValue()); $from = sprintf('"%s" <%s>', $contact_name->getValue(), $contact_email->getValue()); $logger = new Damblan_Log(); $observer = new Damblan_Log_Mail(); $observer->setRecipients(PEAR_WEBMASTER_EMAIL); $observer->setHeader("From", $from); $observer->setHeader("Subject", "Channel link submission"); $logger->attach($observer); $logger->log($text); // Add the channel to the DB, but not yet activated channel::add($project_name->getValue()); channel::edit($project_name->getValue(), $project_label->getValue(), $project_link->getValue(), $contact_name->getValue(), $contact_email->getValue()); echo "<div class=\"success\">Thanks for your submission. It will "; echo "be reviewed as soon as possible.</div>\n"; } catch (Exception $exception) { echo '<div class="errors">'; switch ($exception->getMessage()) { case "Invalid channel site": case "Empty channel.xml":