Example #1
0
 function testdataAction()
 {
     $request = new Bolts_Request($this->getRequest());
     if ($this->getRequest()->isPost()) {
         $errors = array();
         $data_path = $request->data_path;
         $data_file = $data_path . "/users.dat";
         $image_dir = $data_path . "/images";
         $users_table = new Users();
         $users_roles_table = new UsersRoles();
         if ($request->has("email_domain")) {
             $email_domain = $request->email_domain;
         } else {
             $email_domain = "nowhere.com";
         }
         if (!file_exists($data_file)) {
             $errors[] = $this->_T("Data file missing. Check path.");
         } else {
             $users = unserialize(file_get_contents($data_file));
             if (!is_array($users)) {
                 $errors[] = $this->_T("Data file is corrupt or something.");
             }
         }
         if (count($errors) == 0) {
             $old_users = $users_table->fetchAll();
             foreach ($old_users as $old_user) {
                 if ($users_table->getMetaData($old_user->username, "is_test_user") == "true") {
                     $where = $users_table->getAdapter()->quoteInto("username = ?", $old_user->username);
                     $users_table->delete($where);
                     $users_roles_table->delete($where);
                 }
             }
             $count = 0;
             foreach ($users as $user) {
                 $tmp_user = array();
                 foreach ($user as $key => $value) {
                     if ($key != "avatar") {
                         $tmp_user[$key] = $value;
                     }
                 }
                 $tmp_user['email'] = strtolower($tmp_user['username'] . "@" . $email_domain);
                 $tmp_user['password'] = "******";
                 $destination_path = $users_table->getAvatarPath($user['username']);
                 $destination_filename = $users_table->getAvatarPath($user['username'], true);
                 if (!is_dir($destination_path)) {
                     mkdir($destination_path, 0777, true);
                 }
                 if (file_exists($destination_filename)) {
                     unlink($destination_filename);
                 }
                 $source_image = $image_dir . "/" . $user['avatar'];
                 copy($source_image, $destination_filename);
                 $role_data = array("username" => $tmp_user['username'], "role_id" => $tmp_user['role_id']);
                 $users_roles_table->insert($role_data);
                 unset($tmp_user['role_id']);
                 $users_table->insert($tmp_user);
                 $users_table->setMetaData($tmp_user['username'], "is_test_user", "true");
                 $save_users[] = $user;
                 $count++;
             }
             $this->view->success = "User data loaded. Created " . $count . " users.";
             Bolts_Registry::set('test_data_path', $request->data_path);
             $this->view->data_path = Bolts_Registry::get('test_data_path');
             $this->view->email_domain = $email_domain;
         } else {
             $this->view->errors = $errors;
             $this->view->data_path = Zend_Registry::get('basepath') . "/tmp/testdata";
             $this->view->email_domain = $request->email_domain;
         }
     } else {
         $this->view->data_path = Zend_Registry::get('basepath') . "/tmp/testdata";
         $this->view->email_domain = "nowhere.com";
         $this->view->notice = $this->_T("Warning: If you are reinstalling the test data, the old test data will be overwritten. Users created outside the test data should not be affected.");
     }
 }
	function editAction()
	{
		$errors = array();
		$users_table = new Users();
		$users_roles_table = new UsersRoles();
		$request = new RivetyCore_Request($this->getRequest());

		// $countries_table = new Countries();
		// $this->view->countries = $countries_table->getCountriesArray('Choose a country...');

		$roles_table = new Roles();
		$roles = $roles_table->fetchAll(NULL,"shortname ASC");
		$arRoles = array();
		foreach ($roles as $role)
		{
			if (!strpos($role->shortname,"-base"))
			{
				$arRoles[$role->id] = $role->description;
			}
		}
		$this->view->roles = $arRoles;

		$is_new = true;
		$user = array();
		if ($request->has('username'))
		{
			$obUser = $users_table->fetchByUsername($request->username);
			if (!is_null($obUser))
			{
				$is_new = false;
				$user_roles = $users_roles_table->fetchAll($users_roles_table->select()->where("username = ?", $obUser->username));
				if (count($user_roles) > 0)
				{
					$tmp_selected = array();
					foreach ($user_roles as $user_role)
					{
						$tmp_selected[] = $user_role->role_id;
					}
					$this->view->selected_roles = $tmp_selected;
				}
				$user = $obUser->toArray();
			}
		}
		$this->view->is_new = $is_new;

		if ($is_new)
		{
			// defaults for form fields
			$user['username'] = "";
			// $user['full_name'] = "";
			// $user['aboutme'] = "";
		}

		$pre_render = $this->_rivety_plugin->doFilter($this->_mca."_pre_render", array('user' => $user, 'request' => $this->_request)); // FILTER HOOK
		$user = $pre_render['user'];

		foreach ($pre_render as $key => $value)
		{
			if ($key != "user")
			{
				$this->view->$key = $value;
			}
		}

		// $tags = unserialize($user['tags']);

		if ($this->getRequest()->isPost())
		{
			$errors = array();

			$request->stripTags(array('email', 'newpassword', 'confirm'));
			// $request->stripTags(array('full_name', 'email', 'newpassword', 'confirm', 'aboutme'));
			$user['username'] = $request->username;
			$user['email'] = $request->email;
			$user['password'] = $request->newpassword;
			$user['confirm'] = $request->confirm;
			// $user['full_name'] = $request->full_name;
			// $user['birthday'] = $birthday = strtotime($request->Birthday_Day.$request->Birthday_Month.$request->Birthday_Year);
			// $user['gender'] = $request->gender;
			// $user['country_code'] = $request->country_code;
			// $user['aboutme'] = $request->aboutme;

			// validate username
			$username_validator = new Zend_Validate();
			$username_validator->addValidator(new Zend_Validate_StringLength(1, RivetyCore_Registry::get('username_length')));
			$username_validator->addValidator(new Zend_Validate_Alnum());
			if (!$username_validator->isValid($user['username']))
			{
				$show_username = "******".$user['username']."'";
				if (trim($user['username']) == "")
				{
					$show_username = "******".$this->_T("empty")."]";
				}
				$errors[] = $this->_T("%s isn't a valid username. (Between %d and %d characters, only letters and numbers)", array($show_username, 1, RivetyCore_Registry::get('username_length')));
			}
			if ($is_new)
			{
				$user_where = $users_table->getAdapter()->quoteInto('username = ?', $user['username']);
				if ($users_table->getCountByWhereClause($user_where) > 0)
				{
					$errors[] = $this->_T("The username '%s' is already in use",$user['username']);
				}
			}

			// validate email
			if (!RivetyCore_Validate::checkEmail($user['email']))
			{
				$errors[] = $this->_T("Email is not valid");
		 	}

			// check to see if email is in use already by someone else
			if ($users_table->isEmailInUse($user['email'], $user['username']))
			{
				$errors[] = $this->_T("Email already in use");
			}

			// if password isn't blank, validate it
			if ($user['password'] != "")
			{
				if (!RivetyCore_Validate::checkLength($user['password'], 6, RivetyCore_Registry::get('password_length')))
				{
					$errors[] = $this->_T("Password must be between 6 and 32 characters");
		 		}
				// if password is set, make sure it matches confirm
				if ($user['password'] != $user['confirm'])
				{
					$errors[] = $this->_T("Passwords don't match");
				}
			}

			// // convert birthday_ts to mysql date
			// $birthday = date("Y-m-d H:i:s", $user['birthday']);

			$params = array(
				'request' => $request,
				'user' => $user,
				'errors' => $errors,
			);

			// // upload new avatar image if present
			// if (array_key_exists('filedata', $_FILES))
			// {
			// 	if ($_FILES['filedata']['tmp_name'] != '')
			// 	{
			// 		$destination_path = RivetyCore_Registry::get('upload_path') . "/" . $user['username'] . "/original";
			// 		if (!is_dir($destination_path))
			// 		{
			// 			mkdir($destination_path, 0777, true);
			// 			RivetyCore_Log::report("Creating user folder at " . $destination_path, null, Zend_Log::DEBUG);
			// 		}
			// 		if (file_exists($destination_path . "/avatar"))
			// 		{
			// 			unlink($destination_path . "/avatar");
			// 			RivetyCore_Log::report("Deleted existing user avatar from " . $destination_path, null, Zend_Log::DEBUG);
			// 		}
			// 		else
			// 		{
			// 			RivetyCore_Log::report("User avatar did not exist in " . $destination_path, null, Zend_Log::DEBUG);
			// 		}
			// 		move_uploaded_file($_FILES['filedata']['tmp_name'], $destination_path . "/avatar");
			// 		Users::clearUserCache($user['username']);
			// 		RivetyCore_Log::report("User avatar uploaded to " . $destination_path, null, Zend_Log::DEBUG);
			// 		$params['user']['hasnewfile'] = true;
			// 	}
			// 	else
			// 	{
			// 		$params['user']['hasnewfile'] = false;
			// 	}
			// }

			$additional = $this->_rivety_plugin->doFilter($this->_mca . "_pre_save", $params); // FILTER HOOK
			$errors = $additional['errors'];
			$user = $additional['user'];

			$users_roles_table->delete($users_roles_table->getAdapter()->quoteInto("username = ?", $user['username']));
			foreach ($request->role_ids as $role_id)
			{
				$role_data = array("username" => $user['username'], "role_id" => $role_id);
				$users_roles_table->insert($role_data);
			}

			if (count($errors) == 0)
			{
				// $user['birthday'] = $birthday;
				// $user['aboutme'] = nl2br($user['aboutme']);
				$user['last_modified_on'] = date(DB_DATETIME_FORMAT);

				// This is a hold-over value from the form.
				unset($user['confirm']);

				if ($user['password'] != "")
				{
					#$data['password'] = $user['password'];
				}
				else
				{
					unset($user['password']);
				}

				$screen_alert_message = 'The user was created succcessfully.';
				if ($is_new)
				{
					$filter_hook_params = array(
						'request' => $request,
						'user' => $user,
						'errors' => $errors,
					);
					$additional1 = $this->_rivety_plugin->doFilter($this->_mca, $filter_hook_params); // FILTER HOOK
					$errors = $additional1['errors'];
					$user = $additional1['user'];
					// $data['username'] = $user['username'];
					// $data['created_on'] = date(DB_DATETIME_FORMAT);
					$user['created_on'] = date(DB_DATETIME_FORMAT);
					$users_table->insert($user);
				}
				else
				{
					$screen_alert_message = 'Changes to the user were saved succcessfully.';
					$where = $users_table->getAdapter()->quoteInto('username = ?', $user['username']);
					// $users_table->update($data, $where);
					$users_table->update($user, $where);
				}
				$this->screenAlertQueued('success', $screen_alert_message, date(DB_DATETIME_FORMAT, time() + 30), 'default_useradmin_index');
				$this->_redirect('/default/useradmin/index/');
			}
			else
			{
				$this->view->errors = $errors;
			}
		}
		$this->view->end_year = -(RivetyCore_Registry::get('minimum_registration_age'));
		// $this->view->genders = RivetyCore_Common::getGenderArray();
		// $user['aboutme'] = RivetyCore_Common::br2nl($user['aboutme']);
		$this->view->user = $user;
	}