├── .gitignore ├── .gitmodules ├── .htaccess ├── .travis.yml ├── LICENSE ├── README.md ├── application ├── bootstrap.php ├── classes │ ├── Controller │ │ ├── Bucket.php │ │ ├── Bucket │ │ │ ├── Collaborators.php │ │ │ ├── Discussion.php │ │ │ └── Settings.php │ │ ├── Drop.php │ │ ├── Drop │ │ │ └── Base.php │ │ ├── Form.php │ │ ├── Login.php │ │ ├── Media.php │ │ ├── River.php │ │ ├── River │ │ │ ├── Channels.php │ │ │ ├── Collaborators.php │ │ │ ├── Rules.php │ │ │ └── Settings.php │ │ ├── Search.php │ │ ├── Settings │ │ │ ├── Invites.php │ │ │ ├── Main.php │ │ │ ├── Plugins.php │ │ │ ├── Quotas.php │ │ │ └── Users.php │ │ ├── Swiftriver.php │ │ ├── User.php │ │ └── Welcome.php │ ├── HTML.php │ ├── HTTP │ │ └── Exception │ │ │ └── 404.php │ ├── Kohana │ │ └── Exception.php │ ├── Request.php │ ├── Service │ │ ├── Account.php │ │ ├── Base.php │ │ ├── Bucket.php │ │ ├── Drop.php │ │ ├── Form.php │ │ ├── River.php │ │ └── Search.php │ ├── Session.php │ ├── Swiftriver.php │ ├── Swiftriver │ │ ├── Event.php │ │ ├── Exception │ │ │ └── Channel │ │ │ │ └── Option.php │ │ ├── Mail.php │ │ ├── Messages.php │ │ ├── Navs.php │ │ ├── Plugins.php │ │ └── Users.php │ └── Unittest │ │ └── Database │ │ └── TestCase.php ├── config │ ├── auth.php.template │ ├── cache.php.template │ ├── cookie.php.template │ └── site.php.template ├── i18n │ └── en.php ├── tests │ ├── Swiftriver │ │ └── UsersTest.php │ ├── bootstrap.php │ └── phpunit.xml ├── vendor │ ├── lightopenid │ │ └── openid.php │ └── timthumb │ │ └── timthumb.php └── views │ └── kohana │ └── error.php ├── favicon.ico ├── index.php ├── markup ├── _css │ ├── home.css │ └── styles.css ├── _fonts │ ├── swiftriver-icons.dev.svg │ ├── swiftriver-icons.eot │ ├── swiftriver-icons.svg │ ├── swiftriver-icons.ttf │ └── swiftriver-icons.woff ├── _img │ ├── content │ │ ├── home-basics-graphic.gif │ │ ├── home-features-collaboration.png │ │ ├── home-features-configuration.png │ │ ├── home-features-views.png │ │ ├── home-masthead-graphic.png │ │ ├── home-screen-collab1.png │ │ ├── home-screen-collab1FULL.png │ │ ├── home-screen-collab2.png │ │ ├── home-screen-config1.png │ │ ├── home-screen-config1FULL.png │ │ ├── home-screen-config2.png │ │ ├── home-screen-views1.png │ │ ├── home-screen-views1FULL.png │ │ └── home-screen-views2.png │ ├── drop-wave.gif │ ├── drop-wave1.svg │ ├── drop-wave1@2x.png │ ├── drop-wave2@2x.png │ ├── drop-wave_full.gif │ ├── favicon.png │ ├── header-toolbarBG.gif │ ├── home-header-toolbarBG.gif │ ├── icon-buoy.png │ ├── loader.gif │ ├── loading.gif │ ├── logo-swiftriver-2x.png │ ├── logo-swiftriver.png │ ├── page-navigation_active.png │ ├── river-empty1.gif │ ├── river-empty2.gif │ ├── signup-modal_bg.gif │ ├── signup_bg.png │ └── sprite-25x25.psd ├── _includes │ └── header.php ├── _js │ ├── global-ck.js │ ├── global.js │ ├── jquery.masonry-ck.js │ ├── jquery.masonry.js │ ├── jquery.outside.js │ ├── jquery.scrollto.js │ └── jquery.waypoints.js ├── _modals │ ├── add-collaborator.php │ ├── add-custom-form.php │ ├── add-rule.php │ ├── add-search-filter.php │ ├── add-service.php │ ├── add-to-bucket.php │ ├── add-to-service.php │ ├── add-user.php │ ├── buckets.php │ ├── create.php │ ├── followers.php │ ├── metadata-custom.php │ ├── metadata-links.php │ ├── metadata-location.php │ ├── metadata-media.php │ ├── rivers.php │ ├── settings-channels.php │ ├── settings-custom-form.php │ ├── settings-rule.php │ └── settings-user.php ├── bucket │ ├── discussion.php │ ├── index.php │ └── settings.php ├── drop │ └── index.php ├── home │ ├── content.php │ └── settings.php ├── homepage.php ├── howitworks.php ├── index.php ├── login.php ├── patterns.php ├── river │ ├── index.php │ ├── no-channels.php │ ├── settings.php │ └── view-list.php ├── search │ ├── buckets.php │ ├── drops.php │ ├── rivers.php │ └── users.php ├── settings.php ├── signup.css ├── signup.html └── user │ ├── content.php │ └── index.php ├── modules ├── SwiftRiver_API │ ├── classes │ │ ├── Auth │ │ │ └── SwiftRiver.php │ │ ├── Controller │ │ │ └── SwiftRiver.php │ │ └── SwiftRiver │ │ │ ├── API.php │ │ │ ├── API │ │ │ ├── Accounts.php │ │ │ ├── Buckets.php │ │ │ ├── Drops.php │ │ │ ├── Exception.php │ │ │ ├── Exception │ │ │ │ ├── Authorization.php │ │ │ │ ├── BadRequest.php │ │ │ │ ├── Forbidden.php │ │ │ │ ├── NotFound.php │ │ │ │ └── Unknown.php │ │ │ ├── Forms.php │ │ │ ├── Rivers.php │ │ │ └── Search.php │ │ │ └── Client.php │ └── config │ │ └── swiftriver.php ├── csrf │ └── classes │ │ ├── CSRF.php │ │ └── Form.php ├── dummy_cache │ ├── classes │ │ └── Cache │ │ │ └── Dummy.php │ └── config │ │ └── cache.php └── riverid │ └── classes │ ├── Auth │ └── RiverID.php │ └── RiverID │ └── API.php └── themes └── default ├── config └── theme.php ├── media ├── css │ ├── datepicker.css │ ├── home.css │ ├── icons.css │ ├── leaflet.css │ ├── leaflet.draw.css │ ├── leaflet.draw.ie.css │ ├── leaflet.ie.css │ ├── less │ │ └── styles.less │ └── styles.css ├── fonts │ ├── swiftriver-icons.eot │ ├── swiftriver-icons.svg │ ├── swiftriver-icons.ttf │ └── swiftriver-icons.woff ├── img │ ├── avatar_default.gif │ ├── bucket-empty.gif │ ├── channel-rss.gif │ ├── channel-twitter.gif │ ├── content │ │ ├── avatar1.png │ │ ├── avatar2.png │ │ ├── avatar3.png │ │ ├── avatar4.jpg │ │ ├── avatar5.jpg │ │ ├── drop-image.png │ │ ├── drop-photo1.jpg │ │ ├── drop-photo2.jpg │ │ ├── drop-photo3.jpg │ │ ├── drop-photo4.jpg │ │ ├── drop-photo5.jpg │ │ ├── drop-photo6.jpg │ │ ├── home-basics-graphic.gif │ │ ├── home-features-collaboration.png │ │ ├── home-features-configuration.png │ │ ├── home-features-views.png │ │ ├── home-masthead-graphic.png │ │ ├── home-screen-collab1.png │ │ ├── home-screen-collab2.png │ │ ├── home-screen-config1.png │ │ ├── home-screen-config2.png │ │ ├── home-screen-views1.png │ │ ├── home-screen-views2.png │ │ ├── primer-create.gif │ │ ├── primer-learn.gif │ │ └── primer-search.gif │ ├── contentBG-river-drops.gif │ ├── drop-wave.gif │ ├── drop-wave1.png │ ├── drop-wave1.svg │ ├── drop-wave1@2x.png │ ├── drop-wave2.png │ ├── drop-wave2@2x.png │ ├── drop-wave_full.gif │ ├── drop-wave_list.gif │ ├── favicon.png │ ├── header-toolbarBG.gif │ ├── home-header-toolbarBG.gif │ ├── icon-buoy.png │ ├── icons-25x25.png │ ├── loader.gif │ ├── loading.gif │ ├── logo-swiftriver-2x.png │ ├── logo-swiftriver.png │ ├── page-navigation_active.png │ ├── river-empty1.gif │ ├── river-empty2.gif │ ├── signup-modal_bg.gif │ ├── signup-modal_icons.png │ └── spritesheet.png └── js │ ├── activities.js │ ├── assets.js │ ├── backbone-min.js │ ├── bootstrap-datepicker.js │ ├── bootstrap-twipsy.js │ ├── channels.js │ ├── collaborators.js │ ├── drops.js │ ├── global.js │ ├── jquery-1.7.2.min.js │ ├── jquery.cycle.all.latest.min.js │ ├── jquery.fileupload.js │ ├── jquery.iframe-transport.js │ ├── jquery.imagesloaded.min.js │ ├── jquery.masonry.min.js │ ├── jquery.outside.js │ ├── jquery.placehold.min.js │ ├── jquery.scrollto.js │ ├── jquery.sparkline.min.js │ ├── jquery.touch.min.js │ ├── jquery.ui.widget.js │ ├── leaflet.draw.js │ ├── leaflet.js │ ├── modernizr.custom.01220.js │ ├── settings.js │ └── underscore-min.js └── views ├── emails ├── html │ ├── collaboration_invite.php │ ├── collaboration_invite_accepted.php │ ├── comment.php │ └── new_follower.php └── text │ ├── changeemail.php │ ├── collaboration_invite.php │ ├── collaboration_invite_accepted.php │ ├── comment.php │ ├── createuser.php │ ├── expiry_notice.php │ ├── expiry_warning.php │ ├── invite.php │ ├── new_follower.php │ └── resetpassword.php ├── pages ├── bucket │ ├── discussion.php │ ├── main.php │ ├── no-drops.php │ └── settings │ │ ├── display.php │ │ └── layout.php ├── crawler │ └── rss.php ├── drop │ ├── drops.php │ └── js │ │ └── drops.php ├── error.php ├── errors │ ├── 404.php │ └── default.php ├── login │ ├── create.php │ ├── forgot_password.php │ ├── landing.php │ ├── layout.php │ ├── main.php │ ├── register.php │ ├── reset.php │ └── reset_password.php ├── river │ ├── expiry_notice.php │ ├── full_notice.php │ ├── layout.php │ ├── no-channels.php │ ├── no-drops.php │ ├── settings │ │ ├── display.php │ │ ├── js │ │ │ └── rules.php │ │ ├── layout.php │ │ ├── options.php │ │ └── rules.php │ └── trend.php ├── search │ ├── buckets.php │ ├── layout.php │ ├── main.php │ ├── nothing_to_display.php │ ├── rivers.php │ └── users.php ├── settings │ ├── invites.php │ ├── layout.php │ ├── main.php │ ├── plugins.php │ ├── quotas.php │ └── users.php ├── trend │ ├── bucket.php │ └── river.php ├── user │ ├── activity.php │ ├── content.php │ ├── followers.php │ ├── invite.php │ ├── js │ │ ├── assets.php │ │ ├── content.php │ │ ├── profile.php │ │ └── settings.php │ ├── layout.php │ ├── no_activity.php │ ├── register.php │ └── settings.php └── welcome │ ├── js │ └── main.php │ └── main.php └── template ├── activities.php ├── assets.php ├── collaborators.php ├── follow.php ├── footer.php ├── header.php ├── layout.php └── nav └── header.php /.gitignore: -------------------------------------------------------------------------------- 1 | .*swp 2 | *~ 3 | *.DS_Store 4 | application/logs/* 5 | application/cache/* 6 | application/config/*.php 7 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "modules/unittest"] 2 | path = modules/unittest 3 | url = git://github.com/kohana/unittest.git 4 | [submodule "system"] 5 | path = system 6 | url = https://github.com/kohana/core.git 7 | [submodule "modules/auth"] 8 | path = modules/auth 9 | url = git://github.com/kohana/auth.git 10 | [submodule "modules/cache"] 11 | path = modules/cache 12 | url = git://github.com/kohana/cache.git 13 | [submodule "modules/image"] 14 | path = modules/image 15 | url = git://github.com/kohana/image.git 16 | [submodule "plugins/feedwriter"] 17 | path = plugins/feedwriter 18 | url = git://github.com/ushahidi/swiftriver-plugin-feedwriter.git 19 | [submodule "plugins/email"] 20 | path = plugins/email 21 | url = git://github.com/ushahidi/swiftriver-plugin-email.git 22 | [submodule "plugins/mediaextractor"] 23 | path = plugins/mediaextractor 24 | url = git://github.com/ushahidi/swiftriver-plugin-mediaextractor.git 25 | [submodule "plugins/rss"] 26 | path = plugins/rss 27 | url = git://github.com/ushahidi/swiftriver-plugin-rss.git 28 | [submodule "plugins/swiftcore"] 29 | path = plugins/swiftcore 30 | url = git://github.com/ushahidi/swiftriver-plugin-swiftcore.git 31 | [submodule "plugins/twitter"] 32 | path = plugins/twitter 33 | url = git://github.com/ushahidi/swiftriver-plugin-twitter.git 34 | [submodule "modules/captcha"] 35 | path = modules/captcha 36 | url = git://github.com/ushahidi/kohana-captcha.git 37 | [submodule "modules/purifier"] 38 | path = modules/purifier 39 | url = git://github.com/shadowhand/purifier.git 40 | [submodule "modules/minion"] 41 | path = modules/minion 42 | url = git://github.com/kohana/minion.git 43 | [submodule "modules/markdown"] 44 | path = modules/markdown 45 | url = git://github.com/durham-university/kohana-markdown.git 46 | [submodule "modules/SwiftRiver_API/vendor/PHP-OAuth2"] 47 | path = modules/SwiftRiver_API/vendor/PHP-OAuth2 48 | url = git://github.com/ekala/PHP-OAuth2.git 49 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | # Turn on URL rewriting 2 | RewriteEngine On 3 | 4 | # Installation directory 5 | RewriteBase / 6 | 7 | # Protect hidden files from being viewed 8 | 9 | Order Deny,Allow 10 | Deny From All 11 | 12 | 13 | # Protect application and system files from being viewed 14 | RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L] 15 | 16 | # Allow any files or directories that exist to be displayed directly 17 | RewriteCond %{REQUEST_FILENAME} !-f 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | 20 | # Rewrite all other URLs to index.php/URL 21 | RewriteRule .* index.php/$0 [PT] 22 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.4 5 | - 5.3 6 | 7 | before_script: 8 | - mkdir application/{cache,logs} 9 | - chmod 0777 application/{cache,logs} 10 | - find application/config -name "*template" -exec bash -c 'cp "$1" "${1/.template/}"' modlang \{\} \; 11 | 12 | script: phpunit --bootstrap=application/tests/bootstrap.php --exclude-group=kohana modules/unittest/tests.php 13 | 14 | notifications: 15 | email: 16 | - code@swiftriver.io 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SwiftRiver is a free and open source platform for helping people to make sense of large amounts of information in a short amount of time. It is a mission to democratize access to the tools used to make sense of data - discover information that is authentic, accurate and above all, relevant - by providing the following capabilities: 2 | 3 | * Gathering and filtering of information from a variety of channels e.g. RSS, Email, SMS, Twitter etc 4 | * Drawing insights from the collected information 5 | * Allowing people to create buckets of information using their own expectations of authority and accuracy as opposed to popularity. 6 | 7 | ##Documentation 8 | Documentation can be found on the [SwiftRiver wiki](https://wiki.ushahidi.com/display/WIKI/SwiftRiver) 9 | 10 | ##Feedback 11 | You can use the [SwiftRiver mailing list](http://groups.google.com/group/swiftriver) for questions, comments and bug reports. 12 | 13 | You can also [contact Ushahidi](http://www.ushahidi.com/contact-us) 14 | 15 | ##License 16 | SwiftRiver is licensed under the [GNU Affero General Public License](http://www.gnu.org/licenses/agpl.html) -------------------------------------------------------------------------------- /application/classes/Controller/Bucket/Collaborators.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftBucket - https://github.com/ushahidi/SwiftBucket 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_Bucket_Collaborators extends Controller_Bucket_Settings { 17 | 18 | /** 19 | * @return void 20 | */ 21 | public function action_index() 22 | { 23 | $this->template->header->title = $this->bucket['name'].' ~ '.__('Collaborator Settings'); 24 | $this->template->header->js .= HTML::script("themes/default/media/js/collaborators.js"); 25 | $this->template->content->active = "collaborators"; 26 | $this->template->content->settings_content = View::factory('template/collaborators') 27 | ->bind('fetch_url', $fetch_url) 28 | ->bind('collaborator_list', $collaborators); 29 | 30 | $fetch_url = $this->bucket_base_url.'/collaborators'; 31 | $collaborators = json_encode($this->bucket_service->get_collaborators($this->bucket['id'])); 32 | 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /application/classes/Controller/Drop.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_Drop extends Controller_Swiftriver { 17 | 18 | /** 19 | * @var boolean Whether the template file should be rendered automatically. 20 | */ 21 | public $auto_render = FALSE; 22 | 23 | /** 24 | * Single drop restful api 25 | */ 26 | public function action_index() 27 | { 28 | $this->template = ""; 29 | 30 | if ( ! $this->admin) 31 | { 32 | throw new HTTP_Exception_403(); 33 | } 34 | 35 | switch ($this->request->method()) 36 | { 37 | case "POST": 38 | // Get the POST data 39 | $drops = json_decode($this->request->body(), TRUE); 40 | Kohana::$log->add(Log::DEBUG, ":count Drops received", array(':count' => count($drops))); 41 | Model_Droplet::create_from_array($drops); 42 | break; 43 | } 44 | } 45 | 46 | 47 | /** 48 | * Comments 49 | */ 50 | public function action_comment() 51 | { 52 | $this->template = ""; 53 | 54 | if ( ! $this->admin) 55 | throw new HTTP_Exception_403(); 56 | 57 | if ($this->request->method() != "POST") 58 | throw HTTP_Exception::factory(405)->allowed('POST'); 59 | 60 | // Get the POST data 61 | $data = json_decode($this->request->body(), TRUE); 62 | $user = Model_User::get_user_by_email($data['from_email']); 63 | $drop_id = intval($this->request->param('id', 0)); 64 | 65 | if ( ! $user->loaded()) 66 | throw HTTP_Exception::factory(404); 67 | 68 | $comment = Model_Droplet_Comment::create_new( 69 | $data['comment_text'], 70 | $drop_id, 71 | $user->id 72 | ); 73 | 74 | $context_obj = ORM::factory(ucfirst($data['context']), $data['context_obj_id']); 75 | if ($context_obj->loaded()) 76 | { 77 | Swiftriver_Mail::notify_new_drop_comment($comment, $context_obj); 78 | } 79 | 80 | Kohana::$log->add(Log::DEBUG, "New comment for drop id :id from :email", 81 | array( 82 | ':id' => $drop_id, 83 | ':email' => $data['from_email'] 84 | ) 85 | ); 86 | } 87 | } -------------------------------------------------------------------------------- /application/classes/Controller/Form.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_Form extends Controller_Swiftriver { 17 | 18 | /** 19 | * @return void 20 | */ 21 | public function before() 22 | { 23 | // Execute parent::before first 24 | parent::before(); 25 | 26 | // Get the form id form the url 27 | $form_id = $this->request->param('name'); 28 | 29 | 30 | // Find the matching form from the visited account's forms. 31 | foreach($this->visited_account['forms'] as $form) 32 | { 33 | if ($form['id'] == $form_id) 34 | { 35 | $this->form = $this->form_service->get_array($form, $this->user); 36 | } 37 | } 38 | 39 | if (!isset($this->form)) 40 | throw new HTTP_Exception_404(); 41 | 42 | $this->owner = $this->form['is_owner']; 43 | $this->collaborator = $this->form['collaborator']; 44 | 45 | // If this river is not public and no ownership... 46 | if ( ! $this->owner AND 47 | ! $this->collaborator) 48 | { 49 | throw new HTTP_Exception_403(); 50 | } 51 | 52 | $this->form_base_url = $this->form_service->get_base_url($this->form); 53 | } 54 | 55 | 56 | public function action_fields() 57 | { 58 | $this->template = ""; 59 | $this->auto_render = FALSE; 60 | 61 | switch ($this->request->method()) 62 | { 63 | case "POST": 64 | $field_array = json_decode($this->request->body(), TRUE); 65 | $field = $this->form_service->create_field($this->form['id'], $field_array); 66 | 67 | echo json_encode($field); 68 | break; 69 | 70 | case "PUT": 71 | $field_id = intval($this->request->param('id', 0)); 72 | $field_array = json_decode($this->request->body(), TRUE); 73 | $field = $this->form_service->update_field($this->form['id'], $field_id, $field_array); 74 | 75 | echo json_encode($field); 76 | break; 77 | 78 | case "DELETE": 79 | $field_id = intval($this->request->param('id', 0)); 80 | $field_array = json_decode($this->request->body(), TRUE); 81 | $field = $this->form_service->delete_field($this->form['id'], $field_id); 82 | break; 83 | } 84 | 85 | } 86 | } -------------------------------------------------------------------------------- /application/classes/Controller/River/Collaborators.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_River_Collaborators extends Controller_River_Settings { 17 | 18 | /** 19 | * @return void 20 | */ 21 | public function action_index() 22 | { 23 | $this->template->header->title = $this->river['name'].' ~ '.__('Collaborator Settings'); 24 | $this->template->header->js .= HTML::script("themes/default/media/js/collaborators.js"); 25 | $this->template->content->active = "collaborators"; 26 | $this->template->content->settings_content = View::factory('template/collaborators') 27 | ->bind('fetch_url', $fetch_url) 28 | ->bind('collaborator_list', $collaborators); 29 | 30 | $fetch_url = $this->river_base_url.'/collaborators'; 31 | $collaborators = json_encode($this->river_service->get_collaborators($this->river['id'])); 32 | 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /application/classes/Controller/River/Rules.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_River_Rules extends Controller_River_Settings { 17 | 18 | /** 19 | * @return void 20 | */ 21 | public function action_index() 22 | { 23 | $this->template->content->active = "rules"; 24 | $this->template->content->settings_content = View::factory('pages/river/settings/rules') 25 | ->bind('condition_fields', $condition_fields) 26 | ->bind('condition_operators', $condition_operators) 27 | ->bind('rules_js', $rules_js); 28 | 29 | $rules_js = View::factory('pages/river/settings/js/rules') 30 | ->bind('action_url', $action_url) 31 | ->bind('rules', $rules); 32 | 33 | $rules = json_encode($this->river_service->get_rules($this->river['id'])); 34 | $action_url = $this->river_base_url.'/settings/rules/manage'; 35 | 36 | // Fields for the rule condition 37 | $condition_fields = array( 38 | 'title' => 'Title', 39 | 'content' => 'Content', 40 | 'source' => 'Source' 41 | ); 42 | 43 | // Condition operators 44 | $condition_operators = array( 45 | 'contains' => 'contains', 46 | 'is' => 'is', 47 | 'does_not_contain' => 'does not contain' 48 | ); 49 | } 50 | 51 | public function action_manage() 52 | { 53 | $this->template = ''; 54 | $this->auto_render = FALSE; 55 | 56 | switch ($this->request->method()) 57 | { 58 | case "POST": 59 | $rules_data = json_decode($this->request->body(), TRUE); 60 | $rule = $this->river_service->add_rule($this->river['id'], $rules_data); 61 | echo json_encode($rule); 62 | break; 63 | 64 | case "PUT": 65 | $rule_id = $this->request->param('id', 0); 66 | $rules_data = json_decode($this->request->body(), TRUE); 67 | $rule = $this->river_service->modify_rule($this->river['id'], $rule_id, $rules_data); 68 | echo json_encode($rule); 69 | break; 70 | 71 | case "DELETE": 72 | $rule_id = $this->request->param('id', 0); 73 | $this->river_service->delete_rule($this->river['id'], $rule_id); 74 | break; 75 | } 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /application/classes/Controller/Settings/Invites.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_Settings_Invites extends Controller_Settings_Main { 17 | 18 | 19 | /** 20 | * List all the Plugins 21 | * 22 | * @param string $page - page uri 23 | * @return void 24 | */ 25 | public function action_index() 26 | { 27 | if ($this->request->post()) 28 | { 29 | $this->auto_render = FALSE; 30 | 31 | $post = Validation::factory($_FILES) 32 | ->rule('file', 'Upload::not_empty') 33 | ->rule('file', 'Upload::type', array(':value', array('txt'))) 34 | ->rule('file', 'Upload::valid'); 35 | if ( ! $post->check()) 36 | { 37 | $this->response->status(400); 38 | $this->response->headers('Content-Type', 'application/json'); 39 | echo json_encode(array('error' => __("Invalid file"))); 40 | return; 41 | } 42 | 43 | $file = $_FILES['file']; 44 | $file_contents = file_get_contents($file['tmp_name']); 45 | $errors = array(); 46 | foreach (preg_split("/(\r?\n)/", $file_contents) as $line) { 47 | $email = trim($line); 48 | $messages = Model_User::new_user($email, $this->riverid_auth, TRUE); 49 | 50 | // Display the messages 51 | if (isset($messages['errors'])) 52 | { 53 | $errors[] = $email.' - '.implode(" ",$messages['errors']); 54 | } 55 | } 56 | 57 | $ret = array(); 58 | if ( ! empty($errors)) 59 | { 60 | $ret['status_ok'] = FALSE; 61 | $ret['errors'] = $errors; 62 | } 63 | if (isset($messages['messages'])) 64 | { 65 | $ret['status_ok'] = TRUE; 66 | } 67 | echo json_encode($ret); 68 | return; 69 | } 70 | 71 | $this->template->header->title = __('Invites'); 72 | $this->settings_content = View::factory('pages/settings/invites'); 73 | $this->active = 'invites'; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /application/classes/Controller/Settings/Quotas.php: -------------------------------------------------------------------------------- 1 | template->header->title = __("Channel Quotas"); 25 | $this->settings_content = View::factory('pages/settings/quotas') 26 | ->bind('post_url', $post_url) 27 | ->bind('quotas', $quotas); 28 | 29 | $this->active = 'quotas'; 30 | $post_url = URL::site('settings/quotas/manage'); 31 | $quotas = json_encode(Model_Channel_Quota::get_quotas_array()); 32 | } 33 | 34 | /** 35 | * REST endpoint for (de)activation of channel quotas 36 | */ 37 | public function action_manage() 38 | { 39 | $this->template = ''; 40 | $this->auto_render = FALSE; 41 | 42 | switch ($this->request->method()) 43 | { 44 | case "POST": 45 | $payload = json_decode($this->request->body(), TRUE); 46 | $quota_orm = Model_Channel_Quota::add_quota($payload); 47 | 48 | echo json_encode($quota_orm->as_array()); 49 | break; 50 | 51 | case "PUT": 52 | $payload = json_decode($this->request->body(), TRUE); 53 | $quota_id = $payload['id']; 54 | $quota_orm = ORM::factory('Channel_Quota', $quota_id); 55 | if ($quota_orm->loaded()) 56 | { 57 | $quota_orm->quota = $payload['quota']; 58 | $quota_orm->save(); 59 | } 60 | break; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /application/classes/Controller/Settings/Users.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_Settings_Users extends Controller_Settings_Main { 17 | 18 | 19 | /** 20 | * List all the users 21 | * 22 | * @return void 23 | */ 24 | public function action_index() 25 | { 26 | $this->template->header->title = __('Users'); 27 | $this->settings_content = View::factory('pages/settings/users') 28 | ->bind('fetch_url', $fetch_url) 29 | ->bind('users_list', $users_list); 30 | 31 | $this->active = 'users'; 32 | $fetch_url = URL::site().'settings/users/manage'; 33 | $users = array(); 34 | foreach (ORM::factory('User')->where('username', '<>', 'admin')->find_all() as $user) 35 | { 36 | $users[] = array( 37 | "id" => $user->id, 38 | "name" => $user->name, 39 | "user_avatar" => Swiftriver_Users::gravatar($user->email, 45), 40 | "user_url" => URL::site().$user->account->account_path 41 | ); 42 | } 43 | $users_list = json_encode($users); 44 | } 45 | 46 | public function action_manage() 47 | { 48 | $this->template = ''; 49 | $this->auto_render = FALSE; 50 | 51 | switch ($this->request->method()) 52 | { 53 | case "DELETE": 54 | // When an existing user is deleted 55 | $user_orm = ORM::factory('User', $this->request->param('id', 0)); 56 | if ( ! $user_orm->loaded()) 57 | { 58 | throw new HTTP_Exception_404("The selected user does not exist"); 59 | } 60 | 61 | // Delete user from the system - rivers, buckets, accounts 62 | $user_orm->delete(); 63 | 64 | break; 65 | 66 | case "POST": 67 | // When an invite is sent 68 | break; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /application/classes/Controller/Welcome.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_Welcome extends Controller_Swiftriver { 17 | 18 | /** 19 | * Whether to automatically render the view 20 | * @var bool 21 | */ 22 | public $auto_render = TRUE; 23 | 24 | 25 | public function before() 26 | { 27 | parent::before(); 28 | 29 | // TODO 30 | } 31 | 32 | public function action_index() 33 | { 34 | $this->template->header->css = HTML::style("themes/default/media/css/home.css"); 35 | $this->template->header->title = __('Welcome'); 36 | $this->template->content = View::factory('pages/welcome/main'); 37 | $this->template->content->set(array( 38 | 'public_registration_enabled' => (bool) Swiftriver::get_setting('public_registration_enabled'), 39 | 'anonymous' => $this->anonymous 40 | )); 41 | } 42 | } 43 | ?> 44 | -------------------------------------------------------------------------------- /application/classes/HTML.php: -------------------------------------------------------------------------------- 1 | 'My Company')); 45 | * 46 | * @param string file name 47 | * @param array default attributes 48 | * @param mixed protocol to pass to URL::base() 49 | * @param boolean include the index page 50 | * @return string 51 | * @uses URL::base 52 | * @uses HTML::attributes 53 | */ 54 | public static function image($file, array $attributes = NULL, $protocol = NULL, $index = FALSE) 55 | { 56 | $file = Swiftriver::get_cdn_url($file); 57 | return parent::image($file, $attributes, $protocol, $index); 58 | } 59 | } -------------------------------------------------------------------------------- /application/classes/HTTP/Exception/404.php: -------------------------------------------------------------------------------- 1 | 9 | * @package Swiftriver - http://github.com/ushahidi/SwiftRiver 10 | * @subpackage Libraries 11 | * @copyright Ushahidi - http://www.ushahidi.com 12 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 13 | */ 14 | class HTTP_Exception_404 extends Kohana_HTTP_Exception_404 { 15 | 16 | /** 17 | * Generates a Response for all Exceptions without a specific override 18 | * 19 | * @return Response 20 | */ 21 | public function get_response() 22 | { 23 | // Log the exception 24 | Kohana_Exception::log($this); 25 | 26 | $response = Response::factory(); 27 | 28 | $view = Swiftriver::get_base_error_view(); 29 | $view->content = View::factory('pages/errors/404') 30 | ->set('page', $this->request()->uri()); 31 | 32 | $response->body($view->render()); 33 | 34 | return $response; 35 | } 36 | } -------------------------------------------------------------------------------- /application/classes/Kohana/Exception.php: -------------------------------------------------------------------------------- 1 | 11 | * @package Swiftriver - http://github.com/ushahidi/SwiftRiver 12 | * @subpackage Libraries 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Kohana_Exception extends Kohana_Kohana_Exception { 17 | 18 | /** 19 | * Exception handler, logs the exception and generates a 20 | * Response object for display 21 | * 22 | * @param Exception $e 23 | * @return boolean 24 | */ 25 | public static function _handler(Exception $e) 26 | { 27 | // Log the error 28 | Kohana::$log->add(Log::ERROR, $e->getMessage()); 29 | 30 | // Generate the response 31 | $response = Response::factory(); 32 | 33 | $view = Swiftriver::get_base_error_view(); 34 | $view->content = View::factory('pages/errors/default'); 35 | 36 | $response->body($view->render()); 37 | 38 | return $response; 39 | } 40 | } -------------------------------------------------------------------------------- /application/classes/Service/Base.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Services 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | abstract class Service_Base { 17 | 18 | /** 19 | * @var SwiftRiver_API 20 | */ 21 | protected $api = NULL; 22 | 23 | public function __construct($api) 24 | { 25 | $this->api = $api; 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /application/classes/Service/Drop.php: -------------------------------------------------------------------------------- 1 | 11 | * @package Swiftriver - http://github.com/ushahidi/Swiftriver_v2 12 | * @category Services 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Service_Drop { 17 | 18 | /** 19 | * Drops API 20 | * @var SwiftRiver_API_Drops 21 | */ 22 | private $drops_api; 23 | 24 | public function __construct($api) 25 | { 26 | $this->drops_api = $api->get_drops_api(); 27 | } 28 | 29 | /** 30 | * Adds missing properties that are consumed by the UI to each of the 31 | * drops in $drops. 32 | * 33 | * @param array drops 34 | */ 35 | public static function format_drops(array & $drops) 36 | { 37 | foreach ($drops as & $drop) 38 | { 39 | // Buckets 40 | if (empty($drop['buckets'])) 41 | { 42 | $drop['buckets'] = array(); 43 | } 44 | 45 | // Drop image 46 | if ( ! array_key_exists('image', $drop)) 47 | { 48 | $drop['image'] = NULL; 49 | } 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /application/classes/Session.php: -------------------------------------------------------------------------------- 1 | load('site')->get('default_session_adapter'); 18 | 19 | if ($default_session_adapter) 20 | { 21 | $type = $default_session_adapter; 22 | } 23 | 24 | return parent::instance($type, $id); 25 | } 26 | } 27 | 28 | ?> 29 | -------------------------------------------------------------------------------- /application/classes/Swiftriver/Exception/Channel/Option.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @subpackage Exceptions 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | class Swiftriver_Exception_Channel_Option extends Kohana_Exception { 17 | } -------------------------------------------------------------------------------- /application/classes/Swiftriver/Messages.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Libraries 12 | * @copyright (c) 2012 Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | class Swiftriver_Messages { 16 | 17 | // Message list 18 | protected static $_messages = array(); 19 | 20 | /** 21 | * Add a system message 22 | * 23 | * @param string $type 24 | * @param string $title 25 | * @param string $message 26 | * @return null 27 | */ 28 | public static function add_message($type, $title, $message, $flash = TRUE) 29 | { 30 | self::$_messages[] = array( 31 | 'type' => $type, 32 | 'title' => $title, 33 | 'message' => $message, 34 | 'flash' => $flash 35 | ); 36 | 37 | Session::instance()->set("messages", self::$_messages); 38 | } 39 | } 40 | 41 | ?> 42 | -------------------------------------------------------------------------------- /application/classes/Swiftriver/Navs.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Helpers 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | class Swiftriver_Navs { 16 | 17 | /** 18 | * River Navs 19 | * 20 | * @param obj $river - the loaded river object 21 | * @param string $active - the active menu 22 | * @return array $nav 23 | */ 24 | public static function river($river = NULL, $active = NULL) 25 | { 26 | $nav = array(); 27 | 28 | if ($river) 29 | { 30 | // List 31 | $nav[] = array( 32 | 'id' => 'list-navigation-link', 33 | 'active' => 'list', 34 | 'url' => '/list', 35 | 'label' => __('List') 36 | ); 37 | 38 | // Drops 39 | $nav[] = array( 40 | 'id' => 'drops-navigation-link', 41 | 'active' => 'drops', 42 | 'url' => '/drops', 43 | 'label' => __('Drops') 44 | ); 45 | 46 | // Photos 47 | $nav[] = array( 48 | 'id' => 'photos-navigation-link', 49 | 'active' => 'photos', 50 | 'url' => '/photos', 51 | 'label' => __('Photos') 52 | ); 53 | 54 | // Trends 55 | // $nav[] = array( 56 | // 'id' => 'trends-navigation-link', 57 | // 'active' => 'trends', 58 | // 'url' => '/trends', 59 | // 'label' => __('Trends') 60 | // ); 61 | } 62 | 63 | // SwiftRiver Plugin Hook -- Add Nav Items 64 | Swiftriver_Event::run('swiftriver.river.nav', $nav); 65 | 66 | return $nav; 67 | } 68 | } -------------------------------------------------------------------------------- /application/classes/Swiftriver/Users.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Helpers 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | class Swiftriver_Users { 16 | 17 | /** 18 | * Get either a Gravatar URL or complete image tag for a specified email address. 19 | * 20 | * @param string $email The email address 21 | * @param string $s Size in pixels, defaults to 80px [ 1 - 512 ] 22 | * @param string $d Default imageset to use [ 404 | mm | identicon | monsterid | wavatar ] 23 | * @param string $r Maximum rating (inclusive) [ g | pg | r | x ] 24 | * @param boole $img True to return a complete IMG tag False for just the URL 25 | * @param array $atts Optional, additional key/value attributes to include in the IMG tag 26 | * @return String containing either just a URL or a complete image tag 27 | * @source http://gravatar.com/site/implement/images/php/ 28 | */ 29 | public static function gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) 30 | { 31 | $url = 'https://secure.gravatar.com/avatar/'; 32 | $url .= md5( strtolower( trim( $email ) ) ); 33 | $url .= "?s=$s&d=$d&r=$r"; 34 | if ($img) 35 | { 36 | $url = ' $val ) 38 | $url .= ' ' . $key . '="' . $val . '"'; 39 | $url .= ' />'; 40 | } 41 | return $url; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /application/classes/Unittest/Database/TestCase.php: -------------------------------------------------------------------------------- 1 | 15 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 16 | * @category Tests 17 | * @copyright Ushahidi - http://www.ushahidi.com 18 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 19 | */ 20 | abstract class Unittest_Database_TestCase extends Kohana_Unittest_Database_TestCase { 21 | 22 | /** 23 | * @return PHPUnit_Extensions_Database_DataSet_IDataSet 24 | */ 25 | public function getDataSet() 26 | { 27 | $compositeDs = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet(array()); 28 | 29 | foreach ($this->datasets as $dataset) 30 | { 31 | $file = Kohana::find_file('tests', 'test-data/'.$dataset, 'xml'); 32 | $ds = $this->createFlatXmlDataSet($file); 33 | $compositeDs->addDataSet($ds); 34 | } 35 | return $compositeDs; 36 | } 37 | 38 | /** 39 | * Tests will use test database 40 | * @var string 41 | */ 42 | protected $_database_connection = 'unittest'; 43 | 44 | } -------------------------------------------------------------------------------- /application/config/auth.php.template: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - http://github.com/ushahidi/Swiftriver_v2 12 | * @subpackage Auth config 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | 17 | return array( 18 | 'driver' => 'SwiftRiver', 19 | 20 | // OAuth Parameters 21 | 'token_endpoint' => 'http://api.swiftapp.com/oauth/token', 22 | 'client_id' => 'trusted-client', 23 | 'client_secret' => 'somesecret', 24 | 'grant_type' => 'password', 25 | 26 | // No authentication for these controllers 27 | 'ignore_controllers' => array('login', 'error_handler', 'welcome') 28 | ); 29 | -------------------------------------------------------------------------------- /application/config/cache.php.template: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - http://github.com/ushahidi/Swiftriver_v2 12 | * @subpackage Cache config 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | 17 | return array( 18 | 'default' => array( // Default group 19 | 'driver' => 'memcache', // using Memcache driver 20 | 'servers' => array( // Available server definitions 21 | array( 22 | 'host' => 'localhost', 23 | 'port' => 11211, 24 | 'persistent' => FALSE 25 | ) 26 | ), 27 | 'compression' => FALSE, // Use compression? 28 | ) 29 | ); -------------------------------------------------------------------------------- /application/config/cookie.php.template: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - http://github.com/ushahidi/Swiftriver_v2 11 | * @subpackage Cookie config 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | return array( 17 | 18 | // Restrict the domain the cookie is available to 19 | 'domain' => '', 20 | 21 | // Only transmit cookies over secure connections 22 | 'secure' => FALSE, 23 | 24 | // Magic salt to add to the cookie 25 | // NOTE: This is the default value and MUST be changed on your deployment 26 | 'salt' => 'WqLHtxZ3X4iGu% 0 30 | ); 31 | -------------------------------------------------------------------------------- /application/config/site.php.template: -------------------------------------------------------------------------------- 1 | 'cookie', 6 | 7 | /* CDN base url */ 8 | 'cdn_url' => NULL, 9 | 10 | /* Directories that are available via the CDN */ 11 | 'cdn_directories' => array('themes/default/media', 'plugins/[^\/]+/media'), 12 | 13 | /* Default cache driver */ 14 | 'default_cache' => 'file', 15 | 16 | /* Installed plugins */ 17 | 'plugins' => array('rss', 'twitter'), 18 | 19 | /* Site name */ 20 | 'site_name' => 'SwiftRiver', 21 | 22 | /* Site theme */ 23 | 'site_theme' => 'default', 24 | 25 | /* Site locale */ 26 | 'site_locale' => 'en', 27 | 28 | /* Is user registration allowed */ 29 | 'public_registration_enabled' => FALSE, 30 | 31 | /* Is login required to view content */ 32 | 'anonymous_access_enabled' => FALSE, 33 | 34 | /* Default river lifetime */ 35 | 'default_river_lifetime' => 14, 36 | 37 | /* Days before river expiry when alert will be sent */ 38 | 'river_expiry_notice_period' => 3, 39 | 40 | /* Can non admin users send registration invites? */ 41 | 'general_invites_enabled' => FALSE, 42 | 43 | /* Default maximum number of rivers a user can create */ 44 | 'default_river_quota' => 1, 45 | 46 | /* Default maximum number of drops a river can hold */ 47 | 'default_river_drop_quota' => 10000, 48 | 49 | /* Site url */ 50 | 'site_url' => 'http://www.example.com', 51 | 52 | /* Default domain for outgoing emails */ 53 | 'email_domain' => 'example.com', 54 | 55 | /* Default domain for outgoing comment notification emails */ 56 | 'comments_email_domain' => 'example.com' 57 | ); -------------------------------------------------------------------------------- /application/i18n/en.php: -------------------------------------------------------------------------------- 1 | 'The username or password you entered is incorrect', 5 | 'user.nickname.account_path_available' => 'Nickname is already taken' 6 | ); -------------------------------------------------------------------------------- /application/tests/Swiftriver/UsersTest.php: -------------------------------------------------------------------------------- 1 | 15 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 16 | * @category Tests 17 | * @copyright Ushahidi - http://www.ushahidi.com 18 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 19 | */ 20 | class Swiftriver_UsersTest extends Unittest_TestCase { 21 | 22 | /** 23 | * Provides test data for test_gravatar() 24 | */ 25 | public function provider_gravatar() 26 | { 27 | return array( 28 | array('test@example.com', 80, 'mm', 'g', FALSE, array(), '55502f40dc8b7c769880b10874abc9d0?s=80&d=mm&r=g'), 29 | array('test2@example.com', 40, '404', 'x', FALSE, array(), '43b05f394d5611c54a1a9e8e20baee21?s=40&d=404&r=x'), 30 | ); 31 | } 32 | 33 | /** 34 | * @test 35 | * @dataProvider provider_gravatar 36 | */ 37 | public function test_gravatar($email, $s, $d, $r, $img, $atts, $expected) 38 | { 39 | $url = Swiftriver_Users::gravatar($email, $s, $d, $r, $img, $atts); 40 | $parts = explode('/', $url); 41 | 42 | $this->assertEquals($expected, array_pop($parts)); 43 | } 44 | } 45 | 46 | -------------------------------------------------------------------------------- /application/tests/phpunit.xml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | ../../modules/unittest/tests.php 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/favicon.ico -------------------------------------------------------------------------------- /markup/_fonts/swiftriver-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_fonts/swiftriver-icons.eot -------------------------------------------------------------------------------- /markup/_fonts/swiftriver-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_fonts/swiftriver-icons.ttf -------------------------------------------------------------------------------- /markup/_fonts/swiftriver-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_fonts/swiftriver-icons.woff -------------------------------------------------------------------------------- /markup/_img/content/home-basics-graphic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-basics-graphic.gif -------------------------------------------------------------------------------- /markup/_img/content/home-features-collaboration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-features-collaboration.png -------------------------------------------------------------------------------- /markup/_img/content/home-features-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-features-configuration.png -------------------------------------------------------------------------------- /markup/_img/content/home-features-views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-features-views.png -------------------------------------------------------------------------------- /markup/_img/content/home-masthead-graphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-masthead-graphic.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-collab1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-collab1.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-collab1FULL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-collab1FULL.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-collab2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-collab2.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-config1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-config1.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-config1FULL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-config1FULL.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-config2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-config2.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-views1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-views1.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-views1FULL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-views1FULL.png -------------------------------------------------------------------------------- /markup/_img/content/home-screen-views2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/content/home-screen-views2.png -------------------------------------------------------------------------------- /markup/_img/drop-wave.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/drop-wave.gif -------------------------------------------------------------------------------- /markup/_img/drop-wave1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /markup/_img/drop-wave1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/drop-wave1@2x.png -------------------------------------------------------------------------------- /markup/_img/drop-wave2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/drop-wave2@2x.png -------------------------------------------------------------------------------- /markup/_img/drop-wave_full.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/drop-wave_full.gif -------------------------------------------------------------------------------- /markup/_img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/favicon.png -------------------------------------------------------------------------------- /markup/_img/header-toolbarBG.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/header-toolbarBG.gif -------------------------------------------------------------------------------- /markup/_img/home-header-toolbarBG.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/home-header-toolbarBG.gif -------------------------------------------------------------------------------- /markup/_img/icon-buoy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/icon-buoy.png -------------------------------------------------------------------------------- /markup/_img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/loader.gif -------------------------------------------------------------------------------- /markup/_img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/loading.gif -------------------------------------------------------------------------------- /markup/_img/logo-swiftriver-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/logo-swiftriver-2x.png -------------------------------------------------------------------------------- /markup/_img/logo-swiftriver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/logo-swiftriver.png -------------------------------------------------------------------------------- /markup/_img/page-navigation_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/page-navigation_active.png -------------------------------------------------------------------------------- /markup/_img/river-empty1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/river-empty1.gif -------------------------------------------------------------------------------- /markup/_img/river-empty2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/river-empty2.gif -------------------------------------------------------------------------------- /markup/_img/signup-modal_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/signup-modal_bg.gif -------------------------------------------------------------------------------- /markup/_img/signup_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/signup_bg.png -------------------------------------------------------------------------------- /markup/_img/sprite-25x25.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/markup/_img/sprite-25x25.psd -------------------------------------------------------------------------------- /markup/_includes/header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <?php print $page_title; ?> ~ SwiftRiver 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 |
19 |

SwiftRiver

20 | 24 |
25 | 26 |
27 | 49 |
50 |
51 |
-------------------------------------------------------------------------------- /markup/_js/jquery.outside.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery outside events - v1.1 - 3/16/2010 3 | * http://benalman.com/projects/jquery-outside-events-plugin/ 4 | * 5 | * Copyright (c) 2010 "Cowboy" Ben Alman 6 | * Dual licensed under the MIT and GPL licenses. 7 | * http://benalman.com/about/license/ 8 | */ 9 | (function($,c,b){$.map("click dblclick mousemove mousedown mouseup mouseover mouseout change select submit keydown keypress keyup".split(" "),function(d){a(d)});a("focusin","focus"+b);a("focusout","blur"+b);$.addOutsideEvent=a;function a(g,e){e=e||g+b;var d=$(),h=g+"."+e+"-special-event";$.event.special[e]={setup:function(){d=d.add(this);if(d.length===1){$(c).bind(h,f)}},teardown:function(){d=d.not(this);if(d.length===0){$(c).unbind(h)}},add:function(i){var j=i.handler;i.handler=function(l,k){l.target=k;j.apply(this,arguments)}}};function f(i){$(d).each(function(){var j=$(this);if(this!==i.target&&!j.has(i.target).length){j.triggerHandler(e,[i.target])}})}}})(jQuery,document,"outside"); -------------------------------------------------------------------------------- /markup/_js/jquery.scrollto.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery.ScrollTo - Easy element scrolling using jQuery. 3 | * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com 4 | * Dual licensed under MIT and GPL. 5 | * Date: 5/25/2009 6 | * @author Ariel Flesler 7 | * @version 1.4.2 8 | * 9 | * http://flesler.blogspot.com/2007/10/jqueryscrollto.html 10 | */ 11 | ;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); 12 | jQuery(function($) { 13 | $.scrollTo($($('#buoy')), { 14 | duration: 500 15 | }); 16 | }); -------------------------------------------------------------------------------- /markup/_modals/add-collaborator.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/add-custom-form.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/add-search-filter.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/add-service.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/add-to-bucket.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/add-to-service.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/add-user.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/buckets.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/followers.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/metadata-custom.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/metadata-links.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/metadata-location.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/_modals/settings-user.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /markup/login.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 | 9 | 64 | 65 |
66 |
67 | 68 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /markup/river/no-channels.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
8 |
9 | 10 |

Confirmation. Pig shank andouille, meatball salami pancetta corned beef.

11 |
12 |
13 | 14 | 15 |
16 |
17 |
18 |

19 |
20 |
21 | 22 | 23 | 28 |
29 |
30 |
31 | 32 |
33 |
34 | 35 |
36 | 42 |
43 | 44 |
45 | 46 |
47 |

Let's add at least one channel.

48 |

Channels (like Twitter and RSS) are what feed your river information. You'll need at least one to see drops in your river. Otherwise, it'll remain dry.

49 | Add channels 50 |
51 |
52 | 53 |
54 |
55 |
56 | 57 |
58 | 59 |
60 | 61 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /markup/search/buckets.php: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
9 |
10 |

keyword

11 |
12 |
13 |
14 | 15 | 27 | 28 |
29 |
30 |
31 | 42 | 43 | 54 |
55 |
56 |
57 | 58 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /markup/search/rivers.php: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
9 |
10 |

keyword

11 |
12 |
13 |
14 | 15 | 27 | 28 |
29 |
30 |
31 | 42 | 43 | 54 |
55 |
56 |
57 | 58 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /markup/search/users.php: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
9 |
10 |

keyword

11 |
12 |
13 |
14 | 15 | 27 | 28 |
29 |
30 |
31 |
32 |
33 |
34 | 35 | 36 |
37 |
38 | 39 |

Nathaniel Manning

40 |
41 |
42 |
43 | 44 |
45 |
46 |
47 | 48 | 49 |
50 |
51 | 52 |

Juliana Rotich

53 |
54 |
55 |
56 |
57 |
58 |
59 | 60 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /markup/signup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Sign up for early access to SwiftRiver 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |

Sign up for early access to SwiftRiver, a search engine for real-time information.

15 |
16 | 17 |

Sweet! We'll contact you soon with details on how to get started.

18 |
19 |
20 | 21 |

Uh oh. Please enter a valid email address.

22 |
23 |
24 | 25 | 26 |
27 |
28 |
29 | 30 | -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/Auth/SwiftRiver.php: -------------------------------------------------------------------------------- 1 | 11 | * @package Swiftriver - http://github.com/ushahidi/Swiftriver_v2 12 | * @subpackage Libraries 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Auth_SwiftRiver extends Kohana_Auth { 17 | 18 | /** 19 | * Perfomr login using user credentials. 20 | * 21 | * @param string username 22 | * @param string password 23 | * @param boolean remember enable autologin 24 | * @return boolean 25 | */ 26 | protected function _login($username, $password, $remember) 27 | { 28 | try 29 | { 30 | $token_params = array('username' => $username, 'password' => $password); 31 | $auth = SwiftRiver_Client::instance()->get_access_token('password', $token_params); 32 | $this->complete_login($auth); 33 | } 34 | catch (SwiftRiver_API_Exception_Authorization $e) 35 | { 36 | Kohana::$log->add(Log::ERROR, $e->getMessage()); 37 | return FALSE; 38 | } 39 | 40 | return TRUE; 41 | } 42 | 43 | public function password($username) 44 | { 45 | return NULL; 46 | } 47 | 48 | public function check_password($user) 49 | { 50 | return FALSE; 51 | } 52 | 53 | /** 54 | * Logs a user in, based on the authautologin cookie. 55 | * 56 | * @return mixed 57 | */ 58 | public function auto_login() 59 | { 60 | return FALSE; 61 | } 62 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/Controller/SwiftRiver.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 12 | * @category Controllers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Controller_SwiftRiver { 17 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Drops.php: -------------------------------------------------------------------------------- 1 | 10 | * @package Swiftriver - http://github.com/ushahidi/Swiftriver_v2 11 | * @subpackage Libraries 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | class SwiftRiver_API_Drops extends SwiftRiver_API { 16 | 17 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Exception.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @subpackage Exceptions 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | abstract class SwiftRiver_API_Exception extends Exception { 17 | 18 | protected $message = NULL; 19 | 20 | protected $errors = NULL; 21 | 22 | public function __construct(array $error) 23 | { 24 | if (isset($error['message'])) 25 | { 26 | $this->message = $error['message']; 27 | } 28 | 29 | if (isset($error['errors'])) 30 | { 31 | $this->errors = $error['errors']; 32 | } 33 | } 34 | 35 | public function get_errors() 36 | { 37 | return $this->errors; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Exception/Authorization.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Exception 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | class SwiftRiver_API_Exception_Authorization extends Exception { 17 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Exception/BadRequest.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Exception 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | class SwiftRiver_API_Exception_BadRequest extends SwiftRiver_API_Exception { 17 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Exception/Forbidden.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Exception 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | class SwiftRiver_API_Exception_Forbidden extends SwiftRiver_API_Exception { 17 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Exception/NotFound.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Exception 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | class SwiftRiver_API_Exception_NotFound extends SwiftRiver_API_Exception { 17 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Exception/Unknown.php: -------------------------------------------------------------------------------- 1 | 10 | * @package SwiftRiver - https://github.com/ushahidi/SwiftRiver 11 | * @category Exception 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | class SwiftRiver_API_Exception_Unknown extends SwiftRiver_API_Exception { 17 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Forms.php: -------------------------------------------------------------------------------- 1 | 11 | * @package Swiftriver - http://github.com/ushahidi/Swiftriver_v2 12 | * @subpackage Libraries 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class SwiftRiver_API_Forms extends SwiftRiver_API { 17 | 18 | /** 19 | * Create a form 20 | * 21 | * @param string $form_array 22 | * @return Array 23 | */ 24 | public function create_form($form_array) { 25 | return $this->post('/forms', $form_array); 26 | } 27 | 28 | /** 29 | * Update the given form 30 | * 31 | * @return Array 32 | */ 33 | public function update_form($form_id, $new_name) 34 | { 35 | $request_body = array( 36 | "name" => $new_name 37 | ); 38 | 39 | return $this->put('/forms/'.$form_id, $request_body); 40 | } 41 | 42 | /** 43 | * Deletes the form specified in $form_id 44 | * 45 | * @param int form_id 46 | */ 47 | public function delete_form($form_id) 48 | { 49 | return $this->delete('/forms/'.$form_id); 50 | } 51 | 52 | /** 53 | * Create a form field 54 | * 55 | * @param string $form_id 56 | * @param string $field_id 57 | * @param string $field_array 58 | * @return Array 59 | */ 60 | public function create_field($form_id, $field_array) 61 | { 62 | return $this->post('/forms/'.$form_id.'/fields', $field_array); 63 | } 64 | 65 | /** 66 | * Modify a form field 67 | * 68 | * @param string $form_id 69 | * @param string $field_id 70 | * @param string $field_array 71 | * @return Array 72 | */ 73 | public function update_field($form_id, $field_id, $field_array) 74 | { 75 | return $this->put('/forms/'.$form_id.'/fields/'.$field_id, $field_array); 76 | } 77 | 78 | /** 79 | * Delete field 80 | * 81 | * @param long $form_id 82 | * @param long $field_id 83 | * @return Array 84 | */ 85 | public function delete_field($form_id, $field_id) 86 | { 87 | return $this->delete('/forms/'.$form_id.'/fields/'.$field_id); 88 | } 89 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/classes/SwiftRiver/API/Search.php: -------------------------------------------------------------------------------- 1 | 10 | * @package Swiftriver - http://github.com/ushahidi/Swiftriver_v2 11 | * @subpackage Libraries 12 | * @copyright Ushahidi - http://www.ushahidi.com 13 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 14 | */ 15 | 16 | class SwiftRiver_API_Search extends SwiftRiver_API { 17 | 18 | /** 19 | * Finds and returns all drops that contain the phrase specified 20 | * in $search_term 21 | * 22 | * @param string search_term 23 | * @param int page 24 | * @return array 25 | */ 26 | public function find_drops($search_term, $page = 1) 27 | { 28 | Kohana::$log->add(Log::DEBUG, __("Searching for ':search_term' on page :page", array( 29 | ":search_term" => $search_term, 30 | ":page"=>$page 31 | ))); 32 | 33 | $parameters = array( 34 | 'q' => $search_term, 35 | 'page' => $page 36 | ); 37 | return $this->get('/search/drops/', $parameters); 38 | } 39 | 40 | /** 41 | * Finds and returns all buckets that contain the phrase specified 42 | * in $search_term 43 | * 44 | * @param string search_term 45 | * @param int page 46 | * @return array 47 | */ 48 | public function find_buckets($search_term, $page = 1) 49 | { 50 | $parameters = array( 51 | 'q' => $search_term, 52 | 'page' => $page 53 | ); 54 | return $this->get('/search/buckets/', $parameters); 55 | } 56 | 57 | /** 58 | * Finds and returns all rivers that contain the phrase specified 59 | * in $search_term 60 | * 61 | * @param string search_term 62 | * @param int page 63 | * @return array 64 | */ 65 | public function find_rivers($search_term, $page = 1) 66 | { 67 | $parameters = array( 68 | 'q' => $search_term, 69 | 'page' => $page 70 | ); 71 | return $this->get('/search/rivers/', $parameters); 72 | } 73 | 74 | /** 75 | * Finds and returns all users that contain the phrase specified 76 | * in $search_term 77 | * 78 | * @param string search_term 79 | * @param int page 80 | * @return array 81 | */ 82 | public function find_users($search_term, $page = 1) 83 | { 84 | $parameters = array( 85 | 'q' => $search_term, 86 | 'page' => $page 87 | ); 88 | return $this->get('/search/accounts/', $parameters); 89 | } 90 | 91 | } -------------------------------------------------------------------------------- /modules/SwiftRiver_API/config/swiftriver.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - http://github.com/ushahidi/Swiftriver_v2 12 | * @category Config 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | 17 | return array( 18 | 'base_url' => 'https://api.swiftapp.com/v1', 19 | ); 20 | -------------------------------------------------------------------------------- /modules/csrf/classes/CSRF.php: -------------------------------------------------------------------------------- 1 | 11 | * @package CSRF - http://github.com/ushahidi/Swiftriver_v2 12 | * @category Helpers 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class CSRF { 17 | 18 | /** 19 | * Session key for the CSRF token 20 | * @var string 21 | */ 22 | private static $_csrf_session_key = 'csrf-token'; 23 | 24 | /** 25 | * Generates an returns a randon token for CSRF 26 | * prevention 27 | * 28 | * @return string 29 | */ 30 | public static function token() 31 | { 32 | $token = Session::instance()->get(self::$_csrf_session_key); 33 | 34 | if ( ! $token) 35 | { 36 | // Generates a hash of variable length random alpha-numeric string 37 | $token = hash('sha256', Text::random('alnum', rand(25, 32))); 38 | Session::instance()->set(self::$_csrf_session_key, $token); 39 | } 40 | 41 | return $token; 42 | } 43 | 44 | /** 45 | * Validates the specified token against the current 46 | * session value 47 | * 48 | * @return bool TRUE if match, FALSE otherwise 49 | */ 50 | public static function valid($token) 51 | { 52 | return $token == self::token(); 53 | } 54 | } 55 | 56 | ?> -------------------------------------------------------------------------------- /modules/csrf/classes/Form.php: -------------------------------------------------------------------------------- 1 | 14 | * @package CSRF - http://github.com/ushahidi/Swiftriver_v2 15 | * @category Helpers 16 | * @copyright Ushahidi - http://www.ushahidi.com 17 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 18 | */ 19 | 20 | class Form extends Kohana_Form { 21 | 22 | /** 23 | * Generates an opening HTML form tag. 24 | * 25 | * // Form will submit back to the current page using POST 26 | * echo Form::open(); 27 | * 28 | * // Form will submit to 'search' using GET 29 | * echo Form::open('search', array('method' => 'get')); 30 | * 31 | * // When "file" inputs are present, you must include the "enctype" 32 | * echo Form::open(NULL, array('enctype' => 'multipart/form-data')); 33 | * 34 | * @param mixed form action, defaults to the current request URI, or [Request] class to use 35 | * @param array html attributes 36 | * @return string 37 | * @uses Request::instance 38 | * @uses URL::site 39 | * @uses HTML::attributes 40 | */ 41 | public static function open($action = NULL, array $attributes = NULL) 42 | { 43 | if ($action instanceof Request) 44 | { 45 | // Use the current URI 46 | $action = $action->uri(); 47 | } 48 | 49 | if ( ! $action) 50 | { 51 | // Allow empty form actions (submits back to the current url). 52 | $action = ''; 53 | } 54 | elseif (strpos($action, '://') === FALSE) 55 | { 56 | // Make the URI absolute 57 | $action = URL::site($action); 58 | } 59 | 60 | // Add the form action to the attributes 61 | $attributes['action'] = $action; 62 | 63 | // Only accept the default character set 64 | $attributes['accept-charset'] = Kohana::$charset; 65 | 66 | if ( ! isset($attributes['method'])) 67 | { 68 | // Use POST method 69 | $attributes['method'] = 'post'; 70 | } 71 | 72 | // Only render the CSRF field when the POST method is used 73 | $hidden_csrf_field = ($attributes['method'] == 'post') 74 | ? self::hidden('form_auth_id', CSRF::token()) 75 | : ''; 76 | 77 | return '' 78 | . $hidden_csrf_field; 79 | } 80 | } 81 | 82 | ?> -------------------------------------------------------------------------------- /modules/dummy_cache/classes/Cache/Dummy.php: -------------------------------------------------------------------------------- 1 | 11 | * @package Swiftriver - http://github.com/ushahidi/Swiftriver_v2 12 | * @subpackage Libraries 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | class Cache_Dummy extends Cache { 17 | 18 | /** 19 | * Retrieve a cached value entry by id. 20 | * 21 | * @param string id of cache to entry 22 | * @param string default value to return if cache miss 23 | * @return mixed 24 | * @throws Kohana_Cache_Exception 25 | */ 26 | public function get($id, $default = NULL) 27 | { 28 | return $default; 29 | } 30 | 31 | /** 32 | * Set a value to cache with id and lifetime 33 | * 34 | * @param string id of cache entry 35 | * @param mixed data to set to cache 36 | * @param integer lifetime in seconds, default __3600__ 37 | * @return boolean 38 | */ 39 | public function set($id, $data, $lifetime = 3600) 40 | { 41 | return TRUE; 42 | } 43 | 44 | /** 45 | * Delete a cache entry based on id 46 | * 47 | * @param string id of entry to delete 48 | * @param integer timeout of entry, if zero item is deleted immediately, otherwise the item will delete after the specified value in seconds 49 | * @return boolean 50 | */ 51 | public function delete($id, $timeout = 0) 52 | { 53 | return TRUE; 54 | } 55 | 56 | /** 57 | * Delete all cache entries. 58 | * 59 | * @return boolean 60 | */ 61 | public function delete_all() 62 | { 63 | return TRUE; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /modules/dummy_cache/config/cache.php: -------------------------------------------------------------------------------- 1 | array( 5 | 'driver' => 'dummy', 6 | 'servers' => array( 7 | ), 8 | ), 9 | ); 10 | 11 | -------------------------------------------------------------------------------- /themes/default/config/theme.php: -------------------------------------------------------------------------------- 1 | 11 | * @package SwiftRiver - http://github.com/ushahidi/Swiftriver_v2 12 | * @subpackage Theme Configs 13 | * @copyright Ushahidi - http://www.ushahidi.com 14 | * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License (AGPL) 15 | */ 16 | 17 | return array 18 | ( 19 | 'default' => array //same name as theme folder 20 | ( 21 | 'name' => 'Default Theme', 22 | 'author' => 'David Kobia', 23 | 'email' => 'david@ushahidi.com' 24 | 'version' => '0.1.0', 25 | 'dependencies' => array 26 | ( 27 | 'core' => array 28 | ( 29 | 'min' => '0.2.0', 30 | ), 31 | ) 32 | ), 33 | ); -------------------------------------------------------------------------------- /themes/default/media/css/icons.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'swiftriver-icons'; 3 | src: url('../fonts/swiftriver-icons.eot'); 4 | src: url('../fonts/swiftriver-icons.eot?#iefix') format('embedded-opentype'), 5 | url('../fonts/swiftriver-icons.svg#swiftriver-icons') format('svg'), 6 | url('../fonts/swiftriver-icons.woff') format('woff'), 7 | url('../fonts/swiftriver-icons.ttf') format('truetype'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | /* Use the following CSS code if you want to use data attributes for inserting your icons */ 13 | [data-icon]:before { 14 | font-family: 'swiftriver-icons'; 15 | content: attr(data-icon); 16 | speak: none; 17 | } 18 | 19 | /* Use the following CSS code if you want to have a class per icon */ 20 | [class^="icon-"]:before, [class*=" icon-"]:before { 21 | font-family: 'swiftriver-icons'; 22 | font-style: normal; 23 | speak: none; 24 | } 25 | .icon-bucket:before { 26 | content: "\21"; 27 | } 28 | .icon-add_to_bucket:before { 29 | content: "\22"; 30 | } 31 | .icon-river:before { 32 | content: "\24"; 33 | } 34 | .icon-twitter:before { 35 | content: "\2a"; 36 | } 37 | .icon-cancel:before { 38 | content: "\2d"; 39 | } 40 | .icon-plus:before { 41 | content: "\31"; 42 | } 43 | .icon-arrow-down:before { 44 | content: "\32"; 45 | } 46 | .icon-arrow-right:before { 47 | content: "\33"; 48 | } 49 | .icon-checkmark:before { 50 | content: "\37"; 51 | } 52 | .icon-close:before { 53 | content: "\39"; 54 | } 55 | .icon-search:before { 56 | content: "\3a"; 57 | } 58 | .icon-users:before { 59 | content: "\30"; 60 | } 61 | .icon-home:before { 62 | content: "\34"; 63 | } 64 | .icon-thumbs-down:before { 65 | content: "\e033"; 66 | } 67 | .icon-thumbs-up:before { 68 | content: "\e032"; 69 | } 70 | .icon-back:before { 71 | content: "\e00e"; 72 | } 73 | .icon-locked:before { 74 | content: "\e039"; 75 | } 76 | .icon-share:before { 77 | content: "\e000"; 78 | } 79 | .icon-rss:before { 80 | content: "\e01e"; 81 | } 82 | .icon-google-plus:before { 83 | content: "\e001"; 84 | } 85 | .icon-mail:before { 86 | content: "\e003"; 87 | } 88 | .icon-comment:before { 89 | content: "\e004"; 90 | } 91 | .icon-settings:before { 92 | content: "\e005"; 93 | } 94 | .icon-facebook:before { 95 | content: "\e002"; 96 | } 97 | .icon-arrow-left:before { 98 | content: "\e006"; 99 | } 100 | .icon-arrow-down-2:before { 101 | content: "\e007"; 102 | } 103 | .icon-remove:before { 104 | content: "\e008"; 105 | } 106 | -------------------------------------------------------------------------------- /themes/default/media/css/leaflet.draw.ie.css: -------------------------------------------------------------------------------- 1 | /* Conditional stylesheet for IE. */ 2 | 3 | .leaflet-draw-toolbar { 4 | border: 3px solid #999; 5 | } 6 | 7 | .leaflet-draw-toolbar a { 8 | background-color: #eee; 9 | } 10 | 11 | .leaflet-draw-toolbar a:hover { 12 | background-color: #fff; 13 | } 14 | 15 | .leaflet-draw-actions { 16 | left: 32px; 17 | margin-top: 3px; 18 | } 19 | 20 | .leaflet-edit-marker-selected { 21 | border: 4px dashed #fe93c2; 22 | } 23 | 24 | .leaflet-draw-actions a { 25 | background-color: #999; 26 | } 27 | 28 | .leaflet-draw-actions a:hover { 29 | background-color: #a5a5a5; 30 | } 31 | 32 | .leaflet-draw-actions-top a { 33 | margin-top: 1px; 34 | } 35 | 36 | .leaflet-draw-actions-bottom a { 37 | height: 28px; 38 | line-height: 28px; 39 | } 40 | 41 | .leaflet-draw-actions-top.leaflet-draw-actions-bottom a { 42 | height: 27px; 43 | line-height: 27px; 44 | } -------------------------------------------------------------------------------- /themes/default/media/css/leaflet.ie.css: -------------------------------------------------------------------------------- 1 | .leaflet-vml-shape { 2 | width: 1px; 3 | height: 1px; 4 | } 5 | .lvml { 6 | behavior: url(#default#VML); 7 | display: inline-block; 8 | position: absolute; 9 | } 10 | 11 | .leaflet-control { 12 | display: inline; 13 | } 14 | 15 | .leaflet-popup-tip { 16 | width: 21px; 17 | _width: 27px; 18 | margin: 0 auto; 19 | _margin-top: -3px; 20 | 21 | filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); 22 | -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; 23 | } 24 | .leaflet-popup-tip-container { 25 | margin-top: -1px; 26 | } 27 | .leaflet-popup-content-wrapper, .leaflet-popup-tip { 28 | border: 1px solid #999; 29 | } 30 | .leaflet-popup-content-wrapper { 31 | zoom: 1; 32 | } 33 | 34 | .leaflet-control-zoom, 35 | .leaflet-control-layers { 36 | border: 3px solid #999; 37 | } 38 | .leaflet-control-layers-toggle { 39 | } 40 | .leaflet-control-attribution, 41 | .leaflet-control-layers, 42 | .leaflet-control-scale-line { 43 | background: white; 44 | } 45 | .leaflet-zoom-box { 46 | filter: alpha(opacity=50); 47 | } 48 | .leaflet-control-attribution { 49 | border-top: 1px solid #bbb; 50 | border-left: 1px solid #bbb; 51 | } 52 | -------------------------------------------------------------------------------- /themes/default/media/fonts/swiftriver-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/fonts/swiftriver-icons.eot -------------------------------------------------------------------------------- /themes/default/media/fonts/swiftriver-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/fonts/swiftriver-icons.ttf -------------------------------------------------------------------------------- /themes/default/media/fonts/swiftriver-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/fonts/swiftriver-icons.woff -------------------------------------------------------------------------------- /themes/default/media/img/avatar_default.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/avatar_default.gif -------------------------------------------------------------------------------- /themes/default/media/img/bucket-empty.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/bucket-empty.gif -------------------------------------------------------------------------------- /themes/default/media/img/channel-rss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/channel-rss.gif -------------------------------------------------------------------------------- /themes/default/media/img/channel-twitter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/channel-twitter.gif -------------------------------------------------------------------------------- /themes/default/media/img/content/avatar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/avatar1.png -------------------------------------------------------------------------------- /themes/default/media/img/content/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/avatar2.png -------------------------------------------------------------------------------- /themes/default/media/img/content/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/avatar3.png -------------------------------------------------------------------------------- /themes/default/media/img/content/avatar4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/avatar4.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/avatar5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/avatar5.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/drop-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/drop-image.png -------------------------------------------------------------------------------- /themes/default/media/img/content/drop-photo1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/drop-photo1.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/drop-photo2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/drop-photo2.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/drop-photo3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/drop-photo3.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/drop-photo4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/drop-photo4.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/drop-photo5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/drop-photo5.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/drop-photo6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/drop-photo6.jpg -------------------------------------------------------------------------------- /themes/default/media/img/content/home-basics-graphic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-basics-graphic.gif -------------------------------------------------------------------------------- /themes/default/media/img/content/home-features-collaboration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-features-collaboration.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-features-configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-features-configuration.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-features-views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-features-views.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-masthead-graphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-masthead-graphic.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-screen-collab1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-screen-collab1.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-screen-collab2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-screen-collab2.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-screen-config1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-screen-config1.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-screen-config2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-screen-config2.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-screen-views1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-screen-views1.png -------------------------------------------------------------------------------- /themes/default/media/img/content/home-screen-views2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/home-screen-views2.png -------------------------------------------------------------------------------- /themes/default/media/img/content/primer-create.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/primer-create.gif -------------------------------------------------------------------------------- /themes/default/media/img/content/primer-learn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/primer-learn.gif -------------------------------------------------------------------------------- /themes/default/media/img/content/primer-search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/content/primer-search.gif -------------------------------------------------------------------------------- /themes/default/media/img/contentBG-river-drops.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/contentBG-river-drops.gif -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/drop-wave.gif -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/drop-wave1.png -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/drop-wave1@2x.png -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/drop-wave2.png -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave2@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/drop-wave2@2x.png -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave_full.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/drop-wave_full.gif -------------------------------------------------------------------------------- /themes/default/media/img/drop-wave_list.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/drop-wave_list.gif -------------------------------------------------------------------------------- /themes/default/media/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/favicon.png -------------------------------------------------------------------------------- /themes/default/media/img/header-toolbarBG.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/header-toolbarBG.gif -------------------------------------------------------------------------------- /themes/default/media/img/home-header-toolbarBG.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/home-header-toolbarBG.gif -------------------------------------------------------------------------------- /themes/default/media/img/icon-buoy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/icon-buoy.png -------------------------------------------------------------------------------- /themes/default/media/img/icons-25x25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/icons-25x25.png -------------------------------------------------------------------------------- /themes/default/media/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/loader.gif -------------------------------------------------------------------------------- /themes/default/media/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/loading.gif -------------------------------------------------------------------------------- /themes/default/media/img/logo-swiftriver-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/logo-swiftriver-2x.png -------------------------------------------------------------------------------- /themes/default/media/img/logo-swiftriver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/logo-swiftriver.png -------------------------------------------------------------------------------- /themes/default/media/img/page-navigation_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/page-navigation_active.png -------------------------------------------------------------------------------- /themes/default/media/img/river-empty1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/river-empty1.gif -------------------------------------------------------------------------------- /themes/default/media/img/river-empty2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/river-empty2.gif -------------------------------------------------------------------------------- /themes/default/media/img/signup-modal_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/signup-modal_bg.gif -------------------------------------------------------------------------------- /themes/default/media/img/signup-modal_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/signup-modal_icons.png -------------------------------------------------------------------------------- /themes/default/media/img/spritesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ushahidi/SwiftRiver/ba5e09ef411a7c75b09bbd928b31478a689ab2e2/themes/default/media/img/spritesheet.png -------------------------------------------------------------------------------- /themes/default/media/js/jquery.imagesloaded.min.js: -------------------------------------------------------------------------------- 1 | (function(c,n){var k="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";c.fn.imagesLoaded=function(l){function m(){var b=c(h),a=c(g);d&&(g.length?d.reject(e,b,a):d.resolve(e));c.isFunction(l)&&l.call(f,e,b,a)}function i(b,a){b.src===k||-1!==c.inArray(b,j)||(j.push(b),a?g.push(b):h.push(b),c.data(b,"imagesLoaded",{isBroken:a,src:b.src}),o&&d.notifyWith(c(b),[a,e,c(h),c(g)]),e.length===j.length&&(setTimeout(m),e.unbind(".imagesLoaded")))}var f=this,d=c.isFunction(c.Deferred)?c.Deferred(): 2 | 0,o=c.isFunction(d.notify),e=f.find("img").add(f.filter("img")),j=[],h=[],g=[];e.length?e.bind("load.imagesLoaded error.imagesLoaded",function(b){i(b.target,"error"===b.type)}).each(function(b,a){var e=a.src,d=c.data(a,"imagesLoaded");if(d&&d.src===e)i(a,d.isBroken);else if(a.complete&&a.naturalWidth!==n)i(a,0===a.naturalWidth||0===a.naturalHeight);else if(a.readyState||a.complete)a.src=k,a.src=e}):m();return d?d.promise(f):f}})(jQuery); 3 | -------------------------------------------------------------------------------- /themes/default/media/js/jquery.outside.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery outside events - v1.1 - 3/16/2010 3 | * http://benalman.com/projects/jquery-outside-events-plugin/ 4 | * 5 | * Copyright (c) 2010 "Cowboy" Ben Alman 6 | * Dual licensed under the MIT and GPL licenses. 7 | * http://benalman.com/about/license/ 8 | */ 9 | (function($,c,b){$.map("click dblclick mousemove mousedown mouseup mouseover mouseout change select submit keydown keypress keyup".split(" "),function(d){a(d)});a("focusin","focus"+b);a("focusout","blur"+b);$.addOutsideEvent=a;function a(g,e){e=e||g+b;var d=$(),h=g+"."+e+"-special-event";$.event.special[e]={setup:function(){d=d.add(this);if(d.length===1){$(c).bind(h,f)}},teardown:function(){d=d.not(this);if(d.length===0){$(c).unbind(h)}},add:function(i){var j=i.handler;i.handler=function(l,k){l.target=k;j.apply(this,arguments)}}};function f(i){$(d).each(function(){var j=$(this);if(this!==i.target&&!j.has(i.target).length){j.triggerHandler(e,[i.target])}})}}})(jQuery,document,"outside"); -------------------------------------------------------------------------------- /themes/default/media/js/jquery.placehold.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @name jQuery placehold (https://github.com/jgarber623/jquery-placehold) 3 | * @author Jason Garber 4 | * @copyright (cc) Jason Garber (http://sixtwothree.org and http://www.viget.com) 5 | * 6 | * Licensed under the CC-GNU GPL (http://creativecommons.org/licenses/GPL/2.0/) 7 | */ 8 | 9 | (function(a){a.fn.placehold=function(d){var d=d||"placeholder",c=a.fn.placehold.is_supported();function b(){for(i=0;i",{"class":f.attr("class")+" "+d,value:e});g.bind("focus.placehold",function(){b(f,g);f.focus();});f.bind("blur.placehold",function(){if(f.val()===""){b(f,g);}});f.hide().after(g);}f.bind({"focus.placehold":function(){if(f.val()==e){f.removeClass(d).val("");}},"blur.placehold":function(){if(f.val()===""){f.addClass(d).val(e);}}});f.closest("form").bind("submit.placehold",function(){if(f.val()==e){f.val("");}return true;});}});};a.fn.placehold.is_supported=function(){return"placeholder" in document.createElement("input");};})(jQuery); -------------------------------------------------------------------------------- /themes/default/media/js/jquery.scrollto.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery.ScrollTo - Easy element scrolling using jQuery. 3 | * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com 4 | * Dual licensed under MIT and GPL. 5 | * Date: 5/25/2009 6 | * @author Ariel Flesler 7 | * @version 1.4.2 8 | * 9 | * http://flesler.blogspot.com/2007/10/jqueryscrollto.html 10 | */ 11 | ;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); 12 | jQuery(function($) { 13 | $.scrollTo($($('#buoy')), { 14 | duration: 500 15 | }); 16 | }); -------------------------------------------------------------------------------- /themes/default/views/emails/html/collaboration_invite.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
"" invited you to collaborate on the "" . Click here to accept and edit the settings for the "" river along with "".
9 |
10 |
11 | Click here to unsubscribe from these emails or change your notification settings. 12 |
13 | 14 | -------------------------------------------------------------------------------- /themes/default/views/emails/html/collaboration_invite_accepted.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
"" has accepted to to collaborate on the "" .
9 |
10 |
11 | Click here to unsubscribe from these emails or change your notification settings. 12 |
13 | 14 | -------------------------------------------------------------------------------- /themes/default/views/emails/html/comment.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 |
"" has commented on a drop in the "" .
10 | 11 |
14 |
15 |
16 | Reply to this email directly view it on SwiftRiver. 17 |
18 |
19 |
20 | Click here to unsubscribe from these emails or change your notification settings. 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /themes/default/views/emails/html/new_follower.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
"" is now following you() on SwiftRiver.
9 |
10 |
11 | Click here to unsubscribe from these emails or change your notification settings. 12 |
13 | 14 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/changeemail.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/collaboration_invite.php: -------------------------------------------------------------------------------- 1 | $invitor, 8 | ":asset_name" => $asset_name, 9 | ":asset" => $asset, 10 | ":link" => $link 11 | )); 12 | 13 | ?> 14 | 15 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/collaboration_invite_accepted.php: -------------------------------------------------------------------------------- 1 | $from_name, 8 | ":asset_name" => $asset_name, 9 | ":asset" => $asset, 10 | ":link" => $link 11 | )); 12 | 13 | ?> 14 | 15 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/comment.php: -------------------------------------------------------------------------------- 1 | $from_name, 10 | ":asset_name" => $asset_name, 11 | ":comment" => $comment, 12 | ":link" => $link, 13 | ":asset" => $asset 14 | )); 15 | 16 | ?> 17 | 18 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/createuser.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/expiry_notice.php: -------------------------------------------------------------------------------- 1 | $recipient_name, 12 | ":river_name" => $river_name, 13 | ":active_duration" => $active_duration, 14 | ":activation_url" => $activation_url 15 | )); 16 | 17 | ?> -------------------------------------------------------------------------------- /themes/default/views/emails/text/expiry_warning.php: -------------------------------------------------------------------------------- 1 | $recipient_name, 12 | ":river_name" => $river_name, 13 | ":days_to_expiry" => $days_to_expiry, 14 | ":active_duration" => $active_duration, 15 | ":river_url" => $river_url 16 | )); 17 | ?> 18 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/invite.php: -------------------------------------------------------------------------------- 1 | $site_name )) ?> 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/new_follower.php: -------------------------------------------------------------------------------- 1 | $from_name, 8 | ":from_link" => $from_link, 9 | ":nickname" => $nickname 10 | )); 11 | 12 | ?> 13 | 14 | -------------------------------------------------------------------------------- /themes/default/views/emails/text/resetpassword.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /themes/default/views/pages/bucket/main.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 |
29 | 30 |
31 |
32 |
33 | 67 |
68 | 69 |
70 |
-------------------------------------------------------------------------------- /themes/default/views/pages/bucket/no-drops.php: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /themes/default/views/pages/bucket/settings/display.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 |

