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');
 }
Example #10
0
    $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();
     }
 }