public function __construct(GcrMhrUser $user, $start_ts = 0, $end_ts = false, $include_disabled = true, $role_id = 5) { $this->include_disabled = $include_disabled; $visible = $include_disabled ? false : 1; $this->user = $user; $enrolments = $user->getEnrolments(array(), $role_id, $visible); parent::__construct($enrolments, $start_ts, $end_ts); }
public static function deleteUser(GcrMhrUser $mhr_user_deleted) { global $CFG; $mhr_user_obj = $mhr_user_deleted->getObject(); $username_array = explode('.', $mhr_user_obj->username); $mhr_user_obj->username = $username_array[0]; $mhr_user = new GcrMhrUser($mhr_user_obj, $mhr_user_deleted->getApp()); foreach ($CFG->current_app->getMnetEschools() as $eschool) { $mdl_user = $mhr_user->getUserOnEschool($eschool); if ($mdl_user) { $params = array($mdl_user->getObject()->id); $result = self::executeWebServiceRequest($eschool, 'moodle_user_delete_users', $params); } } }
public static function userHasRole($user) { $user_obj = $user->getObject(); $app = $user->getApp(); $flag = false; $mhr_user = $user->getUserOnInstitution(); if ($mhr_user && $user_obj) { if ($app->isHome() || $mhr_user->getObject()->staff == 1) { $home = GcrInstitutionTable::getHome(); $home_user_obj = $home->selectFromMhrTable('usr', 'username', $user_obj->username, true); if ($home_user_obj) { $home_user = new GcrMhrUser($home_user_obj, $home); $mhr_usr_institution = $home_user->getMhrUsrInstitutionRecords($home->getMhrInstitution()); if ($mhr_usr_institution) { $flag = $mhr_usr_institution->staff == 1; } } } } return $flag; }
/** * Created by: Ron Stewart * Date: 9/8/2011 * This function was designed to set all non-siteadmin accounts to not receive emails (internal) * This was used to prevent spamming where bulk uploaded users were assigned random email * addresses at globalclassroom.us */ public function executeTurnOffEmails(sfWebRequest $request) { global $CFG; $this->checkAuthorization(); $this->forward404Unless($request->isMethod(sfRequest::POST)); $form = $request->getPostParameters(); if ($institution = Doctrine::getTable('GcrInstitution')->find($form['institution'])) { $i = 0; foreach ($institution->selectFromMhrTable('usr') as $mhr_user_obj) { $mhr_user = new GcrMhrUser($mhr_user_obj, $institution); if (!$mhr_user->getRoleManager()->hasPrivilege('EschoolStaff') && $mhr_user_obj->id != 0) { $filters = array(); $filters[] = new GcrDatabaseQueryFilter('field', '=', 'maildisabled'); $filters[] = new GcrDatabaseQueryFilter('usr', '=', $mhr_user_obj->id); $q = new GcrDatabaseQuery($institution, 'usr_account_preference', 'select * from', $filters); if ($q->executeQuery(true)) { $institution->updateMhrTable('usr_account_preference', array('value' => '1'), array('usr' => $mhr_user_obj->id, 'field' => 'maildisabled')); } else { $institution->insertIntoMhrTable('usr_account_preference', array('usr' => $mhr_user_obj->id, 'field' => 'maildisabled', 'value' => '1')); } $i++; } } $_SESSION['adminEschoolActionMessage'] = $institution->getFullName() . ' (' . $institution->getShortName() . '): ' . $i . ' users had emailing turned off'; } else { $CFG->current_app->gcError('Invalid Institution Id: ' . $form['institution'], 'gcdatabaseerror'); } $this->redirect($CFG->current_app->getUrl() . '/admin/eschool'); }
function remove_submit(Pieform $form, $values) { global $CFG; $eschool = Doctrine::getTable('GcrEschool')->findOneById($values['eschoolid']); if (!$eschool || $eschool->getInstitution()->getShortName() != $CFG->current_app->getShortName()) { $CFG->current_app->gcError('Invalid eschool id ' . $values['eschoolid'], 'gcdatabaseerror'); } foreach ($values['users'] as $user_id) { $mhr_user_obj = $CFG->current_app->selectFromMhrTable('usr', 'id', $user_id, true); $mhr_user = new GcrMhrUser($mhr_user_obj, $eschool); $eclassroom = $mhr_user->getEclassroom($eschool); if ($eclassroom) { $eclassroom->setSuspended(true); $eclassroom->save(); } } redirect("/artefact/eschooladmin/eclassroom.php?eschoolid=" . $values['eschoolid']); }
public function executeCreate(sfWebRequest $request) { global $CFG; // GC_NOTE 2: At this time, we are not allowing anyone outside of GC to create new platforms // If this should change, remove this security check. All code to support user creation is in place if (!$CFG->current_app->hasPrivilege('GCUser')) { $CFG->current_app->gcError('Non GCUser attempted access to institution/create', 'gcpageaccessdenied'); } // END GC_NOTE 2 $form = $request->getPostParameters(); $this->setTrialApplicationToVerify($form['aid']); if (!$form['verify'] == $this->application->getVerifyHash()) { global $CFG; $CFG->current_app->gcError('Incorrect Verify Hash ' . $form['verify'] . ' for application id ' . $form['aid']); } $this->institution_form = new GcrInstitutionForm(); if (!$this->formErrors) { $this->formErrors = array(); } // validate form values $this->validateInstitutionShortName($form['short_name']); if ($form['short_name'] == $form['default_eschool_id']) { $this->formErrors['short_nameUnique'] = 'Short Name Home and Short Name Courses cannot be identical'; } $this->validateEschoolShortName($form['default_eschool_id']); $this->validateInstitutionType($form['institution_type']); // make a person object to insert in to the person table for contact 2 $person2Object = new GcrPerson(); $person2Object->setFirstName($form['first_name_2']); $person2Object->setLastName($form['last_name_2']); $person2Object->setAddress($this->application->getAddress()); $person2Object->setPhone1($form['phone1_2']); $person2Object->setPhone2($form['phone2_2']); $person2Object->setEmail($form['email_2']); // try to add the contact 2 to the person table $person2Object->save(); // make an array of values to validate as the institution form $institutionFields = array('id' => '', 'full_name' => $form['full_name'], 'short_name' => strtolower($form['short_name']), 'default_eschool_id' => strtolower($form['default_eschool_id']), 'external_url' => $form['external_url'], 'suspended' => '', 'contact1' => $this->application->getContact(), 'contact2' => $person2Object->getId(), 'address' => $this->application->getAddress(), 'institution_type' => $form['institution_type'], 'creator_id' => -1, 'admin_password' => '', 'verify' => $form['verify'], 'creation_date' => time(), 'visible' => '1', 'first_name_2' => $form['first_name_2'], 'last_name_2' => $form['last_name_2'], 'phone1_2' => $form['phone1_2'], 'phone2_2' => $form['phone2_2'], 'email_2' => $form['email_2'], 'aid' => $form['aid'], 'admin_password_user' => $form['admin_password_user'], 'admin_password_verify' => $form['admin_password_verify'], 'admin_username' => $form['admin_username'], '_csrf_token' => $form['_csrf_token']); // try to add the eschool data to the eschool table if ($trial_application_record = $this->processForm($institutionFields, $this->institution_form, $request->getFiles())) { $this->institution = $trial_application_record; } else { $this->formErrors['institutionRecord'] = 'Some Field(s) Have Missing or Incorrect Data'; } if (!($this->formErrors['admin_username'] = GcrInstitutionTable::verifyUsername($form['admin_username']))) { unset($this->formErrors['admin_username']); } if ($form['admin_password_user'] != $form['admin_password_verify']) { $this->formErrors['admin_password_user'] = '******'; } else { if (!($this->formErrors['admin_password_user'] = GcrInstitutionTable::verifyPassword($form['admin_password_user']))) { unset($this->formErrors['admin_password_user']); } } // If the institution record was saved, we send an email to verify the user before creating the new institution if (count($this->formErrors) == 0) { $this->institution->create(array('username' => $form['admin_username'], 'password' => $form['admin_password_user'])); if ($CFG->current_app->hasPrivilege('GCUser')) { $current_user = $CFG->current_app->getCurrentUser(); if ($form['admin_username'] == $current_user->getObject()->username) { $owner_person = $this->institution->getPersonObject(); if ($owner_person->getEmail() == $current_user->getObject()->email) { // give a logged in site admin the same privileges on the new mahara if ($mhr_user_obj = $this->institution->selectFromMhrTable('usr', 'username', $form['admin_username'], true)) { $admin_user = new GcrMhrUser($mhr_user_obj, $this->institution); $admin_user->setAdminRole(); } } } } // make a trial object to save this new eschool trial $eschool = $this->institution->getDefaultEschool(); $this->institution->createNewTrial(); // send emails to new eschool owner and to us $this->emailNewEschoolOwner(); $this->emailNewEschoolGC($owner_credentials); $this->application->delete(); if (!$CFG->current_app->hasPrivilege('GCUser') || isset($owner_person)) { // Send user to the newly created institution, auto-logging them in. $this->redirect($this->institution->setupAutoLogin($form['admin_username'], $form['admin_password_user'], 600)); } else { // send GC User to new platform via the gotoplatform tool. $this->redirect($CFG->current_app->getAppUrl() . 'local/platform_access.php?id=' . $this->institution->getShortName()); } } else { if ($this->institution) { $this->institution->delete(); } $person2Object->delete(); $this->getResponse()->setTitle('Create a Trial Platform'); $this->setTemplate('newInstitutionForm'); } }
$admin = 0; if ($role_manager->hasPrivilege('GCUser')) { // we only give site admin privilege to those on home who are // institution admins, while everyone gets the eschool admin role $admin = 1; } $temp_password = GcrEschoolTable::generateRandomString(12); $new_user_credentials = $institution->buildUserCredentials($current_user_obj->username, $temp_password); $params = array('id' => gcr::autoNumber, 'password' => $new_user_credentials->password, 'salt' => $new_user_credentials->salt, 'active' => 1, 'admin' => $admin, 'firstname' => $current_user_obj->firstname, 'lastname' => $current_user_obj->lastname, 'email' => $current_user_obj->email, 'quota' => 52428800, 'passwordchange' => 1, 'username' => $current_user_obj->username); $mhr_user = $institution->createUser($params); if ($mhr_user) { $mhr_user_obj = $mhr_user->getObject(); $url = $institution->setupAutoLogin($current_user_obj->username, $temp_password, 60); } } else { $mhr_user = new GcrMhrUser($mhr_user_obj, $institution); } // Add user to home mhr_institution as an admin if ($current_user_obj->email == $mhr_user_obj->email) { $user_app = $mhr_user->getApp(); $mhr_usr_institution = $mhr_user->getMhrUsrInstitutionRecords($user_app->getMhrInstitution()); if (!$mhr_usr_institution) { $mhr_user->addMhrInstitutionMembership(); $user_app->updateMhrTable('usr_institution', array('admin' => '1'), array('usr' => $mhr_user_obj->id, 'institution' => gcr::maharaInstitutionName)); } } if (!$url) { $url = $app->getAppUrl(); if ($app->isMoodle()) { $url .= '?transfer=' . $institution->getShortName(); }
function migrate_submit(Pieform $form, $values) { global $CFG; $eschool = Doctrine::getTable('GcrEschool')->findOneById($values['eschoolid']); ArtefactTypeEschooladmin::authorize_eschool($eschool); foreach ($values['users'] as $user) { $mhr_user_obj = $CFG->current_app->selectFromMhrTable('usr', 'username', $user, true); $mhr_user = new GcrMhrUser($mhr_user_obj, $CFG->current_app); $mhr_user->addAccess($eschool); } redirect("/artefact/eschooladmin/migrateusers.php?eschoolid=" . $values['eschoolid']); }
public function executeDoManualClassroom(sfWebRequest $request) { $this->authorizeUser(); global $CFG; $form = $request->getPostParameters(); if ($form['id'] != '') { // Edit of existing purchase $purchase = $this->getManualPurchase($form['id'], 'classroom'); $institution = $this->eschool->getInstitution(); if (!($mhr_user = $institution->selectFromMhrTable('usr', 'id', $form['purchase_user_field'], true))) { $CFG->current_app->gcError('Invalid user ID ' . $form['purchase_user_field'], 'gcdatabaseerror'); } $manual_purchase_form = new GcrPurchaseClassroomManualForm($purchase, array('eschool' => $institution)); $form['user_id'] = $mhr_user->id; $form['amount'] = $form['amount_field']; $form['gc_fee'] = $this->eschool->getGcFeeClassroom(); $form['bill_cycle'] = GcrPurchaseTable::convertDatetoTimestamp($form['bill_cycle']); $form['trans_time'] = GcrPurchaseTable::convertDatetoTimestamp($form['trans_time']); $manual_purchase_form->bind($form); if ($manual_purchase_form->isValid()) { $purchase = $manual_purchase_form->save(); $purchase->updateRelatedAccounting(); $this->redirect($CFG->current_app->getUrl() . '/account/view?eschool=' . $institution->getShortName()); } } else { // New purchase if ($short_name = $form['purchase_type_eschool_field']) { $this->eschool = GcrEschoolTable::getEschool($short_name); } else { $CFG->current_app->gcError('eSchool Parameter Missing', 'gcdatabaseerror'); } $institution = $this->eschool->getInstitution(); $manual_purchase_form = new GcrPurchaseClassroomManualForm(array(), array('eschool' => $institution)); $form['purchase_type'] = 'classroom_manual'; $form['purchase_type_description'] = 'Manual eClassroom Transaction'; $form['purchase_type_quantity'] = 1; $form['purchase_type_id'] = $this->eschool->getShortName(); $form['user_id'] = $form['purchase_user_field']; $form['purchase_type_eschool_id'] = $form['purchase_type_eschool_field']; $form['user_institution_id'] = $institution->getShortName(); $form['amount'] = $form['amount_field']; $form['gc_fee'] = $this->eschool->getGcFeeClassroom(); $form['owner_fee'] = 0; $form['seller_id'] = 0; $form['bill_cycle'] = GcrPurchaseTable::convertDatetoTimestamp($form['bill_cycle']); $form['trans_time'] = GcrPurchaseTable::convertDatetoTimestamp($form['trans_time']); $manual_purchase_form->bind($form); if ($manual_purchase_form->isValid()) { if (!($mhr_user = $institution->selectFromMhrTable('usr', 'id', $form['purchase_user_field'], true))) { $CFG->current_app->gcError('Invalid user ID ' . $form['purchase_user_field'], 'gcdatabaseerror'); } $mhr_user = new GcrMhrUser($mhr_user, $institution); $purchase = $manual_purchase_form->save(); $purchase->assignSeller(); if (!$mhr_user->hasEclassroom($this->eschool)) { $institution->createEclassroom($mhr_user, $this->eschool); } $purchase->updateRelatedAccounting(); $this->redirect($CFG->current_app->getUrl() . '/account/view?eschool=' . $institution->getShortName()); } } $this->classroom_form = $manual_purchase_form; $this->setTemplate('manualClassroom'); }
$USER->set_download_file(generate_csv($users, $csvfields), 'users.csv', 'text/csv'); $csv = true; } else { if ($selected == 'coursehistory') { global $CFG; $smarty = smarty_core(); $smarty->assign_by_ref('users', $users); $smarty->assign_by_ref('USER', $USER); $current_user = $CFG->current_app->getCurrentUser(); $role_manager = $current_user->getRoleManager(); $gc_admin = $role_manager->hasRole('GCUser'); $owner = $role_manager->hasRole('EschoolAdmin'); $csv_array = array(); if ($gc_admin || $owner) { foreach ($users as $user) { $mhr_user = new GcrMhrUser($user, $CFG->current_app); $course_history_table = new GcrUserCourseHistoryWithEnrolTable($mhr_user, 0, time(), $gc_admin, $owner, true, true); $table = $course_history_table->getTable(); $columns = $table->getColumns(); $columns[$table->getColumnCount() - 4]->setHidden(true); $table_array = $table->getArray(); foreach ($table_array as $row) { $csv_record = array(); $csv_record['username'] = $mhr_user->getObject()->username; $csv_record['start_date'] = substr($row[0], strpos($row[0], '</span>') + 7); $index = strpos($row[1], '>') + 1; $csv_record['course'] = substr($row[1], $index, strpos($row[1], '<', $index) - $index); $csv_record['enrol_date'] = $row[6]; $csv_record['catalog'] = $row[7]; $csv_record['platform'] = $row[8]; $csv_record['instructor'] = $row[2];
public function getAuthInstance() { if ($this->isLoggedIn()) { return parent::getAuthInstance(); } }