6 |
7 |

8 | 9 |
10 |
11 |

12 | ' readonly')); ?> 13 |
14 |
15 |

16 | 20 |
21 |
22 | 23 |
24 |
25 | 26 | 27 |
-------------------------------------------------------------------------------- /themes/default/views/pages/bucket/settings/layout.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 |
6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 |
14 |
15 | 27 |
28 | 29 |
30 | 31 |
32 |
33 |
34 | 35 | 36 | 37 | 44 | -------------------------------------------------------------------------------- /themes/default/views/pages/crawler/rss.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <?php echo $site_url ?> Crawls 6 | 7 | Crawler for SwiftRiver installation at 8 | 9 | Crawl <?php echo $request_date ?> 10 | 11 | New crawl has been requested at 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /themes/default/views/pages/error.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /themes/default/views/pages/errors/404.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 |

6 |
7 |
8 |
9 |
10 |
11 | 16 |
17 |
-------------------------------------------------------------------------------- /themes/default/views/pages/errors/default.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 9 |
10 |
-------------------------------------------------------------------------------- /themes/default/views/pages/login/forgot_password.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 26 |
27 |
-------------------------------------------------------------------------------- /themes/default/views/pages/login/landing.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

Redirecting...

5 |
6 |
7 |
8 | 9 |
10 |
11 |
12 | 13 | 14 |
15 |

