Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/site/app/controllers/components
diff options
context:
space:
mode:
Diffstat (limited to 'site/app/controllers/components')
-rw-r--r--site/app/controllers/components/amo.php3
-rw-r--r--site/app/controllers/components/developers.php10
-rw-r--r--site/app/controllers/components/editors.php134
-rw-r--r--site/app/controllers/components/email.php11
-rw-r--r--site/app/controllers/components/image.php4
5 files changed, 136 insertions, 26 deletions
diff --git a/site/app/controllers/components/amo.php b/site/app/controllers/components/amo.php
index fa24b1a..92ac9ac 100644
--- a/site/app/controllers/components/amo.php
+++ b/site/app/controllers/components/amo.php
@@ -703,6 +703,9 @@ class AmoComponent extends Object {
'count' => COUNT_ADDON_PLUGIN,
);
}
+
+ // we are sugar
+ $catlist = array();
// create two sort arrays that we can use with array_multisort later
$_weights = array();
diff --git a/site/app/controllers/components/developers.php b/site/app/controllers/components/developers.php
index 15ae6b8..ceb24f8 100644
--- a/site/app/controllers/components/developers.php
+++ b/site/app/controllers/components/developers.php
@@ -231,6 +231,11 @@ class DevelopersComponent extends Object {
function detectAddontype($file) {
$extension = substr($file['name'], strrpos($file['name'], '.'));
switch ($extension) {
+ case '.xo':
+ case '.xol':
+ return ADDON_EXTENSION;
+ break;
+
case '.xpi':
// Dictionaries have a .dic file in the dictionaries directory
$zip = new Archive_Zip($file['tmp_name']);
@@ -471,6 +476,8 @@ class DevelopersComponent extends Object {
*/
function getAllowedExtensions($addontype) {
switch ($addontype) {
+ case ADDON_EXTENSION: $allowed = array('.xo', '.xol');
+ break;
case ADDON_EXTENSION: $allowed = array('.xpi');
break;
case ADDON_THEME: $allowed = array('.jar', '.xpi');
@@ -618,7 +625,8 @@ class DevelopersComponent extends Object {
$filename .= '-'.$data['Version']['version'];
- if ($data['Addon']['addontype_id'] != ADDON_SEARCH) {
+ // we are sugar
+ if (false) {
$filename .= '-';
$appString = '';
foreach ($data['appversions'] as $appversion) {
diff --git a/site/app/controllers/components/editors.php b/site/app/controllers/components/editors.php
index 2992af2..0576751 100644
--- a/site/app/controllers/components/editors.php
+++ b/site/app/controllers/components/editors.php
@@ -124,29 +124,44 @@ class EditorsComponent extends Object {
}
}
+ $releasenotes = $this->controller->Version->findById($version['Version']['id'], array('Version.releasenotes'), null, -1);
+
$emailInfo = array('name' => $addon['Translation']['name']['string'],
'id' => $this->controller->Addon->id,
'reviewer' => $session['firstname'].' '.$session['lastname'],
'email' => implode(', ', $authors),
'comments' => $data['Approval']['comments'],
- 'version' => !empty($version) ? $version['Version']['version'] : ''
+ 'version' => !empty($version) ? $version['Version']['version'] : '',
+ 'releasenotes' => $releasenotes[0]['releasenotes']
);
$this->controller->set('info', $emailInfo);
+
+ if ($data['Approval']['ActionField'] == 'public') {
+ if (SITE_RELEASE_EMAIL) {
+ $this->controller->Email->template = 'email/aslo/release';
+ $this->controller->Email->to = SITE_RELEASE_EMAIL;
+ $this->controller->Email->subject = sprintf('[RELEASE] %s-%s', $emailInfo['name'], $emailInfo['version']);
+ $this->controller->Email->send(false, SITE_RELEASE_EMAIL);
+ }
+ }
if ($data['Approval']['ActionField'] != 'superreview') {
$this->controller->Email->template = 'email/nominated/'.$data['Approval']['ActionField'];
$this->controller->Email->to = $emailInfo['email'];
- $this->controller->Email->subject = sprintf('Mozilla Add-ons: %s Nomination', $emailInfo['name']);
+ $this->controller->Email->subject = sprintf(___('editor_review_nomination_subject', 'Mozilla Add-ons: %s Nomination'), $emailInfo['name']);
}
else {
$this->controller->Email->template = 'email/superreview';
- $this->controller->Email->to = 'amo-senior-editors@mozilla.org';
+ $this->controller->Email->to = ADMIN_EMAIL;
//Doesn't need to be localized
$this->controller->Email->subject = "Super-review requested: {$emailInfo['name']}";
}
$result = $this->controller->Email->send();
+ if ($data['Approval']['ActionField'] == 'superreview')
+ $this->superNotify($emailInfo['id'], $emailInfo['version']);
+
return true;
}
@@ -251,6 +266,8 @@ class EditorsComponent extends Object {
$authors[] = $user['email'];
}
}
+
+ $releasenotes = $this->controller->Version->findById($version['Version']['id'], array('Version.releasenotes'), null, -1);
$emailInfo = array('name' => $addon['Translation']['name']['string'],
'id' => $this->controller->Addon->id,
@@ -260,22 +277,35 @@ class EditorsComponent extends Object {
'os' => $data['Approval']['os'],
'apps' => $data['Approval']['applications'],
'version' => !empty($version) ? $version['Version']['version'] : '',
- 'files' => $files
+ 'files' => $files,
+ 'releasenotes' => $releasenotes[0]['releasenotes']
);
$this->controller->set('info', $emailInfo);
+
+ if ($data['Approval']['ActionField'] == 'public') {
+ if (SITE_RELEASE_EMAIL) {
+ $this->controller->Email->template = 'email/aslo/release';
+ $this->controller->Email->to = SITE_RELEASE_EMAIL;
+ $this->controller->Email->subject = sprintf('[RELEASE] %s-%s', $emailInfo['name'], $emailInfo['version']);
+ $this->controller->Email->send(false, SITE_RELEASE_EMAIL);
+ }
+ }
if ($data['Approval']['ActionField'] != 'superreview') {
$this->controller->Email->template = 'email/pending/'.$data['Approval']['ActionField'];
$this->controller->Email->to = $emailInfo['email'];
- $this->controller->Email->subject = sprintf('Mozilla Add-ons: %s %s', $emailInfo['name'], $emailInfo['version']);
+ $this->controller->Email->subject = sprintf(___('editor_review_superreview_subject', 'Mozilla Add-ons: %s %s'), $emailInfo['name'], $emailInfo['version']);
}
else {
$this->controller->Email->template = 'email/superreview';
- $this->controller->Email->to = 'amo-senior-editors@mozilla.org';
+ $this->controller->Email->to = ADMIN_EMAIL;
//Doesn't need to be localized
$this->controller->Email->subject = "Super-review requested: {$emailInfo['name']}";
}
$result = $this->controller->Email->send();
+
+ if ($data['Approval']['ActionField'] == 'superreview')
+ $this->superNotify($emailInfo['id'], $emailInfo['version']);
return true;
}
@@ -322,7 +352,7 @@ class EditorsComponent extends Object {
$this->controller->publish('info', $emailInfo, false);
$this->controller->Email->template = 'email/inforequest';
$this->controller->Email->to = implode(', ', $authors);
- $this->controller->Email->subject = sprintf('Mozilla Add-ons: %s %s', $emailInfo['name'], $emailInfo['version']);
+ $this->controller->Email->subject = sprintf(SITE_NAME.': %s %s', $emailInfo['name'], $emailInfo['version']);
$this->controller->Email->send();
}
@@ -362,36 +392,102 @@ class EditorsComponent extends Object {
$this->controller->redirect("/editors/queue/{$listtype}");
}
+ function broadcastNotify($group, $addonid, $versionid, $exclude, $subject, $template) {
+ $session = $this->controller->Session->read('User');
+ $subscribers = array();
+
+ foreach ($this->controller->User->findAll() as $user) {
+ if ($session['id'] != $user['User']['id'] && !in_array($user, $exclude)
+ && $user['User']['notifybroadcast']
+ && $this->controller->SimpleAcl->actionAllowed($group, '*', $user))
+ $subscribers[] = $user;
+ }
+
+ if (empty($subscribers)) return;
+
+ $addon = $this->controller->Addon->getAddon($addonid);
+ $version = $this->controller->Version->findById($versionid, null, null, null, null, -1);
+
+ // send out notification email(s)
+ $emailInfo = array(
+ 'id' => $addonid,
+ 'name' => $addon['Translation']['name']['string'],
+ 'versionid' => $versionid,
+ 'version' => $version['Version']['version']
+ );
+ $this->controller->publish('info', $emailInfo, false);
+
+ $this->controller->Email->template = $template;
+ $this->controller->Email->subject = sprintf($subject, $emailInfo['name'].'-'.$emailInfo['version']);
+
+ foreach ($subscribers as &$subscriber) {
+ $this->controller->Email->to = $subscriber['User']['email'];
+ $result = $this->controller->Email->send();
+ }
+ }
+
+ function nominateNotify($addonid, $versionid) {
+ $_ids = $this->controller->EditorSubscription->getSubscribers($addonid);
+ if (empty($_ids))
+ $exclude = array();
+ else
+ $exclude = $this->controller->User->findAllById($_ids, null, null, null, null, -1);
+
+ $this->broadcastNotify('Editors', $addonid, $versionid, $exclude,
+ SITE_NAME.': %s Nomination', '../editors/email/notify_nominate');
+ }
+
+ function pendingNotify($addonid, $versionid) {
+ $this->broadcastNotify('Editors', $addonid, $versionid, array(),
+ SITE_NAME.': %s Pending update', '../editors/email/notify_pending');
+ }
+
+ function superNotify($addonid, $versionid) {
+ $this->broadcastNotify('Admin', $addonid, $versionid, array(),
+ SITE_NAME.': %s Super-review requested', '../editors/email/notify_super');
+ }
+
/**
* Notify subscribed editors of an add-on's update
* @param int $addonid ID of add-on that was updated
* @param int $versionid ID of the add-on's new version
*/
- function updateNotify($addonid, $versionid) {
+ function updateNotify($addonid, $versionid, $release_notify) {
$_ids = $this->controller->EditorSubscription->getSubscribers($addonid);
- if (empty($_ids)) return;
- $subscribers = $this->controller->User->findAllById($_ids, null, null, null, null, -1);
- $addon = $this->controller->Addon->getAddon($addonid);
+ $addon = $this->controller->Addon->findById($addonid);
$version = $this->controller->Version->findById($versionid, null, null, null, null, -1);
-
+
// send out notification email(s)
$emailInfo = array(
'id' => $addonid,
'name' => $addon['Translation']['name']['string'],
'versionid' => $versionid,
- 'version' => $version['Version']['version']
+ 'version' => $version['Version']['version'],
+ 'comments' => 'Trusted activity',
+ 'releasenotes' => SITE_URL . '/addon/' . $addonid . '#addon-advanced'
);
$this->controller->publish('info', $emailInfo, false);
$this->controller->Email->template = '../editors/email/notify_update';
- $this->controller->Email->subject = sprintf('Mozilla Add-ons: %s Updated', $emailInfo['name']);
+ $this->controller->Email->subject = sprintf(SITE_NAME.': %s Updated', $emailInfo['name']);
- foreach ($subscribers as &$subscriber) {
- $this->controller->Email->to = $subscriber['User']['email'];
- $result = $this->controller->Email->send();
- // unsubscribe user from further updates
- $this->controller->EditorSubscription->cancelUpdates($subscriber['User']['id'], $addonid);
+ if (!empty($_ids)) {
+ $subscribers = $this->controller->User->findAllById($_ids, null, null, null, null, -1);
+
+ foreach ($subscribers as &$subscriber) {
+ $this->controller->Email->to = $subscriber['User']['email'];
+ $result = $this->controller->Email->send();
+ // unsubscribe user from further updates
+ $this->controller->EditorSubscription->cancelUpdates($subscriber['User']['id'], $addonid);
+ }
+ }
+
+ if ($addon['Addon']['trusted'] == 1 && $release_notify) {
+ $this->controller->Email->template = '../editors/email/aslo/release';
+ $this->controller->Email->to = SITE_RELEASE_EMAIL;
+ $this->controller->Email->subject = sprintf('[RELEASE] %s-%s', $emailInfo['name'], $emailInfo['version']);
+ $this->controller->Email->send(false, SITE_RELEASE_EMAIL);
}
}
diff --git a/site/app/controllers/components/email.php b/site/app/controllers/components/email.php
index b62f9f7..71f20ac 100644
--- a/site/app/controllers/components/email.php
+++ b/site/app/controllers/components/email.php
@@ -10,8 +10,8 @@ class EmailComponent
/**
* Send email using SMTP Auth by default.
*/
- var $from = 'nobody@mozilla.org';
- var $fromName = 'Mozilla Add-ons';
+ var $from = NOBODY_EMAIL;
+ var $fromName = SITE_NAME;
var $sender = null;
//var $smtpUserName = 'username'; // SMTP username
//var $smtpPassword = 'password'; // SMTP password
@@ -58,7 +58,7 @@ class EmailComponent
}
- function send($html = false)
+ function send($html = false, $reply = null)
{
vendor('phpmailer'.DS.'class.phpmailer');
@@ -81,7 +81,10 @@ class EmailComponent
}
$mail->FromName = $this->fromName;
$mail->AddAddress($this->to, $this->toName );
- $mail->AddReplyTo($this->from, $this->fromName );
+ if ($reply)
+ $mail->AddReplyTo($reply);
+ else
+ $mail->AddReplyTo($this->from, $this->fromName );
$mail->CharSet = 'UTF-8';
//$mail->WordWrap = 50; // set word wrap to 50 characters
diff --git a/site/app/controllers/components/image.php b/site/app/controllers/components/image.php
index 2329f9f..b0b6992 100644
--- a/site/app/controllers/components/image.php
+++ b/site/app/controllers/components/image.php
@@ -129,7 +129,7 @@ class ImageComponent extends Object {
}
}
else {
- return "{$this->controller->base}/en-US/firefox/images/addon_icon/{$addon_id}/".strtotime($addon['Addon']['modified']);
+ return "{$this->controller->base}/en-US/".APP_SHORTNAME."/images/addon_icon/{$addon_id}/".strtotime($addon['Addon']['modified']);
}
}
@@ -200,7 +200,7 @@ class ImageComponent extends Object {
else {
// Always use en-US and firefox and append modified timestamp for
// best caching results. Serves 150-200 million. Refrigerate after serving.
- return "{$this->controller->base}/en-US/firefox/images/{$type['url']}/{$preview_id}/".strtotime($preview['Preview']['modified']);
+ return "{$this->controller->base}/en-US/".APP_SHORTNAME."/images/{$type['url']}/{$preview_id}/".strtotime($preview['Preview']['modified']);
}
}