/**
  * @var ITeamInvitationRepository
  */
 public function __construct()
 {
     parent::__construct();
     $this->member_repository = new SapphireCLAMemberRepository();
     $this->invitation_repository = new SapphireTeamInvitationRepository();
     $this->team_manager = new CCLATeamManager($this->invitation_repository, $this->member_repository, new TeamInvitationFactory(), new TeamFactory(), new CCLAValidatorFactory(), new SapphireTeamRepository(), SapphireTransactionManager::getInstance());
 }
 function init()
 {
     parent::init();
     Requirements::css(THIRDPARTY_DIR . '/jquery-ui-themes/smoothness/jquery-ui.css');
     Requirements::javascript(THIRDPARTY_DIR . '/jquery-ui/jquery-ui.js');
     Requirements::customScript("jQuery(document).ready(function(\$) {\n            \$('#consulting','.marketplace-nav').addClass('current');\n        });");
     Requirements::css("themes/openstack/css/chosen.css", "screen,projection");
     Requirements::javascript(Director::protocol() . "maps.googleapis.com/maps/api/js?sensor=false");
     Requirements::combine_files('marketplace_consultants_directory_page.js', array("marketplace/code/ui/frontend/js/markerclusterer.js", "marketplace/code/ui/frontend/js/oms.min.js", "marketplace/code/ui/frontend/js/infobubble-compiled.js", "marketplace/code/ui/frontend/js/google.maps.jquery.js", "themes/openstack/javascript/chosen.jquery.min.js", "marketplace/code/ui/frontend/js/consultants.directory.page.js"));
     Requirements::customScript($this->GATrackingCode());
     $this->consultant_repository = new SapphireConsultantRepository();
     $this->region_repository = new SapphireRegionRepository();
     $this->consultants_locations_query = new ConsultantsOfficesLocationsQueryHandler();
     $this->consultants_service_query = new ConsultantsServicesQueryHandler();
     $google_geo_coding_api_key = null;
     $google_geo_coding_client_id = null;
     $google_geo_coding_private_key = null;
     if (defined('GOOGLE_GEO_CODING_API_KEY')) {
         $google_geo_coding_api_key = GOOGLE_GEO_CODING_API_KEY;
     } else {
         if (defined('GOOGLE_GEO_CODING_CLIENT_ID') && defined('GOOGLE_GEO_CODING_PRIVATE_KEY')) {
             $google_geo_coding_client_id = GOOGLE_GEO_CODING_CLIENT_ID;
             $google_geo_coding_private_key = GOOGLE_GEO_CODING_PRIVATE_KEY;
         }
     }
     $this->manager = new ConsultantManager($this->consultant_repository, new SapphireMarketPlaceVideoTypeRepository(), new SapphireMarketPlaceTypeRepository(), new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), new SapphireSpokenLanguageRepository(), new SapphireConfigurationManagementTypeRepository(), new SapphireConsultantServiceOfferedTypeRepository(), new ConsultantAddPolicy($this->consultant_repository, new SapphireMarketPlaceTypeRepository()), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new ConsultantFactory(), new MarketplaceFactory(), new ValidatorFactory(), new OpenStackApiFactory(), new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance(), $google_geo_coding_api_key, $google_geo_coding_client_id, $google_geo_coding_private_key), null, new SessionCacheService(), SapphireTransactionManager::getInstance());
 }
 public function __construct()
 {
     parent::__construct();
     $this->notification_repository = new SapphireFoundationMemberRevocationNotificationRepository();
     $this->notification_manager = new RevocationNotificationManager(new SapphireFoundationMemberRepository(), new SapphireFoundationMemberRevocationNotificationRepository(), new SapphireElectionRepository(), new RevocationNotificationFactory(), SapphireTransactionManager::getInstance());
     Requirements::css('elections/css/revocation.action.page.css');
 }
 /**
  * @return ITransactionManager
  */
 public static function getInstance()
 {
     if (!is_object(self::$instance)) {
         self::$instance = new SapphireTransactionManager();
     }
     return self::$instance;
 }
 function init()
 {
     parent::init();
     $google_geo_coding_api_key = null;
     $google_geo_coding_client_id = null;
     $google_geo_coding_private_key = null;
     if (defined('GOOGLE_GEO_CODING_API_KEY')) {
         $google_geo_coding_api_key = GOOGLE_GEO_CODING_API_KEY;
     } else {
         if (defined('GOOGLE_GEO_CODING_CLIENT_ID') && defined('GOOGLE_GEO_CODING_PRIVATE_KEY')) {
             $google_geo_coding_client_id = GOOGLE_GEO_CODING_CLIENT_ID;
             $google_geo_coding_private_key = GOOGLE_GEO_CODING_PRIVATE_KEY;
         }
     }
     //managers
     $this->factory = new EventRegistrationRequestFactory();
     $this->event_registration_request_manager = new EventRegistrationRequestManager(new SapphireEventRegistrationRequestRepository(), new SapphireEventRepository(), $this->factory, new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance(), $google_geo_coding_api_key, $google_geo_coding_client_id, $google_geo_coding_private_key), new SapphireEventPublishingService(), new EventValidatorFactory(), SapphireTransactionManager::getInstance());
     //js files
     Requirements::css("themes/openstack/css/chosen.css", "screen,projection");
     Requirements::css(THIRDPARTY_DIR . '/jquery-ui-themes/smoothness/jquery-ui.css');
     Requirements::javascript(THIRDPARTY_DIR . '/jquery-ui/jquery-ui.js');
     Requirements::javascript(Director::protocol() . "ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js");
     Requirements::javascript(Director::protocol() . "ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.min.js");
     Requirements::combine_files('event_registration_request_page.js', array("themes/openstack/javascript/chosen.jquery.min.js", "themes/openstack/javascript/jquery.ui.datepicker.validation.package-1.0.1/jquery.ui.datepicker.validation.js", "themes/openstack/javascript/jquery.validate.custom.methods.js", 'events/js/event.registration.request.page.js'));
 }
 function up()
 {
     echo "Starting Migration Proc ...<BR>";
     //check if migration already had ran ...
     $migration = Migration::get()->filter('Name', $this->title)->first();
     if (!$migration) {
         $marketplace_types = array('Private Cloud');
         $factory = new MarketplaceFactory();
         $service = new MarketplaceTypeManager(new SapphireMarketPlaceTypeRepository(), new SapphireSecurityGroupRepository(), SapphireTransactionManager::getInstance());
         foreach ($marketplace_types as $marketplace_type) {
             try {
                 $service->store($factory->buildMarketplaceType($marketplace_type));
             } catch (Exception $ex) {
             }
         }
         DB::query("INSERT INTO CloudServiceOffered_PricingSchemas (CloudServiceOfferedID, PricingSchemaTypeID) SELECT PublicCloudServiceOfferedID, PricingSchemaTypeID FROM PublicCloudServiceOffered_PricingSchemas;");
         DB::query("UPDATE OpenStackImplementationApiCoverage SET ClassName='CloudServiceOffered'\nWHERE ImplementationID IN (SELECT ID FROM CompanyService where ClassName='PublicCloudService');");
         DB::query("UPDATE DataCenterRegion SET CloudServiceID = PublicCloudID;");
         DB::query("ALTER TABLE `CloudServiceOffered_PricingSchemas`\n\t\t\tADD UNIQUE INDEX `CloudServiceOffered_PricingSchemaType` (`CloudServiceOfferedID` ASC, `PricingSchemaTypeID` ASC);");
         DB::query("ALTER TABLE `DataCenterRegion` DROP INDEX `Name_PublicCloud`;");
         DB::query("ALTER TABLE `DataCenterRegion`\n\t\t\tADD UNIQUE INDEX `Name_CloudService` (`Name` ASC, `CloudServiceID` ASC);");
         $migration = new Migration();
         $migration->Name = $this->title;
         $migration->Description = $this->description;
         $migration->Write();
     }
     echo "Ending  Migration Proc ...<BR>";
 }
 public function __construct()
 {
     parent::__construct();
     $this->securityToken = new SecurityToken();
     $this->summit_repository = new SapphireSummitRepository();
     $this->summitevent_repository = new SapphireSummitEventRepository();
     $this->summitpresentation_repository = new SapphireSummitPresentationRepository();
     $this->eventfeedback_repository = new SapphireEventFeedbackRepository();
     $this->speakerfeedback_repository = new SapphireSpeakerFeedbackRepository();
     $this->attendee_repository = new SapphireSummitAttendeeRepository();
     $this->schedule_manager = new ScheduleManager($this->summitevent_repository, $this->summitpresentation_repository, $this->eventfeedback_repository, new EventFeedbackFactory(), $this->speakerfeedback_repository, $this->attendee_repository, SapphireTransactionManager::getInstance());
     $this_var = $this;
     $security_token = $this->securityToken;
     $this->addBeforeFilter('addFeedback', 'check_access_reject', function ($request) use($this_var, $security_token) {
         $data = $this_var->getJsonRequest();
         if (!$data) {
             return $this->serverError();
         }
         if (!$security_token->checkRequest($request)) {
             return $this->forbiddenError();
         }
         if ($data['field_98438688'] != '') {
             return $this->forbiddenError();
         }
     });
 }
 public function __construct()
 {
     parent::__construct();
     $this->delete_request_repository = new SapphireDupeMemberDeleteRequestRepository();
     $this->merge_request_repository = new SapphireDupeMemberMergeRequestRepository();
     $this->manager = new DupesMembersManager(new SapphireDupesMemberRepository(), new DupeMemberMergeRequestFactory(), new DupeMemberDeleteRequestFactory(), $this->merge_request_repository, $this->delete_request_repository, new SapphireDeletedDupeMemberRepository(), new DeletedDupeMemberFactory(), new SapphireCandidateNominationRepository(), new SapphireNotMyAccountActionRepository(), new NotMyAccountActionFactory(), SapphireTransactionManager::getInstance(), SapphireBulkQueryRegistry::getInstance());
 }
 function run()
 {
     try {
         $election_input_path = Director::baseFolder() . '/' . ELECTION_VOTERS_INGEST_PATH;
         $files = scandir($election_input_path);
         $manager = new ElectionManager(new SapphireElectionRepository(), new SapphireFoundationMemberRepository(), new SapphireVoteRepository(), new SapphireVoterFileRepository(), new VoteFactory(), new VoterFileFactory(), new ElectionFactory(), SapphireTransactionManager::getInstance());
         foreach ($files as $file_name) {
             if ($this->isCSV($file_name) && (list($election_id, $open_date, $close_date) = $this->isValidElectionFileName($file_name))) {
                 try {
                     echo printf('processing file %s' . PHP_EOL, $file_name);
                     list($count, $not_processed) = $manager->ingestVotersForElection($election_input_path . '/' . $file_name, $election_id, $open_date, $close_date);
                     echo printf('file %s - processed %d rows - not processed %d rows' . PHP_EOL, $file_name, $count, count($not_processed));
                     if (count($not_processed) > 0) {
                         echo 'not processed details ... ' . PHP_EOL;
                         echo var_dump($not_processed) . PHP_EOL;
                     }
                     echo printf('deleting file %s ...' . PHP_EOL, $file_name);
                     unlink($election_input_path . '/' . $file_name);
                 } catch (Exception $ex) {
                     SS_Log::log($ex, SS_Log::ERR);
                     echo $ex->getMessage();
                 }
             }
         }
         return 'OK';
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         echo $ex->getMessage();
     }
 }
 public function __construct()
 {
     parent::__construct();
     $this->company_repository = new SapphireICLACompanyRepository();
     $this->member_repository = new SapphireCLAMemberRepository();
     $this->invitation_repository = new SapphireTeamInvitationRepository();
     $this->company_manager = new CCLACompanyService($this->company_repository, SapphireTransactionManager::getInstance());
     $this->team_manager = new CCLATeamManager($this->invitation_repository, $this->member_repository, new TeamInvitationFactory(), new TeamFactory(), new CCLAValidatorFactory(), new SapphireTeamRepository(), SapphireTransactionManager::getInstance());
     //filters...
     $this_var = $this;
     $this->addBeforeFilter('signCompanyCCLA', 'check_sign', function ($request) use($this_var) {
         if (!Permission::check("SANGRIA_ACCESS")) {
             return $this_var->permissionFailure();
         }
     });
     $this->addBeforeFilter('unsignCompanyCCLA', 'check_unsign', function ($request) use($this_var) {
         if (!Permission::check("SANGRIA_ACCESS")) {
             return $this_var->permissionFailure();
         }
     });
     $this->addBeforeFilter('searchCCLAMembers', 'check_members_search', function () use($this_var) {
         return $this_var->checkCCLAdmin();
     });
     $this->addBeforeFilter('addInvitation', 'check_add_invitation', function () use($this_var) {
         return $this_var->checkCCLAdmin();
     });
     $this->addBeforeFilter('deleteInvitation', 'check_delete_invitation', function () use($this_var) {
         return $this_var->checkCCLAdmin();
     });
 }
 function init()
 {
     parent::init();
     Requirements::javascript("marketplace/code/ui/frontend/js/marketplace.common.js");
     $this->review_repository = new SapphireReviewRepository();
     $this->review_manager = new ReviewManager(new SapphireReviewRepository(), new SapphireJobAlertEmailRepository(), new ReviewFactory(), SapphireTransactionManager::getInstance());
 }
 function run()
 {
     $init_time = time();
     $manager = new GerritIngestManager(new GerritAPI(GERRIT_BASE_URL, GERRIT_USER, GERRIT_PASSWORD), new SapphireGerritUserRepository(), SapphireTransactionManager::getInstance());
     $processed = $manager->processCommits();
     $finish_time = time() - $init_time;
     echo 'processed records ' . $processed . ' - time elapsed : ' . $finish_time . ' seconds.' . PHP_EOL;
 }
 function down()
 {
     SapphireTransactionManager::getInstance()->transaction(function () {
         echo sprintf("downgrading migration # %s ...", $this->title) . PHP_EOL;
         Migration::get()->filter('Name', $this->title)->removeAll();
         $this->doDown();
     });
 }
 public function __construct()
 {
     parent::__construct();
     $this->factory = new OpenStackApiFactory();
     $this->release_repository = new SapphireOpenStackReleaseRepository();
     $this->component_repository = new SapphireOpenStackComponentRepository();
     $this->version_repository = new SapphireOpenStackApiVersionRepository();
     $this->manager = new OpenStackApiManager($this->release_repository, $this->component_repository, $this->version_repository, SapphireTransactionManager::getInstance());
 }
 public function __construct()
 {
     parent::__construct();
     // TODO: set by IOC
     $this->summit_repository = new SapphireSummitRepository();
     $this->summitevent_repository = new SapphireSummitEventRepository();
     $this->summitpresentation_repository = new SapphireSummitPresentationRepository();
     $this->summit_service = new SummitService($this->summit_repository, $this->summitevent_repository, SapphireTransactionManager::getInstance());
 }
 function run()
 {
     $batch_size = PullCommitsFromGerritTaskBatchSize;
     if (isset($_GET['batch_size'])) {
         $batch_size = intval(trim(Convert::raw2sql($_GET['batch_size'])));
         echo sprintf('batch_size set to %s', $batch_size);
     }
     $manager = new GerritIngestManager(new GerritAPI(GERRIT_BASE_URL, GERRIT_USER, GERRIT_PASSWORD), new SapphireBatchTaskRepository(), new SapphireCLAMemberRepository(), new BatchTaskFactory(), SapphireTransactionManager::getInstance());
     $members_updated = $manager->processCommits($batch_size);
     echo $members_updated;
 }
 function run()
 {
     try {
         $manager = new JobRegistrationRequestManager(new SapphireJobRegistrationRequestRepository(), new SapphireJobRepository(), new SapphireJobAlertEmailRepository(), new JobFactory(), new JobsValidationFactory(), new SapphireJobPublishingService(), SapphireTransactionManager::getInstance());
         $manager->makePurge();
         return 'OK';
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         echo $ex->getMessage();
     }
 }
 /**
  *
  */
 public function run()
 {
     SapphireTransactionManager::getInstance()->transaction(function () {
         $pageToken = null;
         while (true) {
             if ($this->videosUpdated >= SummitVideoApp::config()->popular_video_limit) {
                 break;
             }
             // Prevent an infinite loop if the YouTube service is acting strange
             if ($this->sanityCheck === 5) {
                 $e = new Exeception('Task has run too many times. Seems to be an infinite loop. Could be something wrong with the YouTube service?');
                 SS_Log::log($e, SS_Log::ERR);
                 throw $e;
             }
             try {
                 $response = $this->api->getPopularVideos($pageToken);
             } catch (\Exception $e) {
                 SS_Log::log("YouTube Search failed" . $e->getMessage(), SS_Log::ERR);
             }
             $this->sanityCheck++;
             $body = $response->getBody()->getContents();
             $data = Convert::json2array($body);
             $nextPageToken = @$data['nextPageToken'];
             $ids = [];
             foreach ($data['items'] as $item) {
                 if ($item['id']['kind'] === 'youtube#video') {
                     $ids[] = $item['id']['videoId'];
                 }
             }
             try {
                 $response = $this->api->getVideoStatsById($ids);
             } catch (\Exception $e) {
                 SS_Log::log("YouTube video stats failed" . $e->getMessage(), SS_Log::ERR);
             }
             $body = $response->getBody()->getContents();
             $data = Convert::json2array($body);
             foreach ($data['items'] as $v) {
                 $video = PresentationVideo::get()->filter(['YouTubeID' => $v['id']])->first();
                 if ($video) {
                     $video->Views = $v['statistics']['viewCount'];
                     $video->write();
                     $this->videosUpdated++;
                 }
             }
             // If there are no more pages, then bail
             if ($nextPageToken === $pageToken) {
                 break;
             }
             $pageToken = $nextPageToken;
         }
         echo "{$this->videosUpdated} videos updated.\n";
     });
 }
 public function __construct()
 {
     $this->private_cloud_repository = new SapphirePrivateCloudRepository();
     $this->private_cloud_draft_repository = new SapphirePrivateCloudRepository(true);
     $this->marketplace_type_repository = new SapphireMarketPlaceTypeRepository();
     //google geo coding settings
     $google_geo_coding_api_key = null;
     $google_geo_coding_client_id = null;
     $google_geo_coding_private_key = null;
     if (defined('GOOGLE_GEO_CODING_API_KEY')) {
         $google_geo_coding_api_key = GOOGLE_GEO_CODING_API_KEY;
     } else {
         if (defined('GOOGLE_GEO_CODING_CLIENT_ID') && defined('GOOGLE_GEO_CODING_PRIVATE_KEY')) {
             $google_geo_coding_client_id = GOOGLE_GEO_CODING_CLIENT_ID;
             $google_geo_coding_private_key = GOOGLE_GEO_CODING_PRIVATE_KEY;
         }
     }
     $manager = new PrivateCloudManager($this->private_cloud_repository, new SapphireMarketPlaceVideoTypeRepository(), $this->marketplace_type_repository, new SapphireGuestOSTypeRepository(), new SapphireHyperVisorTypeRepository(), new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), new SapphireOpenStackReleaseSupportedApiVersionRepository(), new PrivateCloudAddPolicy($this->private_cloud_repository, $this->marketplace_type_repository), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new PrivateCloudFactory(), new MarketplaceFactory(), new ValidatorFactory(), new OpenStackApiFactory(), new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance(), $google_geo_coding_api_key, $google_geo_coding_client_id, $google_geo_coding_private_key), null, new SessionCacheService(), SapphireTransactionManager::getInstance());
     $draft_manager = new PrivateCloudManager($this->private_cloud_draft_repository, new SapphireMarketPlaceVideoTypeRepository(), $this->marketplace_type_repository, new SapphireGuestOSTypeRepository(), new SapphireHyperVisorTypeRepository(), new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), new SapphireOpenStackReleaseSupportedApiVersionRepository(), new PrivateCloudAddPolicy($this->private_cloud_draft_repository, $this->marketplace_type_repository), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new PrivateCloudDraftFactory(), new MarketplaceDraftFactory(), new ValidatorFactory(), new OpenStackApiFactory(), new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance(), $google_geo_coding_api_key, $google_geo_coding_client_id, $google_geo_coding_private_key), null, new SessionCacheService(), SapphireTransactionManager::getInstance());
     parent::__construct($manager, $draft_manager, new PrivateCloudFactory(), new PrivateCloudDraftFactory());
     // filters ...
     $this_var = $this;
     $current_user = $this->current_user;
     $repository = $this->private_cloud_repository;
     $draft_repository = $this->private_cloud_draft_repository;
     $this->addBeforeFilter('addCompanyService', 'check_add_company', function ($request) use($this_var, $current_user) {
         $data = $this_var->getJsonRequest();
         if (!$data) {
             return $this_var->serverError();
         }
         $company_id = intval(@$data['company_id']);
         if (!$current_user->isMarketPlaceAdminOfCompany(IPrivateCloudService::MarketPlaceGroupSlug, $company_id)) {
             return $this_var->permissionFailure();
         }
     });
     $this->addBeforeFilter('updateCompanyService', 'check_update_company', function ($request) use($this_var, $current_user) {
         $data = $this_var->getJsonRequest();
         if (!$data) {
             return $this_var->serverError();
         }
         if (!$current_user->isMarketPlaceAdminOfCompany(IPrivateCloudService::MarketPlaceGroupSlug, intval(@$data['company_id']))) {
             return $this_var->permissionFailure();
         }
     });
     $this->addBeforeFilter('deleteCompanyService', 'check_delete_company', function ($request) use($this_var, $current_user, $repository, $draft_repository) {
         $company_service_id = intval($request->param('COMPANY_SERVICE_ID'));
         $is_draft = intval($this->request->param('IS_DRAFT'));
         $company_service = $is_draft ? $draft_repository->getById($company_service_id) : $repository->getById($company_service_id);
         if (!$current_user->isMarketPlaceAdminOfCompany(IPrivateCloudService::MarketPlaceGroupSlug, $company_service->getCompany()->getIdentifier())) {
             return $this_var->permissionFailure();
         }
     });
 }
 public function __construct()
 {
     parent::__construct();
     // TODO: set by IOC
     $this->securityToken = new SecurityToken();
     $this->summit_repository = new SapphireSummitRepository();
     $this->summitevent_repository = new SapphireSummitEventRepository();
     $this->summitpresentation_repository = new SapphireSummitPresentationRepository();
     $this->eventfeedback_repository = new SapphireEventFeedbackRepository();
     $this->attendee_repository = new SapphireSummitAttendeeRepository();
     $this->schedule_manager = new ScheduleManager($this->summitevent_repository, $this->summitpresentation_repository, $this->eventfeedback_repository, new EventFeedbackFactory(), $this->attendee_repository, SapphireTransactionManager::getInstance());
 }
 function init()
 {
     parent::init();
     Requirements::css("themes/openstack/css/chosen.css", "screen,projection");
     Requirements::css(THIRDPARTY_DIR . '/jquery-ui-themes/smoothness/jquery-ui.css');
     Requirements::javascript(THIRDPARTY_DIR . '/jquery-ui/jquery-ui.js');
     Requirements::combine_files('marketplace_training_landing.js', array("themes/openstack/javascript/chosen.jquery.min.js", "marketplace/code/ui/frontend/js/training.directory.page.js"));
     Requirements::customScript("jQuery(document).ready(function(\$) {\n            \$('#training','.marketplace-nav').addClass('current');\n        });");
     $this->training_facade = new TrainingFacade($this, new TrainingManager(new SapphireTrainingServiceRepository(), new SapphireMarketPlaceTypeRepository(), new TrainingAddPolicy(), new TrainingShowPolicy(), new SessionCacheService(), new MarketplaceFactory(), SapphireTransactionManager::getInstance()), new SapphireCourseRepository(new MarketplaceFactory()));
     $this->course_location_query = new TrainingCoursesLocationQueryHandler();
     $this->course_level_query = new TrainingCoursesLevelQueryHandler();
     Requirements::customScript($this->GATrackingCode());
 }
 /**
  * SummitAppApi constructor.
  */
 public function __construct()
 {
     parent::__construct();
     $this->summit_repository = new SapphireSummitRepository();
     $this->summittype_repository = new SapphireSummitTypeRepository();
     $this->summit_manager = new SummitManager($this->summit_repository, new SummitFactory(), $this->summittype_repository, new SummitTypeFactory(), SapphireTransactionManager::getInstance());
     $this_var = $this;
     $this->addBeforeFilter('createSummit', 'check_create', function ($request) use($this_var) {
         if (!$this_var->checkAdminPermissions($request)) {
             return $this_var->permissionFailure();
         }
     });
 }
 function run()
 {
     set_time_limit(0);
     try {
         $manager = new NewsRequestManager(new SapphireNewsRepository(), new SapphireSubmitterRepository(), new NewsFactory(), new NewsValidationFactory(), new SapphireFileUploadService(), SapphireTransactionManager::getInstance());
         $manager->activateNews();
         $manager->removeExpired();
         $manager->archiveOld();
         return 'OK';
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         echo $ex->getMessage();
     }
 }
 function init()
 {
     parent::init();
     //managers
     $this->factory = new EventRegistrationRequestFactory();
     $this->event_registration_request_manager = new EventRegistrationRequestManager(new SapphireEventRegistrationRequestRepository(), new SapphireEventRepository(), $this->factory, new GoogleGeoCodingService(new SapphireGeoCodingQueryRepository(), new UtilFactory(), SapphireTransactionManager::getInstance()), new SapphireEventPublishingService(), new EventValidatorFactory(), SapphireTransactionManager::getInstance());
     //js files
     Requirements::css("themes/openstack/css/chosen.css", "screen,projection");
     Requirements::css(THIRDPARTY_DIR . '/jquery-ui-themes/smoothness/jquery-ui.css');
     Requirements::javascript(THIRDPARTY_DIR . '/jquery-ui/jquery-ui.js');
     Requirements::javascript(Director::protocol() . "ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js");
     Requirements::javascript(Director::protocol() . "ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.min.js");
     Requirements::combine_files('event_registration_request_page.js', array("themes/openstack/javascript/chosen.jquery.min.js", "themes/openstack/javascript/jquery.ui.datepicker.validation.package-1.0.1/jquery.ui.datepicker.validation.js", "themes/openstack/javascript/jquery.validate.custom.methods.js", 'events/js/event.registration.request.page.js'));
 }
 /**
  *
  */
 public function run()
 {
     SapphireTransactionManager::getInstance()->transaction(function () {
         $unprocessedVideos = PresentationVideo::get()->filter(['Processed' => false])->limit(50);
         if (!$unprocessedVideos->exists()) {
             return;
         }
         $summit = Summit::get_active();
         $dateUTC = $summit->convertDateFromTimeZone2UTC(SS_DateTime::now()->Rfc2822());
         $dateUTCTimestamp = strtotime($dateUTC);
         $maxAge = SummitVideoApp::config()->abandon_unprocessed_videos_after;
         $ids = [];
         foreach ($unprocessedVideos as $video) {
             $age = $dateUTCTimestamp - strtotime($video->DateUploaded);
             if ($age > $maxAge) {
                 SS_Log::log("Video {$video->Title} has been unprocessed for a long time. ({$age} seconds). It should be deleted.", SS_Log::WARN);
                 continue;
             }
             $ids[] = $video->YouTubeID;
         }
         try {
             $response = $this->api->getVideoStatusById($ids);
         } catch (\Exception $e) {
             SS_Log::log("YouTube check for status failed" . $e->getMessage(), SS_Log::ERR);
             return;
         }
         $body = $response->getBody()->getContents();
         $data = Convert::json2array($body);
         $items = $data['items'];
         if (empty($items)) {
             echo "No videos are marked as processing. Exiting.\n";
             return;
         }
         foreach ($items as $item) {
             $currentStatus = $item['status']['uploadStatus'];
             if ($currentStatus == 'processed') {
                 $video = PresentationVideo::get()->filter(['YouTubeID' => $item['id']])->first();
                 if (!$video) {
                     SS_Log::log("Tried to update processing status for " . $item['id'] . " but no PresentationVideo with that YouTubeID was found.", SS_Log::WARN);
                     continue;
                 }
                 $video->Processed = true;
                 $video->write();
                 $this->videosUpdated++;
             }
         }
         echo "{$this->videosUpdated} videos updated.\n";
     });
 }
 function run()
 {
     try {
         $batch_size = 15;
         if (isset($_GET['batch_size'])) {
             $batch_size = intval(trim(Convert::raw2sql($_GET['batch_size'])));
         }
         $manager = new JobRegistrationRequestManager(new SapphireJobRegistrationRequestRepository(), new SapphireJobRepository(), new SapphireJobAlertEmailRepository(), new JobFactory(), new JobsValidationFactory(), new SapphireJobPublishingService(), SapphireTransactionManager::getInstance());
         $manager->makeDigest($batch_size, NEW_JOBS_REGISTRATION_REQUEST_EMAIL_ALERT_TO, Director::absoluteURL('sangria/ViewJobsDetails'));
         return 'OK';
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         echo $ex->getMessage();
     }
 }
 function run()
 {
     try {
         $repository = new SapphireRssNewsRepository();
         $tx_manager = SapphireTransactionManager::getInstance();
         $rss_news_manager = new RssNewsManager($repository, $tx_manager);
         $rss_news = $rss_news_manager->getNewsItemsFromSource();
         $rss_news_manager->deleteAllNewsItems();
         $rss_news_manager->saveNewsItems($rss_news);
         return 'OK';
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         echo $ex->getMessage();
     }
 }
 function init()
 {
     parent::init();
     Requirements::css(THIRDPARTY_DIR . '/jquery-ui-themes/smoothness/jquery-ui.css');
     Requirements::javascript(THIRDPARTY_DIR . '/jquery-ui/jquery-ui.js');
     Requirements::customScript("jQuery(document).ready(function(\$) {\n            \$('#distros','.marketplace-nav').addClass('current');\n        });");
     Requirements::css("themes/openstack/css/chosen.css", "screen,projection");
     Requirements::combine_files('marketplace_distros_landing.js', array("themes/openstack/javascript/chosen.jquery.min.js", "marketplace/code/ui/frontend/js/implementation.directory.page.js"));
     Requirements::customScript($this->GATrackingCode());
     $this->distribution_repository = new SapphireDistributionRepository();
     $this->appliance_repository = new SapphireApplianceRepository();
     $this->appliance_manager = new ApplianceManager($this->appliance_repository, new SapphireMarketPlaceVideoTypeRepository(), new SapphireMarketPlaceTypeRepository(), new SapphireGuestOSTypeRepository(), new SapphireHyperVisorTypeRepository(), new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), new SapphireOpenStackReleaseSupportedApiVersionRepository(), new ApplianceAddPolicy($this->appliance_repository, new SapphireMarketPlaceTypeRepository()), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new ApplianceFactory(), new MarketplaceFactory(), new ValidatorFactory(), new OpenStackApiFactory(), null, new SessionCacheService(), SapphireTransactionManager::getInstance());
     $this->distribution_manager = new DistributionManager($this->distribution_repository, new SapphireMarketPlaceVideoTypeRepository(), new SapphireMarketPlaceTypeRepository(), new SapphireGuestOSTypeRepository(), new SapphireHyperVisorTypeRepository(), new SapphireOpenStackApiVersionRepository(), new SapphireOpenStackComponentRepository(), new SapphireOpenStackReleaseRepository(), new SapphireRegionRepository(), new SapphireSupportChannelTypeRepository(), new SapphireOpenStackReleaseSupportedApiVersionRepository(), new DistributionAddPolicy($this->distribution_repository, new SapphireMarketPlaceTypeRepository()), new CompanyServiceCanAddResourcePolicy(), new CompanyServiceCanAddVideoPolicy(), new DistributionFactory(), new MarketplaceFactory(), new ValidatorFactory(), new OpenStackApiFactory(), null, new SessionCacheService(), SapphireTransactionManager::getInstance());
     $this->implementations_services_query = new OpenStackImplementationServicesQueryHandler();
 }
 function run()
 {
     try {
         $batch_size = 1000;
         if (isset($_GET['batch_size'])) {
             $batch_size = intval(trim(Convert::raw2sql($_GET['batch_size'])));
         }
         $manager = new RevocationNotificationManager(new SapphireFoundationMemberRepository(), new SapphireFoundationMemberRevocationNotificationRepository(), new SapphireElectionRepository(), new RevocationNotificationFactory(), SapphireTransactionManager::getInstance());
         $manager->revokeIgnoredNotifications($batch_size);
         return 'OK';
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         echo $ex->getMessage();
     }
 }
 /**
  * @return void
  */
 public function run()
 {
     try {
         $batch_size = 15;
         if (isset($_GET['batch_size'])) {
             $batch_size = intval(trim(Convert::raw2sql($_GET['batch_size'])));
         }
         $manager = new DupesMembersManager(new SapphireDupesMemberRepository(), new DupeMemberMergeRequestFactory(), new DupeMemberDeleteRequestFactory(), new SapphireDupeMemberMergeRequestRepository(), new SapphireDupeMemberDeleteRequestRepository(), new SapphireDeletedDupeMemberRepository(), new DeletedDupeMemberFactory(), new SapphireCandidateNominationRepository(), new SapphireNotMyAccountActionRepository(), new NotMyAccountActionFactory(), SapphireTransactionManager::getInstance(), SapphireBulkQueryRegistry::getInstance());
         $manager->purgeActionRequests($batch_size);
         return 'OK';
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         echo $ex->getMessage();
     }
 }