Uh oh.

16 |
    17 | 18 | 19 |
  • 20 | 21 | 22 |
  • 23 | 24 |
25 |
26 | 27 | 28 | 29 |
30 |

Success.

31 |
    32 | 33 | 34 |
  • 35 | 36 | 37 |
  • 38 | 39 |
40 |
41 | 42 | 43 |
44 |
45 |
-------------------------------------------------------------------------------- /themes/default/views/pages/login/layout.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 |
6 |
7 |
8 | 9 | 10 | 22 | 23 | 24 |
25 |
26 | 27 |
28 |
29 | -------------------------------------------------------------------------------- /themes/default/views/pages/login/register.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 |

7 |
8 | 9 | 10 | 11 | 12 | 13 |
14 |

15 |
16 | 17 | 18 | 19 | 20 |
21 |
22 |
23 |

24 |
25 |
26 |
27 |
28 | 32 |
33 |
34 |
35 |
36 |

37 | 38 |

39 |
40 | 41 |
-------------------------------------------------------------------------------- /themes/default/views/pages/login/reset.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |

Password Reset

6 |
7 |
8 |
9 | 10 |
11 |
12 |
13 | 14 | 15 | 16 |
17 |

18 |
19 | 20 | 21 | 22 | 23 | 24 |
25 |

