From 9007aea22fab1ecb869428d4296b0e52f923742f Mon Sep 17 00:00:00 2001 From: Sergey Chernyshev Date: Sun, 8 May 2016 20:28:48 -0400 Subject: [PATCH 01/10] First stab at moving everything to namespaces and class loaders --- admin/modules.php | 84 +- admin/outstanding.php | 6 +- api.php | 24 +- badges.php | 1 + change_account.php | 4 +- classes/API/AuthenticatedEndpoint.php | 35 + classes/API/Endpoint.php | 264 +--- classes/Account.php | 275 ++-- classes/AuthenticationModule.php | 122 +- classes/Badge.php | 93 +- classes/BadgeActivityTrigger.php | 56 + classes/CampaignTracker.php | 36 +- classes/Cohort.php | 521 ------- classes/CohortAnalysis/Cohort.php | 63 + classes/CohortAnalysis/CohortProvider.php | 186 +++ classes/CohortAnalysis/GenerationCohorts.php | 186 +++ classes/CohortAnalysis/RegMethodCohorts.php | 94 ++ classes/Exceptions/API/APIException.php | 9 + .../Exceptions/API/BadParameterException.php | 6 + .../Exceptions/API/BadRequestException.php | 6 + .../Exceptions/API/CallNotFoundException.php | 33 + .../API/InvalidParameterValueException.php | 13 + .../API/MalformedCallSlugException.php | 28 + .../API/MethodNotAllowedException.php | 30 + .../API/NamespaceNotFoundException.php | 22 + classes/Exceptions/API/NotFoundException.php | 13 + .../API/ObjectNotFoundException.php | 9 + .../API/RequiredParameterException.php | 28 + .../API/UnauthenticatedException.php | 13 + .../Exceptions/API/UnauthorizedException.php | 13 + .../API/UnknownParameterException.php | 22 + .../AuthenticationException.php | 57 + .../Authentication/ExistingUserException.php | 12 + .../InputValidationException.php | 12 + .../Authentication/UserCreationException.php | 14 + classes/Exceptions/DBBindParamException.php | 11 + classes/Exceptions/DBBindResultException.php | 11 + classes/Exceptions/DBException.php | 47 + classes/Exceptions/DBExecuteStmtException.php | 11 + classes/Exceptions/DBPrepareStmtException.php | 11 + classes/Exceptions/OAuth2Exception.php | 12 + .../StartupAPIDeprecatedException.php | 14 + classes/Exceptions/StartupAPIException.php | 22 + classes/Feature.php | 72 +- classes/Invitation.php | 74 +- ...ieStorage.php => MrClay_CookieStorage.php} | 8 +- ...ule.php => OAuth2AuthenticationModule.php} | 209 +-- classes/OAuth2UserCredentials.php | 85 ++ ...dule.php => OAuthAuthenticationModule.php} | 86 +- classes/PaymentEngine.php | 31 +- classes/Plan.php | 1 + classes/StartupAPI.php | 126 +- classes/StartupAPIModule.php | 115 +- classes/StartupAPIModuleInterface.php | 24 + classes/TransactionLogger.php | 14 +- classes/User.php | 441 +++--- classes/UserConfig.php | 1304 ++++++++++++++++ classes/UserCredentials.php | 20 + tools.php => classes/UserTools.php | 1 + cron.php | 2 + dbupgrade.php | 4 +- default_config.php | 1313 +---------------- depcheck.php | 2 + edit.php | 6 +- edit_account.php | 2 + global.php | 58 +- index.php | 4 +- invitations.php | 1 + login.php | 3 +- logout.php | 4 +- maillist.php | 1 + maintenance.php | 3 +- manage_account.php | 2 +- modules/amazon/index.php | 6 +- modules/email/index.php | 31 +- modules/email/login.php | 8 +- ...index.php => EtsyAuthenticationModule.php} | 30 +- .../EtsyUserCredentials.php | 14 + modules/external_payment/callback.php | 7 +- modules/external_payment/external_page.php | 1 + modules/external_payment/index.php | 1 + ...x.php => FacebookAuthenticationModule.php} | 167 +-- .../FacebookUserCredentials.php | 42 + modules/facebook/facebook.php | 2 +- modules/foursquare/index.php | 4 +- modules/github/index.php | 4 +- modules/google/index.php | 4 +- ...hp => GoogleOAuthAuthenticationModule.php} | 27 +- .../GoogleOAuthUserCredentials.php | 12 + modules/instagram/index.php | 4 +- ...x.php => LinkedInAuthenticationModule.php} | 35 +- .../LinkedInUserCredentials.php | 19 + modules/mailchimp/index.php | 4 +- .../{index.php => ManualPaymentEngine.php} | 27 +- modules/manual/admin.php | 10 +- ...dex.php => MeetupAuthenticationModule.php} | 33 +- .../MeetupUserCredentials.php | 14 + modules/ohloh/images/logo_100x.png | Bin 3093 -> 0 bytes modules/ohloh/index.php | 123 -- modules/stripe/admin.php | 8 +- modules/stripe/index.php | 19 +- ...ex.php => TwitterAuthenticationModule.php} | 34 +- .../TwitterUserCredentials.php | 14 + ... UsernamePasswordAuthenticationModule.php} | 111 +- .../UsernamePassUserCredentials.php | 37 + modules/usernamepass/forgotpassword.php | 2 +- navbox.php | 5 +- oauth2_callback.php | 19 +- oauth_callback.php | 17 +- plans.php | 7 +- register.php | 14 +- sample.php | 12 +- send_email_verification_code.php | 4 +- show_badge.php | 4 +- subscription_details.php | 2 + .../modules/ohloh/credentials.html.twig | 1 - .../modules/ohloh/user_info.html.twig | 1 - .../modules/ohloh/credentials.html.twig | 1 - .../modules/ohloh/user_info.html.twig | 1 - transaction_log.php | 2 + users.php | 8 +- users_config.localtest.php | 26 +- users_config.sample.php | 26 +- verify_email.php | 4 +- version.php | 1 + view/engine/choose_engine.php | 2 + 126 files changed, 3805 insertions(+), 3751 deletions(-) create mode 100644 classes/API/AuthenticatedEndpoint.php create mode 100644 classes/BadgeActivityTrigger.php delete mode 100644 classes/Cohort.php create mode 100644 classes/CohortAnalysis/Cohort.php create mode 100644 classes/CohortAnalysis/CohortProvider.php create mode 100644 classes/CohortAnalysis/GenerationCohorts.php create mode 100644 classes/CohortAnalysis/RegMethodCohorts.php create mode 100644 classes/Exceptions/API/APIException.php create mode 100644 classes/Exceptions/API/BadParameterException.php create mode 100644 classes/Exceptions/API/BadRequestException.php create mode 100644 classes/Exceptions/API/CallNotFoundException.php create mode 100644 classes/Exceptions/API/InvalidParameterValueException.php create mode 100644 classes/Exceptions/API/MalformedCallSlugException.php create mode 100644 classes/Exceptions/API/MethodNotAllowedException.php create mode 100644 classes/Exceptions/API/NamespaceNotFoundException.php create mode 100644 classes/Exceptions/API/NotFoundException.php create mode 100644 classes/Exceptions/API/ObjectNotFoundException.php create mode 100644 classes/Exceptions/API/RequiredParameterException.php create mode 100644 classes/Exceptions/API/UnauthenticatedException.php create mode 100644 classes/Exceptions/API/UnauthorizedException.php create mode 100644 classes/Exceptions/API/UnknownParameterException.php create mode 100644 classes/Exceptions/Authentication/AuthenticationException.php create mode 100644 classes/Exceptions/Authentication/ExistingUserException.php create mode 100644 classes/Exceptions/Authentication/InputValidationException.php create mode 100644 classes/Exceptions/Authentication/UserCreationException.php create mode 100644 classes/Exceptions/DBBindParamException.php create mode 100644 classes/Exceptions/DBBindResultException.php create mode 100644 classes/Exceptions/DBException.php create mode 100644 classes/Exceptions/DBExecuteStmtException.php create mode 100644 classes/Exceptions/DBPrepareStmtException.php create mode 100644 classes/Exceptions/OAuth2Exception.php create mode 100644 classes/Exceptions/StartupAPIDeprecatedException.php create mode 100644 classes/Exceptions/StartupAPIException.php rename classes/{CookieStorage.php => MrClay_CookieStorage.php} (96%) rename classes/{OAuth2Module.php => OAuth2AuthenticationModule.php} (84%) create mode 100644 classes/OAuth2UserCredentials.php rename classes/{OAuthModule.php => OAuthAuthenticationModule.php} (91%) create mode 100644 classes/StartupAPIModuleInterface.php create mode 100644 classes/UserConfig.php create mode 100644 classes/UserCredentials.php rename tools.php => classes/UserTools.php (99%) rename modules/etsy/{index.php => EtsyAuthenticationModule.php} (81%) create mode 100644 modules/etsy/EtsyAuthenticationModule/EtsyUserCredentials.php rename modules/facebook/{index.php => FacebookAuthenticationModule.php} (70%) create mode 100644 modules/facebook/FacebookAuthenticationModule/FacebookUserCredentials.php rename modules/google_oauth/{index.php => GoogleOAuthAuthenticationModule.php} (79%) create mode 100644 modules/google_oauth/GoogleOAuthAuthenticationModule/GoogleOAuthUserCredentials.php rename modules/linkedin/{index.php => LinkedInAuthenticationModule.php} (67%) create mode 100644 modules/linkedin/LinkedInAuthenticationModule/LinkedInUserCredentials.php rename modules/manual/{index.php => ManualPaymentEngine.php} (83%) rename modules/meetup/{index.php => MeetupAuthenticationModule.php} (71%) create mode 100644 modules/meetup/MeetupAuthenticationModule/MeetupUserCredentials.php delete mode 100644 modules/ohloh/images/logo_100x.png delete mode 100644 modules/ohloh/index.php rename modules/twitter/{index.php => TwitterAuthenticationModule.php} (73%) create mode 100644 modules/twitter/TwitterAuthenticationModule/TwitterUserCredentials.php rename modules/usernamepass/{index.php => UsernamePasswordAuthenticationModule.php} (78%) create mode 100644 modules/usernamepass/UsernamePasswordAuthenticationModule/UsernamePassUserCredentials.php delete mode 100644 themes/awesome/templates/modules/ohloh/credentials.html.twig delete mode 100644 themes/awesome/templates/modules/ohloh/user_info.html.twig delete mode 100644 themes/classic/templates/modules/ohloh/credentials.html.twig delete mode 100644 themes/classic/templates/modules/ohloh/user_info.html.twig diff --git a/admin/modules.php b/admin/modules.php index 45ca228..03bacb3 100644 --- a/admin/modules.php +++ b/admin/modules.php @@ -4,94 +4,14 @@ // temporary switch to make it easy to see experimental modules $show_experimental = true; -$module_categories = array( - 'auth' => array( - 'title' => 'Authentication modules' - ), - 'email' => array( - 'title' => 'Email module' - ), - 'payment' => array( - 'title' => 'Payment engines' - ) -); - -$builtin_modules = array( - 'usernamepass' => array( - 'class' => 'UsernamePasswordAuthenticationModule', - 'category_slug' => 'auth' - ), - 'email' => array( - 'class' => 'EmailAuthenticationModule', - 'experimental' => true, - 'category_slug' => 'auth' - ), - 'facebook' => array( - 'class' => 'FacebookAuthenticationModule', - 'category_slug' => 'auth' - ), - 'twitter' => array( - 'class' => 'TwitterAuthenticationModule', - 'category_slug' => 'auth' - ), - 'google_oauth' => array( - 'class' => 'GoogleOAuthAuthenticationModule', - 'category_slug' => 'auth' - ), - 'linkedin' => array( - 'class' => 'LinkedInAuthenticationModule', - 'category_slug' => 'auth' - ), - 'meetup' => array( - 'class' => 'MeetupAuthenticationModule', - 'category_slug' => 'auth' - ), - 'etsy' => array( - 'class' => 'EtsyAuthenticationModule', - 'category_slug' => 'auth' - ), - 'foursquare' => array( - 'class' => 'FoursquareAuthenticationModule', - 'category_slug' => 'auth' - ), - 'github' => array( - 'class' => 'GithubAuthenticationModule', - 'category_slug' => 'auth' - ), - 'ohloh' => array( - 'class' => 'OhlohAuthenticationModule', - 'category_slug' => 'auth' - ), - 'mailchimp' => array( - 'class' => 'MailChimpModule', - 'experimental' => true, - 'category_slug' => 'email' - ), - 'manual' => array( - 'class' => 'ManualPaymentEngine', - 'experimental' => true, - 'category_slug' => 'payment' - ), - 'external_payment' => array( - 'class' => 'ExternalPaymentEngine', - 'experimental' => true, - 'category_slug' => 'payment' - ), - 'stripe' => array( - 'class' => 'StripePaymentEngine', - 'experimental' => true, - 'category_slug' => 'payment' - ), -); - $ADMIN_SECTION = 'modules'; require_once(__DIR__ . '/header.php'); ?>
$module_category) { + foreach (StartupAPIModule::$module_categories as $category_slug => $module_category) { $category_modules = array(); - foreach ($builtin_modules as $module_slug => $module) { + foreach (StartupAPIModule::$builtin_modules as $module_slug => $module) { if ($module['category_slug'] == $category_slug && ($show_experimental || !array_key_exists('experimental', $module) || !$module['experimental']) ) { $category_modules[$module_slug] = $module; diff --git a/admin/outstanding.php b/admin/outstanding.php index e71aa93..36ee0a8 100644 --- a/admin/outstanding.php +++ b/admin/outstanding.php @@ -6,15 +6,15 @@ $db = UserConfig::getDB(); if (!($stmt = $db->prepare('SELECT a.id, a.name, a.plan_slug, a.schedule_slug, SUM(c.amount) AS debt FROM u_accounts AS a JOIN u_account_charge AS c ON a.id = c.account_id GROUP BY c.account_id HAVING debt < 0'))) { - throw new DBPrepareStmtException($db); + throw new Exceptions\DBPrepareStmtException($db); } if (!$stmt->execute()) { - throw new DBExecuteStmtException($db, $stmt); + throw new Exceptions\DBExecuteStmtException($db, $stmt); } if (!$stmt->bind_result($id, $name, $plan, $schedule, $debt)) { - throw new DBBindResultException($db, $stmt); + throw new Exceptions\DBBindResultException($db, $stmt); } $debtors = array(); diff --git a/api.php b/api.php index 7b4c001..871562d 100644 --- a/api.php +++ b/api.php @@ -1,4 +1,6 @@ Available endpoints:

getName(); ?>