├── .gitignore ├── INSTALL.txt ├── LICENSE.txt ├── PeoplePods.php ├── README.txt ├── admin ├── comments │ ├── index.php │ └── tools.php ├── content │ ├── addChild.php │ ├── chstatus.php │ ├── deleteComment.php │ ├── index.php │ ├── search.php │ ├── tools.php │ └── typeAutocomplete.php ├── files │ ├── browser.php │ ├── index.php │ └── tools.php ├── flags │ ├── index.php │ └── tools.php ├── groups │ ├── addMember.php │ ├── addToGroup.php │ ├── index.php │ ├── search.php │ └── tools.php ├── img │ ├── admin_background.png │ ├── delete.png │ ├── divider.png │ ├── group.png │ ├── page.png │ ├── page_add.png │ ├── plugin.png │ ├── shadow.png │ ├── tinygrid.png │ ├── user.png │ └── user_add.png ├── index.php ├── metaAutocomplete.php ├── options │ ├── database.php │ ├── emails.php │ ├── events.php │ ├── images.php │ ├── index.php │ ├── option_nav.php │ ├── pods.php │ ├── podsettings.php │ ├── themes.php │ └── upgrade.php ├── people │ ├── index.php │ ├── search.php │ └── tools.php ├── tagAutocomplete.php └── userAutocomplete.php ├── extras ├── DATABASE.sql └── peoplepods_wordpress │ └── index.php ├── index.php ├── install ├── SQL.php └── index.php ├── lib ├── Activity.php ├── Alerts.php ├── Comment.php ├── Content.php ├── ContentStack.php ├── Core.php ├── Files.php ├── Groups.php ├── Messages.php ├── Msg.php ├── Obj.php ├── Stack.php ├── Tag.php ├── Users.php └── index.html ├── pods ├── core_api_simple │ ├── index_version1.php │ ├── index_version2.php │ └── settings.php ├── core_authentication │ ├── join.php │ ├── login.php │ ├── logout.php │ ├── password.php │ ├── settings.php │ └── verify.php ├── core_feeds │ ├── class.rss.php │ ├── feed.php │ ├── list.php │ └── settings.php ├── core_files │ ├── index.php │ └── settings.php ├── core_friends │ ├── index.php │ └── settings.php ├── core_groups │ ├── group.php │ ├── index.php │ └── settings.php ├── core_invite │ ├── index.php │ └── settings.php ├── core_pages │ ├── content_type.php │ ├── settings.php │ └── view.php ├── core_private_messaging │ ├── inbox.php │ ├── settings.php │ └── thread.php ├── core_profiles │ ├── editprofile.php │ ├── profile.php │ └── settings.php ├── core_search │ ├── search.php │ └── settings.php ├── core_usercontent │ ├── content_type.php │ ├── edit.php │ ├── list.php │ ├── settings.php │ └── view.php ├── dashboard │ ├── index.php │ └── settings.php ├── fb_connect │ ├── friends.php │ ├── index.php │ ├── methods.php │ ├── settings.php │ └── xd_receiver.htm ├── gravatars │ ├── methods.php │ └── settings.php ├── openid_connect │ ├── Auth │ │ ├── OpenID.php │ │ ├── OpenID │ │ │ ├── AX.php │ │ │ ├── Association.php │ │ │ ├── BigMath.php │ │ │ ├── Consumer.php │ │ │ ├── CryptUtil.php │ │ │ ├── DatabaseConnection.php │ │ │ ├── DiffieHellman.php │ │ │ ├── Discover.php │ │ │ ├── DumbStore.php │ │ │ ├── Extension.php │ │ │ ├── FileStore.php │ │ │ ├── HMAC.php │ │ │ ├── Interface.php │ │ │ ├── KVForm.php │ │ │ ├── MemcachedStore.php │ │ │ ├── Message.php │ │ │ ├── MySQLStore.php │ │ │ ├── Nonce.php │ │ │ ├── PAPE.php │ │ │ ├── Parse.php │ │ │ ├── PostgreSQLStore.php │ │ │ ├── SQLStore.php │ │ │ ├── SQLiteStore.php │ │ │ ├── SReg.php │ │ │ ├── Server.php │ │ │ ├── ServerRequest.php │ │ │ ├── TrustRoot.php │ │ │ └── URINorm.php │ │ └── Yadis │ │ │ ├── HTTPFetcher.php │ │ │ ├── Manager.php │ │ │ ├── Misc.php │ │ │ ├── ParanoidHTTPFetcher.php │ │ │ ├── ParseHTML.php │ │ │ ├── PlainHTTPFetcher.php │ │ │ ├── XML.php │ │ │ ├── XRDS.php │ │ │ ├── XRI.php │ │ │ ├── XRIRes.php │ │ │ └── Yadis.php │ ├── index.php │ └── settings.php ├── placekitten │ ├── methods.php │ └── settings.php ├── sample_pod │ ├── custom.template.php │ ├── handler.php │ ├── methods.php │ └── settings.php └── twitter_connect │ ├── friends.php │ ├── index.php │ ├── methods.php │ └── settings.php ├── tests ├── comment.php ├── content.php ├── file.php ├── group.php ├── index.php ├── init_and_auth.php ├── message.php ├── person.php ├── simpletest │ ├── HELP_MY_TESTS_DONT_WORK_ANYMORE │ ├── LICENSE │ ├── README │ ├── VERSION │ ├── authentication.php │ ├── autorun.php │ ├── browser.php │ ├── collector.php │ ├── compatibility.php │ ├── cookies.php │ ├── default_reporter.php │ ├── detached.php │ ├── docs │ │ ├── en │ │ │ ├── authentication_documentation.html │ │ │ ├── browser_documentation.html │ │ │ ├── docs.css │ │ │ ├── expectation_documentation.html │ │ │ ├── form_testing_documentation.html │ │ │ ├── group_test_documentation.html │ │ │ ├── index.html │ │ │ ├── mock_objects_documentation.html │ │ │ ├── overview.html │ │ │ ├── partial_mocks_documentation.html │ │ │ ├── reporter_documentation.html │ │ │ ├── unit_test_documentation.html │ │ │ └── web_tester_documentation.html │ │ └── fr │ │ │ ├── authentication_documentation.html │ │ │ ├── browser_documentation.html │ │ │ ├── docs.css │ │ │ ├── expectation_documentation.html │ │ │ ├── form_testing_documentation.html │ │ │ ├── group_test_documentation.html │ │ │ ├── index.html │ │ │ ├── mock_objects_documentation.html │ │ │ ├── overview.html │ │ │ ├── partial_mocks_documentation.html │ │ │ ├── reporter_documentation.html │ │ │ ├── server_stubs_documentation.html │ │ │ ├── unit_test_documentation.html │ │ │ └── web_tester_documentation.html │ ├── dumper.php │ ├── eclipse.php │ ├── encoding.php │ ├── errors.php │ ├── exceptions.php │ ├── expectation.php │ ├── extensions │ │ ├── pear_test_case.php │ │ ├── phpunit_test_case.php │ │ ├── testdox.php │ │ └── testdox │ │ │ └── test.php │ ├── form.php │ ├── frames.php │ ├── http.php │ ├── invoker.php │ ├── mock_objects.php │ ├── page.php │ ├── parser.php │ ├── reflection_php4.php │ ├── reflection_php5.php │ ├── remote.php │ ├── reporter.php │ ├── scorer.php │ ├── selector.php │ ├── shell_tester.php │ ├── simpletest.php │ ├── socket.php │ ├── tag.php │ ├── test │ │ ├── acceptance_test.php │ │ ├── adapter_test.php │ │ ├── all_tests.php │ │ ├── authentication_test.php │ │ ├── autorun_test.php │ │ ├── bad_test_suite.php │ │ ├── browser_test.php │ │ ├── collector_test.php │ │ ├── command_line_test.php │ │ ├── compatibility_test.php │ │ ├── cookies_test.php │ │ ├── detached_test.php │ │ ├── dumper_test.php │ │ ├── eclipse_test.php │ │ ├── encoding_test.php │ │ ├── errors_test.php │ │ ├── exceptions_test.php │ │ ├── expectation_test.php │ │ ├── form_test.php │ │ ├── frames_test.php │ │ ├── http_test.php │ │ ├── interfaces_test.php │ │ ├── live_test.php │ │ ├── mock_objects_test.php │ │ ├── page_test.php │ │ ├── parse_error_test.php │ │ ├── parser_test.php │ │ ├── reflection_php4_test.php │ │ ├── reflection_php5_test.php │ │ ├── remote_test.php │ │ ├── shell_test.php │ │ ├── shell_tester_test.php │ │ ├── simpletest_test.php │ │ ├── socket_test.php │ │ ├── support │ │ │ ├── collector │ │ │ │ ├── collectable.1 │ │ │ │ └── collectable.2 │ │ │ ├── empty_test_file.php │ │ │ ├── latin1_sample │ │ │ ├── spl_examples.php │ │ │ ├── supplementary_upload_sample.txt │ │ │ ├── test1.php │ │ │ └── upload_sample.txt │ │ ├── tag_test.php │ │ ├── test_with_parse_error.php │ │ ├── unit_tester_test.php │ │ ├── unit_tests.php │ │ ├── url_test.php │ │ ├── user_agent_test.php │ │ ├── visual_test.php │ │ ├── web_tester_test.php │ │ └── xml_test.php │ ├── test_case.php │ ├── unit_tester.php │ ├── url.php │ ├── user_agent.php │ ├── web_tester.php │ └── xml.php ├── stack_query.php └── tag.php └── themes ├── admin ├── content │ ├── addChild.php │ ├── browser.upload.php │ ├── child.php │ ├── comment.edit.php │ ├── comment.list.php │ ├── comment.php │ ├── comment.preview.php │ ├── flagged.php │ ├── group.php │ ├── list_item.php │ ├── output.php │ ├── short.php │ └── type.chooser.php ├── files │ ├── browser.details.php │ ├── browser.list.php │ ├── output.php │ ├── short.php │ └── upload.php ├── footer.php ├── groups │ ├── output.php │ └── short.php ├── header.php ├── img │ ├── close_x.png │ ├── document_icon.png │ ├── flag_pink.png │ ├── insert_image.gif │ ├── noimage.png │ └── peoplepods_favicon.png ├── js │ ├── jquery-1.4.2.min.js │ ├── jquery-autocomplete │ │ ├── changelog.txt │ │ ├── jquery.autocomplete.css │ │ ├── jquery.autocomplete.js │ │ ├── jquery.autocomplete.min.js │ │ ├── jquery.autocomplete.pack.js │ │ ├── lib │ │ │ ├── jquery.ajaxQueue.js │ │ │ ├── jquery.bgiframe.min.js │ │ │ ├── jquery.js │ │ │ ├── thickbox-compressed.js │ │ │ └── thickbox.css │ │ └── todo │ ├── jquery-tagsinput │ │ ├── jquery.tagsinput.css │ │ └── jquery.tagsinput.js │ └── tinymce │ │ ├── changelog.txt │ │ ├── examples │ │ └── index.html │ │ └── jscripts │ │ └── tiny_mce │ │ ├── jquery.tinymce.js │ │ ├── langs │ │ └── en.js │ │ ├── license.txt │ │ ├── plugins │ │ ├── advhr │ │ │ ├── css │ │ │ │ └── advhr.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── rule.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── rule.htm │ │ ├── advimage │ │ │ ├── css │ │ │ │ └── advimage.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── image.htm │ │ │ ├── img │ │ │ │ └── sample.gif │ │ │ ├── js │ │ │ │ └── image.js │ │ │ └── langs │ │ │ │ └── en_dlg.js │ │ ├── advlink │ │ │ ├── css │ │ │ │ └── advlink.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── advlink.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── link.htm │ │ ├── advlist │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── autoresize │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── autosave │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── langs │ │ │ │ └── en.js │ │ ├── bbcode │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── contextmenu │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── directionality │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── emotions │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── emotions.htm │ │ │ ├── img │ │ │ │ ├── smiley-cool.gif │ │ │ │ ├── smiley-cry.gif │ │ │ │ ├── smiley-embarassed.gif │ │ │ │ ├── smiley-foot-in-mouth.gif │ │ │ │ ├── smiley-frown.gif │ │ │ │ ├── smiley-innocent.gif │ │ │ │ ├── smiley-kiss.gif │ │ │ │ ├── smiley-laughing.gif │ │ │ │ ├── smiley-money-mouth.gif │ │ │ │ ├── smiley-sealed.gif │ │ │ │ ├── smiley-smile.gif │ │ │ │ ├── smiley-surprised.gif │ │ │ │ ├── smiley-tongue-out.gif │ │ │ │ ├── smiley-undecided.gif │ │ │ │ ├── smiley-wink.gif │ │ │ │ └── smiley-yell.gif │ │ │ ├── js │ │ │ │ └── emotions.js │ │ │ └── langs │ │ │ │ └── en_dlg.js │ │ ├── example │ │ │ ├── dialog.htm │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── img │ │ │ │ └── example.gif │ │ │ ├── js │ │ │ │ └── dialog.js │ │ │ └── langs │ │ │ │ ├── en.js │ │ │ │ └── en_dlg.js │ │ ├── fullpage │ │ │ ├── css │ │ │ │ └── fullpage.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── fullpage.htm │ │ │ ├── js │ │ │ │ └── fullpage.js │ │ │ └── langs │ │ │ │ └── en_dlg.js │ │ ├── fullscreen │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── fullscreen.htm │ │ ├── iespell │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── inlinepopups │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── skins │ │ │ │ └── clearlooks2 │ │ │ │ │ ├── img │ │ │ │ │ ├── alert.gif │ │ │ │ │ ├── button.gif │ │ │ │ │ ├── buttons.gif │ │ │ │ │ ├── confirm.gif │ │ │ │ │ ├── corners.gif │ │ │ │ │ ├── horizontal.gif │ │ │ │ │ └── vertical.gif │ │ │ │ │ └── window.css │ │ │ └── template.htm │ │ ├── insertdatetime │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── layer │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── legacyoutput │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── media │ │ │ ├── css │ │ │ │ ├── content.css │ │ │ │ └── media.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── img │ │ │ │ ├── flash.gif │ │ │ │ ├── flv_player.swf │ │ │ │ ├── quicktime.gif │ │ │ │ ├── realmedia.gif │ │ │ │ ├── shockwave.gif │ │ │ │ ├── trans.gif │ │ │ │ └── windowsmedia.gif │ │ │ ├── js │ │ │ │ ├── embed.js │ │ │ │ └── media.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── media.htm │ │ ├── nonbreaking │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── noneditable │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── pagebreak │ │ │ ├── css │ │ │ │ └── content.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── img │ │ │ │ ├── pagebreak.gif │ │ │ │ └── trans.gif │ │ ├── paste │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ ├── pastetext.js │ │ │ │ └── pasteword.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ ├── pastetext.htm │ │ │ └── pasteword.htm │ │ ├── preview │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── example.html │ │ │ ├── jscripts │ │ │ │ └── embed.js │ │ │ └── preview.html │ │ ├── print │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── save │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── searchreplace │ │ │ ├── css │ │ │ │ └── searchreplace.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── searchreplace.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── searchreplace.htm │ │ ├── spellchecker │ │ │ ├── css │ │ │ │ └── content.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ └── img │ │ │ │ └── wline.gif │ │ ├── style │ │ │ ├── css │ │ │ │ └── props.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── props.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── props.htm │ │ ├── tabfocus │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── table │ │ │ ├── cell.htm │ │ │ ├── css │ │ │ │ ├── cell.css │ │ │ │ ├── row.css │ │ │ │ └── table.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ ├── cell.js │ │ │ │ ├── merge_cells.js │ │ │ │ ├── row.js │ │ │ │ └── table.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ ├── merge_cells.htm │ │ │ ├── row.htm │ │ │ └── table.htm │ │ ├── template │ │ │ ├── blank.htm │ │ │ ├── css │ │ │ │ └── template.css │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── js │ │ │ │ └── template.js │ │ │ ├── langs │ │ │ │ └── en_dlg.js │ │ │ └── template.htm │ │ ├── visualchars │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ ├── wordcount │ │ │ ├── editor_plugin.js │ │ │ └── editor_plugin_src.js │ │ └── xhtmlxtras │ │ │ ├── abbr.htm │ │ │ ├── acronym.htm │ │ │ ├── attributes.htm │ │ │ ├── cite.htm │ │ │ ├── css │ │ │ ├── attributes.css │ │ │ └── popup.css │ │ │ ├── del.htm │ │ │ ├── editor_plugin.js │ │ │ ├── editor_plugin_src.js │ │ │ ├── ins.htm │ │ │ ├── js │ │ │ ├── abbr.js │ │ │ ├── acronym.js │ │ │ ├── attributes.js │ │ │ ├── cite.js │ │ │ ├── del.js │ │ │ ├── element_common.js │ │ │ └── ins.js │ │ │ └── langs │ │ │ └── en_dlg.js │ │ ├── themes │ │ ├── advanced │ │ │ ├── about.htm │ │ │ ├── anchor.htm │ │ │ ├── charmap.htm │ │ │ ├── color_picker.htm │ │ │ ├── editor_template.js │ │ │ ├── editor_template_src.js │ │ │ ├── image.htm │ │ │ ├── img │ │ │ │ ├── colorpicker.jpg │ │ │ │ └── icons.gif │ │ │ ├── js │ │ │ │ ├── about.js │ │ │ │ ├── anchor.js │ │ │ │ ├── charmap.js │ │ │ │ ├── color_picker.js │ │ │ │ ├── image.js │ │ │ │ ├── link.js │ │ │ │ └── source_editor.js │ │ │ ├── langs │ │ │ │ ├── en.js │ │ │ │ └── en_dlg.js │ │ │ ├── link.htm │ │ │ ├── skins │ │ │ │ ├── default │ │ │ │ │ ├── content.css │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── buttons.png │ │ │ │ │ │ ├── items.gif │ │ │ │ │ │ ├── menu_arrow.gif │ │ │ │ │ │ ├── menu_check.gif │ │ │ │ │ │ ├── progress.gif │ │ │ │ │ │ └── tabs.gif │ │ │ │ │ └── ui.css │ │ │ │ └── o2k7 │ │ │ │ │ ├── content.css │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── img │ │ │ │ │ ├── button_bg.png │ │ │ │ │ ├── button_bg_black.png │ │ │ │ │ └── button_bg_silver.png │ │ │ │ │ ├── ui.css │ │ │ │ │ ├── ui_black.css │ │ │ │ │ └── ui_silver.css │ │ │ └── source_editor.htm │ │ └── simple │ │ │ ├── editor_template.js │ │ │ ├── editor_template_src.js │ │ │ ├── img │ │ │ └── icons.gif │ │ │ ├── langs │ │ │ └── en.js │ │ │ └── skins │ │ │ ├── default │ │ │ ├── content.css │ │ │ └── ui.css │ │ │ └── o2k7 │ │ │ ├── content.css │ │ │ ├── img │ │ │ └── button_bg.png │ │ │ └── ui.css │ │ ├── tiny_mce.js │ │ ├── tiny_mce_popup.js │ │ ├── tiny_mce_src.js │ │ └── utils │ │ ├── editable_selects.js │ │ ├── form_utils.js │ │ ├── mctabs.js │ │ └── validate.js ├── people │ ├── addMember.php │ ├── flagged.php │ ├── group.php │ ├── list_item.php │ ├── output.php │ ├── short.php │ └── short_grid.php ├── script.js ├── stacks │ ├── comment_header.php │ ├── content_header.php │ ├── file_header.php │ ├── footer.php │ ├── group_header.php │ ├── header.php │ ├── list_footer.php │ ├── list_header.php │ ├── pager.php │ ├── people_header.php │ └── table_pager.php ├── styles.css ├── theme.info └── tinymce.css └── default ├── activity └── output.php ├── alerts └── output.php ├── content ├── comment.form.php ├── comment.php ├── editform.php ├── list_item.php ├── new_comments.php ├── output.php ├── page.php ├── search_results.php ├── short.php ├── short_body.php ├── tag.cloud.php └── tag.php ├── emails ├── addFriend.php ├── alert.html.php ├── alert.php ├── contact.php ├── invite.php ├── passwordReset.php └── welcome.php ├── footer.php ├── groups ├── edit_group.php ├── group_navigator.php ├── member_manager.php ├── output.php ├── recent_list.php └── short.php ├── header.php ├── img ├── noimage.png ├── peoplepods_favicon.png ├── spinner.gif └── tag_pink.png ├── javascript.js ├── js ├── jquery-1.4.2.min.js ├── jquery-tagsinput │ ├── jquery.tagsinput.css │ └── jquery.tagsinput.js └── jquery.validate.min.js ├── messages ├── message.php ├── thread.php └── thread_short.php ├── people ├── author_info.php ├── avatar.php ├── dashboard.php ├── dashboard_replies.php ├── editprofile.php ├── join.php ├── list_item.php ├── login.facebook.php ├── login.openid.php ├── login.php ├── login.twitter.php ├── member_friends.php ├── member_info.php ├── output.php ├── password_reset.php ├── search_results.php ├── short.php ├── verify.php └── welcome.php ├── sidebars ├── activity_stream.php ├── ad_unit.php ├── create_group.php ├── group_search.php ├── login.php ├── recent_groups.php ├── recent_posts.php ├── recent_visitors.php ├── search.php └── tag_cloud.php ├── stacks ├── footer.php ├── groups_footer.php ├── groups_header.php ├── header.php ├── pager.php ├── ul_footer.php └── ul_header.php ├── styles.css └── theme.info /.gitignore: -------------------------------------------------------------------------------- 1 | lib/etc/options.php 2 | files/* 3 | .DS_Store -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | PeoplePods 2 | http://peoplepods.net 3 | 4 | XOXCO 5 | http://xoxco.com 6 | 7 | Copyright (c) 2009 XOXCO, Inc 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. -------------------------------------------------------------------------------- /PeoplePods.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /admin/comments/tools.php: -------------------------------------------------------------------------------- 1 |
This content has no child content.
'; 50 | } 51 | 52 | 53 | ?> 54 | -------------------------------------------------------------------------------- /admin/content/chstatus.php: -------------------------------------------------------------------------------- 1 | 2 | include_once("../../PeoplePods.php"); 3 | 4 | $POD = new PeoplePod(array('lockdown'=>'adminUser','authSecret'=>@$_COOKIE['pp_auth'])); 5 | 6 | if (@$_POST['id']) { 7 | $CGI = $_POST; 8 | } else if (@$_GET['id']) { 9 | 10 | $CGI= $_GET; 11 | } 12 | 13 | if ($POD->currentUser()->get('adminUser')) { 14 | $doc = $POD->getContent(array('id'=>$CGI['id'])); 15 | $doc->changeStatus($CGI['status']); 16 | if ($doc->success()) { 17 | header("Location: " . $_SERVER['HTTP_REFERER']); 18 | } else { 19 | echo "Status change failed! " . $doc->error(); 20 | } 21 | } 22 | ?> 23 | 24 | -------------------------------------------------------------------------------- /admin/content/deleteComment.php: -------------------------------------------------------------------------------- 1 | include_once("../../PeoplePods.php"); 2 | 3 | $POD = new PeoplePod(array('lockdown'=>'adminUser','authSecret'=>@$_COOKIE['pp_auth'])); 4 | $POD->changeTheme('admin'); 5 | 6 | 7 | $commentId = $_GET['id']; 8 | if ($commentId != '') { 9 | $comment = $POD->getComment(array('id'=>$commentId)); 10 | if ($comment->success()) { 11 | 12 | // get parent so we can output the comment list 13 | $parent = $comment->parent(); 14 | $comment->delete(); 15 | if ($comment->success()) { 16 | 17 | // now we can just iterate through the parent comment loop. we haven't accessed it yet, 18 | // so it will load fresh and NOT include the deleted comment. 19 | if ($parent->comments()->count() > 0) { 20 | while ($c = $parent->comments()->getNext()) { 21 | $c->output('comment_edit'); 22 | } 23 | } else { 24 | echo 'This post has no comments
'; 25 | } 26 | 27 | } else { 28 | // comment failed to delete 29 | echo 'Error: ' . $comment->error .'
'; 30 | 31 | } 32 | 33 | } else { 34 | // comment failed to load 35 | echo 'Error: ' . $comment->error . '
'; 36 | } 37 | 38 | } else { 39 | // no comment id passed in 40 | echo 'Error: No comment specified.
'; 41 | 42 | } 43 | ?> -------------------------------------------------------------------------------- /admin/content/tools.php: -------------------------------------------------------------------------------- 1 |This group has no members.
'; 51 | } 52 | 53 | 54 | ?> 55 | -------------------------------------------------------------------------------- /admin/groups/addToGroup.php: -------------------------------------------------------------------------------- 1 | include_once("../../PeoplePods.php"); 2 | 3 | $POD = new PeoplePod(array('lockdown'=>'adminUser','authSecret'=>@$_COOKIE['pp_auth'])); 4 | $POD->changeTheme('admin'); 5 | 6 | $group = $_GET['group']; 7 | $doc = $_GET['doc']; 8 | $action = 'add'; 9 | if ($_GET['action']) { 10 | $action = $_GET['action']; 11 | } 12 | // load parent 13 | $parent = $POD->getGroup(array('id'=>$group)); 14 | if ($parent->success()) { 15 | 16 | // load child 17 | $child = $POD->getContent(array('id'=>$doc)); 18 | if ($child->success()) { 19 | 20 | if ($action == 'add') { 21 | $parent->addContent($child); 22 | } else if ($action == 'remove') { 23 | $parent->removeContent($child); 24 | } 25 | if ($parent->success()) { 26 | // refill the children stack 27 | $parent->content()->fill(); 28 | } else { 29 | echo "Could not add to group! " . $parent->error(); 30 | } 31 | 32 | } else { 33 | echo "Error with content! " . $child->error(); 34 | } 35 | 36 | 37 | } else { 38 | echo "Error with group! " . $parent->error(); 39 | } 40 | 41 | while ($child = $parent->content()->getNext()) { 42 | $child->output('child'); 43 | } 44 | 45 | if ($parent->content()->count() == 0) { 46 | echo 'This group has no posts.
'; 47 | } 48 | 49 | 50 | ?> 51 | -------------------------------------------------------------------------------- /admin/groups/search.php: -------------------------------------------------------------------------------- 1 | 2 | include_once("../../PeoplePods.php"); 3 | 4 | $POD = new PeoplePod(array('lockdown'=>'adminUser','authSecret'=>@$_COOKIE['pp_auth'])); 5 | $POD->changeTheme('admin'); 6 | 7 | $conditions = array(); 8 | 9 | if (isset($_GET['q']) && $_GET['q'] != 'Search') { 10 | $conditions['groupname:like'] = '%' . $_GET['q'] . '%'; 11 | } 12 | if (isset($_GET['type'])) { 13 | $conditions['type'] = $_GET['type']; 14 | } 15 | if (isset($_GET['userId'])) { 16 | $conditions['userId'] = $_GET['userId']; 17 | } 18 | 19 | $offset = isset($_GET['offset']) ? $_GET['offset'] : 0; 20 | 21 | if (sizeof($conditions) > 0) { 22 | $groups = $POD->getGroups($conditions,'date DESC',20,$offset); 23 | } else { 24 | $groups = $POD->getGroups(array('1'=>1),'date DESC',20,$offset); 25 | } 26 | 27 | 28 | $message = isset($_GET['msg']) ? $_GET['msg'] : null; 29 | $POD->header(); 30 | 31 | include_once("tools.php"); 32 | 33 | if (isset($message)) { ?> 34 | 35 |48 | PeoplePods sends a variety of emails during the course of operation. 49 | These settings effect all emails. 50 |
51 | 52 | 58 |This is a sample plugin that does nothing but print a sample message!
4 | 5 | $doc->sampleContentMethod(); ?> 6 | 7 |Sample Settings, set via the command center:
8 | 9 |Setting 1: = $POD->libOptions('sampleSetting1'); ?>
10 |Setting 2: = $POD->libOptions('sampleSetting2'); ?>
-------------------------------------------------------------------------------- /pods/sample_pod/handler.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | // include the peoplepods library and instantiate a pod object 4 | require_once("../../PeoplePods.php"); 5 | $POD = new PeoplePod(array('authSecret'=>@$_COOKIE['pp_auth'],'debug'=>2)); 6 | 7 | // create an empty piece of content 8 | $doc = $POD->getContent(); 9 | 10 | if (isset($_GET['q'])) { 11 | $doc->headline = 'Sample pod with parameter = ' . $_GET['q']; 12 | } else { 13 | $doc->headline = 'Sample pod with no parameters'; 14 | } 15 | 16 | 17 | // print the header 18 | $POD->header($doc->headline); 19 | 20 | // output the sample content using a custom template that is included with the pod. 21 | $doc->output('custom.template',dirname(__FILE__)); 22 | 23 | // print the footer. 24 | $POD->footer(); -------------------------------------------------------------------------------- /pods/sample_pod/methods.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | // return an array of variables that should be captured in the settings screen 5 | function sampleSetup() { 6 | return array( 7 | 'sampleSetting1'=>'Setting 1', 8 | 'sampleSetting2'=>'Setting 2', 9 | ); 10 | } 11 | 12 | function sampleContentMethod($content) { 13 | echo 'This is output from $sampleContentMethod() called on a piece of content with the title "' . $content->headline . '"'; 14 | } 15 | 16 | function samplePersonMethod($person) { 17 | echo "samplePersonMethod() called on " . $person->nick; 18 | } 19 | 20 | 21 | Content::registerMethod('sampleContentMethod'); 22 | Person::registerMethod('samplePersonMethod'); 23 | 24 | Content::addDatabaseFields(array('sampleField'=>array())); 25 | 26 | function sampleInstall($POD) { 27 | $POD->executeSQL('alter table content add sampleField varchar(10)'); 28 | } 29 | 30 | function sampleUninstall($POD) { 31 | $POD->executeSQL('Alter table content drop sampleField'); 32 | } -------------------------------------------------------------------------------- /pods/sample_pod/settings.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | $POD->registerPOD( 4 | 'sample_pod', // this is the name of the pod. it should match the folder name. 5 | 'this is a sample pod. it does nothing!', // this is the description of the pod. it shows up in the command center. 6 | array( 7 | '^sample$'=>'sample_pod/handler.php', // set up the /sample url to handle requets 8 | '^sample/(.*)'=>'sample_pod/handler.php?q=$1', // set up the /sample/* to handle requets 9 | ), 10 | array( 11 | 'sample_pod_variable'=>true, // if this pod is enabled, value can be accessed via $POD->libOptions('sample_pod_variable'); 12 | ), 13 | dirname(__FILE__) . "/methods.php", // tells PeoplePods to add custom methods included in the methods.php file 14 | 'sampleSetup', // tells PeoplePods to call sampleSetup as the setup function for this pod. 15 | 'sampleInstall', // tells PeoplePods to call this function when the pod is turned on 16 | 'sampleUninstall' // tells PeoplePods to call this function when the pod is turned off. 17 | ); -------------------------------------------------------------------------------- /pods/twitter_connect/friends.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | include_once("../../PeoplePods.php"); 4 | $POD = new PeoplePod(array('debug'=>0,'authSecret'=>@$_COOKIE['pp_auth'])); 5 | 6 | // this page is only available to facebook users. 7 | if (!$POD->isAuthenticated() || !$POD->currentUser()->twitter_token) { 8 | header("Location: /twitter"); 9 | exit; 10 | } 11 | 12 | $POD->header("Twitter Friends"); 13 | 14 | $friends = $POD->currentUser()->getTwitterFriends(); 15 | $friends->output('short','header','footer','Twitter Friends','None of your Twitter friends are members of this site.'); 16 | 17 | $POD->footer(); -------------------------------------------------------------------------------- /pods/twitter_connect/settings.php: -------------------------------------------------------------------------------- 1 | registerPOD("twitter_connect",'Add a Twitter account',array( 10 | "^twitter$"=>"twitter_connect/index.php", 11 | "^twitter/friends$"=>"twitter_connect/friends.php", 12 | "^twitter/(.*)"=>'twitter_connect/index.php?mode=$1', 13 | 14 | ),array(), 15 | $path . '/methods.php', 16 | 'twitter_connect_settings' 17 | ); 18 | 19 | ?> -------------------------------------------------------------------------------- /tests/init_and_auth.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 12 | $this->assertFalse(false); 13 | } 14 | 15 | function testPeoplePodsInit() { 16 | 17 | $this->assertNotNull($POD = new PeoplePod()); 18 | 19 | } 20 | 21 | function testPeoplePodsNoAuth() { 22 | $POD = new PeoplePod(array('authSecret'=>'baldjkdfljh')); 23 | $this->assertFalse($POD->isAuthenticated()); 24 | } 25 | 26 | function testPeoplePodsCreateUser() { 27 | 28 | $POD = new PeoplePod(); 29 | $user = $POD->getPerson(); 30 | $this->assertIsA($user,'Person'); 31 | $this->assertNull($user->id); 32 | 33 | $user->email = 'ben+test@example.com'; 34 | $user->password = 'foo'; 35 | $user->nick = 'test'; 36 | 37 | $user->save(); 38 | 39 | $this->assertTrue($user->success()); 40 | $this->assertNotNull($user->id); 41 | 42 | $POD->changeActor(array('id'=>$user->id)); 43 | 44 | $this->assertTrue($POD->isAuthenticated()); 45 | 46 | $user->delete(); 47 | 48 | } 49 | 50 | 51 | } 52 | ?> -------------------------------------------------------------------------------- /tests/simpletest/VERSION: -------------------------------------------------------------------------------- 1 | 1.0.1 -------------------------------------------------------------------------------- /tests/simpletest/docs/fr/server_stubs_documentation.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoxco/PeoplePods/83fe4371f94fb506bc50f8b2a803fedc384f8f34/tests/simpletest/docs/fr/server_stubs_documentation.html -------------------------------------------------------------------------------- /tests/simpletest/extensions/testdox.php: -------------------------------------------------------------------------------- 1 | _test_case_pattern = empty($test_case_pattern) ? '/^(.*)$/' : $test_case_pattern; 10 | } 11 | 12 | function paintCaseStart($test_name) { 13 | preg_match($this->_test_case_pattern, $test_name, $matches); 14 | if (!empty($matches[1])) { 15 | echo $matches[1] . "\n"; 16 | } else { 17 | echo $test_name . "\n"; 18 | } 19 | } 20 | 21 | function paintCaseEnd() { 22 | echo "\n"; 23 | } 24 | 25 | function paintMethodStart($test_name) { 26 | if (!preg_match('/^test(.*)$/i', $test_name, $matches)) { 27 | return; 28 | } 29 | $test_name = $matches[1]; 30 | 31 | $test_name = preg_replace('/([A-Z])([A-Z])/', '$1 $2', $test_name); 32 | echo '- ' . strtolower(preg_replace('/([a-zA-Z])([A-Z0-9])/', '$1 $2', $test_name)); 33 | } 34 | 35 | function paintMethodEnd() { 36 | echo "\n"; 37 | } 38 | 39 | function paintFail() { 40 | echo " [FAILED]"; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /tests/simpletest/test/acceptance_test.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoxco/PeoplePods/83fe4371f94fb506bc50f8b2a803fedc384f8f34/tests/simpletest/test/acceptance_test.php -------------------------------------------------------------------------------- /tests/simpletest/test/all_tests.php: -------------------------------------------------------------------------------- 1 | TestSuite('All tests for SimpleTest ' . SimpleTest::getVersion()); 7 | $this->addFile(dirname(__FILE__) . '/unit_tests.php'); 8 | $this->addFile(dirname(__FILE__) . '/shell_test.php'); 9 | $this->addFile(dirname(__FILE__) . '/live_test.php'); 10 | $this->addFile(dirname(__FILE__) . '/acceptance_test.php'); 11 | } 12 | } 13 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/autorun_test.php: -------------------------------------------------------------------------------- 1 | addFile(dirname(__FILE__) . '/support/test1.php'); 9 | $this->assertEqual($tests->getSize(), 1); 10 | } 11 | } 12 | 13 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/bad_test_suite.php: -------------------------------------------------------------------------------- 1 | TestSuite('Two bad test cases'); 7 | $this->addFile(dirname(__FILE__) . '/support/empty_test_file.php'); 8 | } 9 | } 10 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/detached_test.php: -------------------------------------------------------------------------------- 1 | addTestCase(new DetachedTestCase($command)); 11 | if (SimpleReporter::inCli()) { 12 | exit ($test->run(new TextReporter()) ? 0 : 1); 13 | } 14 | $test->run(new HtmlReporter()); 15 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/eclipse_test.php: -------------------------------------------------------------------------------- 1 | expectOnce('write',array($expected)); 22 | $listener->setReturnValue('write',-1); 23 | 24 | $pathparts = pathinfo($fullpath); 25 | $filename = $pathparts['basename']; 26 | $test= &new TestSuite($filename); 27 | $test->addTestFile($fullpath); 28 | $test->run(new EclipseReporter(&$listener)); 29 | $this->assertEqual($expected,$listener->output); 30 | } 31 | } 32 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/parse_error_test.php: -------------------------------------------------------------------------------- 1 | addFile('test_with_parse_error.php'); 8 | $test->run(new HtmlReporter()); 9 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/parser_test.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoxco/PeoplePods/83fe4371f94fb506bc50f8b2a803fedc384f8f34/tests/simpletest/test/parser_test.php -------------------------------------------------------------------------------- /tests/simpletest/test/remote_test.php: -------------------------------------------------------------------------------- 1 | addTestCase(new RemoteTestCase($test_url . '?xml=yes', $test_url . '?xml=yes&dry=yes')); 16 | if (SimpleReporter::inCli()) { 17 | exit ($test->run(new TextReporter()) ? 0 : 1); 18 | } 19 | $test->run(new HtmlReporter()); 20 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/shell_test.php: -------------------------------------------------------------------------------- 1 | assertIdentical($shell->execute('echo Hello'), 0); 11 | $this->assertPattern('/Hello/', $shell->getOutput()); 12 | } 13 | 14 | function testBadCommand() { 15 | $shell = &new SimpleShell(); 16 | $this->assertNotEqual($ret = $shell->execute('blurgh! 2>&1'), 0); 17 | } 18 | } 19 | 20 | class TestOfShellTesterAndShell extends ShellTestCase { 21 | 22 | function testEcho() { 23 | $this->assertTrue($this->execute('echo Hello')); 24 | $this->assertExitCode(0); 25 | $this->assertoutput('Hello'); 26 | } 27 | 28 | function testFileExistence() { 29 | $this->assertFileExists(dirname(__FILE__) . '/all_tests.php'); 30 | $this->assertFileNotExists('wibble'); 31 | } 32 | 33 | function testFilePatterns() { 34 | $this->assertFilePattern('/all[_ ]tests/i', dirname(__FILE__) . '/all_tests.php'); 35 | $this->assertNoFilePattern('/sputnik/i', dirname(__FILE__) . '/all_tests.php'); 36 | } 37 | } 38 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/socket_test.php: -------------------------------------------------------------------------------- 1 | assertFalse($error->isError()); 12 | $error->_setError('Ouch'); 13 | $this->assertTrue($error->isError()); 14 | $this->assertEqual($error->getError(), 'Ouch'); 15 | } 16 | 17 | function testClearingError() { 18 | $error = new SimpleStickyError(); 19 | $error->_setError('Ouch'); 20 | $this->assertTrue($error->isError()); 21 | $error->_clearError(); 22 | $this->assertFalse($error->isError()); 23 | } 24 | } 25 | ?> -------------------------------------------------------------------------------- /tests/simpletest/test/support/collector/collectable.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoxco/PeoplePods/83fe4371f94fb506bc50f8b2a803fedc384f8f34/tests/simpletest/test/support/collector/collectable.1 -------------------------------------------------------------------------------- /tests/simpletest/test/support/collector/collectable.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoxco/PeoplePods/83fe4371f94fb506bc50f8b2a803fedc384f8f34/tests/simpletest/test/support/collector/collectable.2 -------------------------------------------------------------------------------- /tests/simpletest/test/support/empty_test_file.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/simpletest/test/support/latin1_sample: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoxco/PeoplePods/83fe4371f94fb506bc50f8b2a803fedc384f8f34/tests/simpletest/test/support/latin1_sample -------------------------------------------------------------------------------- /tests/simpletest/test/support/spl_examples.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/simpletest/test/support/supplementary_upload_sample.txt: -------------------------------------------------------------------------------- 1 | Some more text content -------------------------------------------------------------------------------- /tests/simpletest/test/support/test1.php: -------------------------------------------------------------------------------- 1 | assertEqual(3,1+2, "pass1"); 5 | } 6 | } 7 | ?> 8 | -------------------------------------------------------------------------------- /tests/simpletest/test/support/upload_sample.txt: -------------------------------------------------------------------------------- 1 | Sample for testing file upload -------------------------------------------------------------------------------- /tests/simpletest/test/test_with_parse_error.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/simpletest/test/url_test.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xoxco/PeoplePods/83fe4371f94fb506bc50f8b2a803fedc384f8f34/tests/simpletest/test/url_test.php -------------------------------------------------------------------------------- /themes/admin/content/addChild.php: -------------------------------------------------------------------------------- 1 |$comment->author()->write('nick'); ?> left a comment on if ($comment->parent()->TYPE=='content') { ?> 3 | = $comment->parent()->headline; ?> 4 | } else { ?> 5 | = $comment->parent()->nick; ?> 6 | } ?>, (= $POD->timesince($comment->get('minutes')); ?>)
7 |= $comment->shorten('comment',100); ?>
8 | 9 |What type of content would you like to create?
22 | 23 | foreach ($types as $type) { ?> 24 | 25 | 26 | 27 | } ?> 28 | 29 | 33 | 34 |
$comment->author()->write('nick'); ?> left a comment on if ($comment->parent()->TYPE=='content') { ?> 3 | = $comment->parent()->headline; ?> 4 | } else { ?> 5 | = $comment->parent()->nick; ?> 6 | } ?>, (= $POD->timesince($comment->get('minutes')); ?>)
7 |$comment->writeFormatted('comment'); ?>
8 |Edit | Delete
9 |