26 |
27 | 28 | 29 | 30 | 31 |
32 |
33 |
34 |

Enter your new password

35 |
36 |
37 |
38 |
39 | 43 |
44 |
45 | 49 |
50 |
51 |
52 | 53 |
54 |

Set your password

55 |
56 | 57 |
58 |
59 |
-------------------------------------------------------------------------------- /themes/default/views/pages/login/reset_password.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 29 |
30 |
31 | -------------------------------------------------------------------------------- /themes/default/views/pages/river/expiry_notice.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 | 6 | HTML::anchor($river_base_url, 'here'), ":extension_period" => $extension_period)); ?> 7 |

8 |
9 |
10 |
-------------------------------------------------------------------------------- /themes/default/views/pages/river/full_notice.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 | 6 |

7 |
8 |
9 |
-------------------------------------------------------------------------------- /themes/default/views/pages/river/no-channels.php: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 20 | -------------------------------------------------------------------------------- /themes/default/views/pages/river/no-drops.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |

5 |

6 | 7 | 'adjust-river-channels')); ?> 8 | 9 | 10 | 11 |

12 |
13 | 14 |

15 |

16 | 17 |

18 | 19 |
20 | -------------------------------------------------------------------------------- /themes/default/views/pages/river/settings/layout.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

settings

