diff options
Diffstat (limited to 'site/app/controllers/components')
-rw-r--r-- | site/app/controllers/components/amo.php | 3 | ||||
-rw-r--r-- | site/app/controllers/components/developers.php | 10 | ||||
-rw-r--r-- | site/app/controllers/components/editors.php | 134 | ||||
-rw-r--r-- | site/app/controllers/components/email.php | 11 | ||||
-rw-r--r-- | site/app/controllers/components/image.php | 4 |
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']); } } |