5 |
6 |
7 | 8 | More 9 |
10 |
11 |
12 | 13 |
14 |
15 | 16 |
17 | 35 |
36 | 37 |
38 | 39 |
40 |
41 |
42 | -------------------------------------------------------------------------------- /themes/default/views/pages/river/settings/options.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |

Basics

4 | 5 |
6 |

River name

7 | 8 |
9 |
10 |

Description

11 | 12 |
13 |
14 |

Who can view this river

15 | 19 |
20 |
21 | Save 22 |
23 | 24 |
25 |
-------------------------------------------------------------------------------- /themes/default/views/pages/river/trend.php: -------------------------------------------------------------------------------- 1 |
2 | $periods): ?> 3 |
4 |
5 |
6 |
7 |

8 |
9 |
10 |
11 | $tags): ?> 12 | 13 |

14 | 15 |
16 | 17 | 18 | 19 | 20 |
21 |
22 |

23 |
24 |
25 | 26 |
27 |
28 |
29 | 30 |
-------------------------------------------------------------------------------- /themes/default/views/pages/search/buckets.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | 7 | 8 | 15 | 16 | 17 |
9 |

10 | 11 | 12 | 13 |

14 |
18 |
19 | 20 |
21 |

22 | 23 | $search_term)); 26 | ?> 27 |

28 |
29 | 30 |
31 | -------------------------------------------------------------------------------- /themes/default/views/pages/search/layout.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 |
6 |
7 |
8 | 9 |
10 |
11 | 12 |
13 | 29 |
30 | 31 | 32 |
33 |
34 | -------------------------------------------------------------------------------- /themes/default/views/pages/search/main.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 19 |
20 |
21 | -------------------------------------------------------------------------------- /themes/default/views/pages/search/nothing_to_display.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/default/views/pages/search/rivers.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | 7 | 8 | 15 | 16 | 17 |
9 |

10 | 11 | 12 | 13 |

14 |
18 |
19 | 20 |
21 |

22 | 23 | $search_term)); 26 | ?> 27 |

28 |
29 | 30 |
-------------------------------------------------------------------------------- /themes/default/views/pages/search/users.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 15 | 16 |
17 |

18 | 19 | $search_term)); 22 | ?> 23 |

24 |
25 | 26 |
27 | -------------------------------------------------------------------------------- /themes/default/views/pages/settings/layout.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

5 |
6 |
7 |
8 | 9 | 32 | 33 |
34 |
35 |
36 | 37 |
38 |
39 |
-------------------------------------------------------------------------------- /themes/default/views/pages/settings/users.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /themes/default/views/pages/trend/bucket.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

bucket_name; ?>

5 |
6 |
7 | 8 |
9 |
10 | 20 |
21 |
22 | 23 |
24 | 25 |
26 | 27 |
28 |
-------------------------------------------------------------------------------- /themes/default/views/pages/trend/river.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /themes/default/views/pages/user/activity.php: -------------------------------------------------------------------------------- 1 |
2 | Filters 3 |
4 | 5 |
6 | 19 |
20 | 21 |
22 | 23 | 24 | 25 |
26 |
27 | 28 | 29 | -------------------------------------------------------------------------------- /themes/default/views/pages/user/content.php: -------------------------------------------------------------------------------- 1 |
2 | Filters 3 |
4 | 5 |
6 | 25 |
26 | 27 |
28 |
29 |
30 |
    31 |
  • 32 |
  • 33 |
  • 34 |
  • 35 |
36 | 37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 |
53 | 59 | 60 | 61 | 62 | 63 | 64 |
65 |
66 |
67 |
68 |
69 | 70 | -------------------------------------------------------------------------------- /themes/default/views/pages/user/js/profile.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/default/views/pages/user/js/settings.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/default/views/pages/user/layout.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | 6 | 7 |

8 |

9 |
10 |
11 | 15 | 16 | 17 | 18 | 19 | 20 |
21 |
22 |
23 | 24 | 25 | 38 | 39 | 40 |
41 |
42 | 43 |
44 |
-------------------------------------------------------------------------------- /themes/default/views/pages/user/no_activity.php: -------------------------------------------------------------------------------- 1 | 25 | 26 | -------------------------------------------------------------------------------- /themes/default/views/pages/user/register.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 |
5 |

6 |
7 |
8 |
9 | 10 |
11 |
12 |
13 | 14 | 15 | 16 |
17 |

18 |
19 | 20 | 21 | 22 | 23 | 24 |
25 |

26 |
27 | 28 | 29 | 30 | 31 |
32 |
33 |
34 |

Enter information below to complete registration

35 |
36 |
37 |
38 |
39 | 43 |
44 |
45 | 49 |
50 |
51 |
52 | 53 |
54 |

Get started

55 |
56 | 57 |
58 |
59 |
-------------------------------------------------------------------------------- /themes/default/views/pages/user/settings.php: -------------------------------------------------------------------------------- 1 |
2 | 13 |
14 | 15 |
16 | 17 | 18 |
19 |
20 | 21 |

22 |
23 |

24 | 'name')); ?> 25 |
26 |
27 |

28 | 'nickname')); ?> 29 |
30 |
31 |

32 | 'email')); ?> 33 |
34 |
35 | 36 |
37 | 38 |
39 | 40 |
41 | 42 |

43 |
44 |

45 | 46 |
47 |
48 |

49 | 50 |
51 |
52 |

53 | 54 |
55 |
56 | 57 |
58 | 59 |
60 | 61 |
62 | 63 |
64 | -------------------------------------------------------------------------------- /themes/default/views/pages/welcome/js/main.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/default/views/template/collaborators.php: -------------------------------------------------------------------------------- 1 |
2 | 10 |
11 | 12 | 13 | 18 | 19 | 23 | 24 | 48 | 49 | -------------------------------------------------------------------------------- /themes/default/views/template/follow.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | -------------------------------------------------------------------------------- /themes/default/views/template/footer.php: -------------------------------------------------------------------------------- 1 |
2 | 6 |
7 | 8 | 15 | 16 |
17 | 18 |
19 | 20 |
21 |
22 | 23 |

24 |
25 |
26 | 27 | 28 |
29 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /themes/default/views/template/layout.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | --------------------------------------------------------------------------------