function SaveProfile($data, $form) { //Check for a logged in member if ($CurrentMember = Member::currentUser()) { //Get InfusionSoft Api $app = $this->getInfusionSoftApi(); $returnFields = array('Id'); $conInfo = $app->findByEmail($data['Email'], $returnFields); //Check for another member with the same email address if ($member = DataObject::get_one("Member", "Email = '" . Convert::raw2sql($data['Email']) . "' AND ID != " . $CurrentMember->ID)) { $form->addErrorMessage("Email", 'Sorry, that Email address already exists.', "bad"); Session::set("FormInfo.Form_EditProfileForm.data", $data); return $this->redirectBack(); } elseif ($CurrentMember->Email != $data['Email'] && !empty($conInfo)) { $form->addErrorMessage("Email", 'Sorry, that Email address already exists.', "bad"); Session::set("FormInfo.Form_EditProfileForm.data", $data); return $this->redirectBack(); } else { //Update the InfusionSoft contact details $isConID = $CurrentMember->ISContactID; $conDat = array('FirstName' => $data['FirstName'], 'LastName' => $data['Surname'], 'Email' => $data['Email']); $app->updateCon($isConID, $conDat); //Update the member on site $form->saveInto($CurrentMember); $CurrentMember->write(); $this->setMessage('Success', 'Your profile has been saved!'); return $this->redirectBack(); } } else { return Security::PermissionFailure($this->controller, 'You must <a href="register">registered</a> and logged in to edit your profile:'); } }
/** * Send email to subscribers, notifying them the thread has been created or post added. */ public function notifySubscribers() { // all members id except current user $member_id = Member::currentUserID(); $list = DataObject::get("Forum_Subscribers", "\"ForumID\" = '" . $this->owner->ForumID . "' AND \"MemberID\" != '{$member_id}'"); if ($list) { foreach ($list as $obj) { $SQL_id = Convert::raw2sql((int) $obj->MemberID); // Get the members details $member = DataObject::get_one("Member", "\"Member\".\"ID\" = '{$SQL_id}'"); if ($member) { //error_log("email sent ".$member->Email); $type = $obj->Type; switch ($type) { // send all email notification case 'all': $this->createEmail($member); break; // send new thread only email notification // send new thread only email notification case 'thread': //if($this->owner->isFirstPost()){ $this->createEmail($member); //} break; // // default: break; } } } } }
public function testAddressBookWithReadonlyFieldForCountry() { $member = $this->objFromFixture("Member", "joebloggs"); $this->logInAs($member); $this->controller->init(); //reinit to connect up member // setup a single-country site $siteconfig = DataObject::get_one('SiteConfig'); $siteconfig->AllowedCountries = "NZ"; $siteconfig->write(); $singlecountry = SiteConfig::current_site_config(); $this->assertEquals("NZ", $singlecountry->getSingleCountry(), "Confirm that the website is setup as a single country site"); // Open the Address Book page to test form submission with a readonly field $page = $this->get("account/addressbook/"); // goto address book page $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $this->assertContains("Form_CreateAddressForm_Country_readonly", $page->getBody(), "The Country field is readonly"); $this->assertNotContains("<option value=\"NZ\">New Zealand</option>", $page->getBody(), "Dropdown field is not shown"); // Create an address $data = array("Address" => "234 Hereford Street", "City" => "Christchurch", "State" => "Canterbury", "PostalCode" => "8011"); $this->submitForm("Form_CreateAddressForm", "action_saveaddress", $data); $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $nz_address = Address::get()->filter('PostalCode', '8011')->sort('ID')->last(); $this->assertEquals("NZ", $nz_address->Country, "New address successfully saved; even with a Country readonly field in the form"); $this->assertEquals("234 Hereford Street", $nz_address->Address, "Ensure that the Address is 234 Hereford Street"); }
function testOneToManyAssociationWithDecorator() { // Fails in RestfulServerTest // Error: Object::__call() Method 'RelatedObjects' not found in class 'RestfulServerTest_Comment' $contact = new DataObjectDecoratorTest_Member(); $contact->Website = "http://www.example.com"; $object = new DataObjectDecoratorTest_RelatedObject(); $object->FieldOne = "Lorem ipsum dolor"; $object->FieldTwo = "Random notes"; // The following code doesn't currently work: // $contact->RelatedObjects()->add($object); // $contact->write(); // Instead we have to do the following $contact->write(); $object->ContactID = $contact->ID; $object->write(); unset($contact); $contact = DataObject::get_one("DataObjectDecoratorTest_Member", "Website='http://www.example.com'"); $this->assertType('DataObjectDecoratorTest_RelatedObject', $contact->RelatedObjects()->First()); $this->assertEquals("Lorem ipsum dolor", $contact->RelatedObjects()->First()->FieldOne); $this->assertEquals("Random notes", $contact->RelatedObjects()->First()->FieldTwo); $contact->delete(); }
/** * Get the current site's ModuleManager, and creates a new one through * {@link make_module_manager()} if none is found. * * @return ModuleManager */ public static function current_module_manager() { if ($moduleManager = DataObject::get_one('ModuleManager')) { return $moduleManager; } return self::make_module_manager(); }
/** * Get the order via url 'ID' or form submission 'OrderID'. * It will check for permission based on session id or member id. * * @return the order */ public function orderfromid($extrafilter = null) { $orderid = Director::urlParam('ID'); if (!$orderid) { $orderid = isset($_POST['OrderID']) ? $_POST['OrderID'] : null; } if (!is_numeric($orderid)) { return null; } $order = null; $filter = $this->orderfilter(); if ($extrafilter) { $filter .= " AND {$extrafilter}"; } $idfilter = $orderid ? " AND \"ID\" = {$orderid}" : ""; //security filter to only allow viewing orders associated with this session, or member id $order = DataObject::get_one('Order', "\"Status\" NOT IN('Cart','AdminCancelled','MemberCancelled') AND " . $filter . $idfilter, true, "Created DESC"); //if no id, then get first of latest orders for member or session id? /* //TODO: permission message on failure if(!$order){ //order doesn't exist, or don't have permission $this->setSessionMessage($reason,'bad'); } */ return $order; }
/** * Find the given folder or create it both as {@link Folder} database records * and on the filesystem. If necessary, creates parent folders as well. * * @param $folderPath string Absolute or relative path to the file. * If path is relative, its interpreted relative to the "assets/" directory. * @return Folder */ public static function find_or_make($folderPath) { // Create assets directory, if it is missing if (!file_exists(ASSETS_PATH)) { Filesystem::makeFolder(ASSETS_PATH); } $folderPath = trim(Director::makeRelative($folderPath)); // replace leading and trailing slashes $folderPath = preg_replace('/^\\/?(.*)\\/?$/', '$1', $folderPath); $parts = explode("/", $folderPath); $parentID = 0; $item = null; foreach ($parts as $part) { if (!$part) { continue; } // happens for paths with a trailing slash $item = DataObject::get_one("Folder", sprintf("\"Name\" = '%s' AND \"ParentID\" = %d", Convert::raw2sql($part), (int) $parentID)); if (!$item) { $item = new Folder(); $item->ParentID = $parentID; $item->Name = $part; $item->Title = $part; $item->write(); } if (!file_exists($item->getFullPath())) { Filesystem::makeFolder($item->getFullPath()); } $parentID = $item->ID; } return $item; }
/** * Check for default group, and if it doesn't exist, create it * Should be run under "requireDefaultRecords" * @param string $code * @param string $title * @param string $parent * @param array $permissions */ public static function default_group($code, $title, $parentCode = null, $permissions = array()) { $group = null; $action = null; if (!DataObject::get_one('Group', "Code = '" . $code . "'")) { $action = 'create'; $group = new Group(); } else { $action = 'update'; $group = DataObject::get_one('Group', "Code = '" . $code . "'"); } $group->Title = $title; $group->Code = $code; if ($parentCode) { $parentObj = DataObject::get_one("Group", "Code = '" . $parentCode . "'"); $group->ParentID = $parentObj->ID; } $group->write(); if (!empty($permissions)) { foreach ($permissions as $p) { Permission::grant($group->ID, $p); } } if ($action == 'create') { DB::alteration_message('Group ' . $title . ' (' . $code . ') has been created.', "created"); } if ($action == 'update') { DB::alteration_message('Group ' . $title . ' (' . $code . ') has been updated.', "updated"); } return $group; }
public function testMultipleRowInsert() { $query = SQLInsert::create('"SQLInsertTestBase"'); $query->addRow(array('"Title"' => 'First Object', '"Age"' => 10, '"Description"' => 'First the worst')); $query->addRow(array('"Title"' => 'Second object', '"Age"' => 12)); $sql = $query->sql($parameters); // Only test this case if using the default query builder if (get_class(DB::get_conn()->getQueryBuilder()) === 'DBQueryBuilder') { $this->assertSQLEquals('INSERT INTO "SQLInsertTestBase" ("Title", "Age", "Description") VALUES (?, ?, ?), (?, ?, ?)', $sql); } $this->assertEquals(array('First Object', 10, 'First the worst', 'Second object', 12, null), $parameters); $query->execute(); $this->assertEquals(2, DB::affected_rows()); // Check inserted objects are correct $firstObject = DataObject::get_one('SQLInsertTestBase', array('"Title"' => 'First Object'), false); $this->assertNotEmpty($firstObject); $this->assertEquals($firstObject->Title, 'First Object'); $this->assertEquals($firstObject->Age, 10); $this->assertEquals($firstObject->Description, 'First the worst'); $secondObject = DataObject::get_one('SQLInsertTestBase', array('"Title"' => 'Second object'), false); $this->assertNotEmpty($secondObject); $this->assertEquals($secondObject->Title, 'Second object'); $this->assertEquals($secondObject->Age, 12); $this->assertEmpty($secondObject->Description); }
function run($request) { $orderStatusLogClassName = "OrderStatusLog"; $submittedOrderStatusLogClassName = EcommerceConfig::get("OrderStatusLog", "order_status_log_class_used_for_submitting_order"); if ($submittedOrderStatusLogClassName) { $sampleSubmittedStatusLog = DataObject::get_one($submittedOrderStatusLogClassName); if ($sampleSubmittedStatusLog) { $lastOrderStep = DataObject::get_one("OrderStep", "", "\"Sort\" DESC"); if ($lastOrderStep) { $joinSQL = "INNER JOIN \"{$orderStatusLogClassName}\" ON \"{$orderStatusLogClassName}\".\"OrderID\" = \"Order\".\"ID\""; $whereSQL = "WHERE \"StatusID\" <> " . $lastOrderStep->ID . " AND \"{$orderStatusLogClassName}\".ClassName = '{$submittedOrderStatusLogClassName}'"; $count = DB::query("\r\n\t\t\t\t\t\tSELECT COUNT (\"Order\".\"ID\")\r\n\t\t\t\t\t\tFROM \"Order\"\r\n\t\t\t\t\t\t{$joinSQL}\r\n\t\t\t\t\t\t{$whereSQL}\r\n\t\t\t\t\t")->value(); $do = DB::query("\r\n\t\t\t\t\t\tUPDATE \"Order\"\r\n\t\t\t\t\t\t{$joinSQL}\r\n\t\t\t\t\t\tSET \"StatusID\" = " . $lastOrderStep->ID . "\r\n\t\t\t\t\t\t{$whereSQL}\r\n\t\t\t\t\t"); if ($count) { DB::alteration_message("NOTE: {$count} records were updated.", "created"); } else { DB::alteration_message("No records were updated."); } } else { DB::alteration_message("Could not find the last order step.", "deleted"); } } else { DB::alteration_message("Could not find any submitted order logs.", "deleted"); } } else { DB::alteration_message("Could not find a class name for submitted orders.", "deleted"); } }
public function transform($item, $parentObject, $duplicateStrategy) { $folderChildren = $item->stageChildren(); $newFolder = new Folder(); $parentId = $parentObject ? $parentObject->ID : 0; $existing = DataObject::get_one('File', '"ParentID" = \'' . Convert::raw2sql($parentId) . '\' and "Name" = \'' . Convert::raw2sql($item->Title) . '\''); if ($existing && $duplicateStrategy == ExternalContentTransformer::DS_SKIP) { // just return the existing children return new TransformResult($existing, $folderChildren); } else { if ($existing && $duplicateStrategy == ExternalContentTransformer::DS_OVERWRITE) { $newFolder = $existing; } } $newFolder->Name = $item->Title; $newFolder->Title = $item->Title; $newFolder->MenuTitle = $item->Title; $newFolder->ParentID = $parentObject->ID; $newFolder->Sort = 0; $newFolder->write(); if (!file_exists($newFolder->getFullPath())) { mkdir($newFolder->getFullPath(), Filesystem::$folder_create_mask); } return new TransformResult($newFolder, $folderChildren); }
function doRegister($data, Form $form) { //Check for existing member email address if ($member = DataObject::get_one("Member", "`Email` = '" . Convert::raw2sql($data['Email']) . "'")) { //Set error message $form->sessionMessage($data['Email'] . ". Sorry, that email address already exists. Please choose another.", 'bad'); //Return back to form return $this->redirectBack(); //return Director::redirectBack(); } else { //Otherwise create new member and log them in $Member = new Member(); $form->saveInto($Member); $Member->write(); $Member->login(); //Find or create the 'user' group if (!($userGroup = DataObject::get_one('Group', "Code = 'users'"))) { $userGroup = new Group(); $userGroup->Code = "users"; $userGroup->Title = "users"; $userGroup->Write(); $userGroup->Members()->add($Member); } //Add member to user group $userGroup->Members()->add($Member); //Get profile page if ($ProfilePage = DataObject::get_one('EditProfilePage')) { //echo "profile page exists"; //Redirect to profile page with success message return $this->redirect($ProfilePage->Link()); } } }
/** * Tries to logon using the credentials in the SilverStripe database * * @access public * * @param string $source Authentication source to be used * @param string $external_uid The ID entered * @param string $external_passwd The password of the user * * @return boolean True if the authentication was a success, false * otherwise */ public function Authenticate($RAW_source, $RAW_external_uid, $RAW_external_passwd) { $SQL_identity = Convert::raw2sql($RAW_external_uid); // Default login (see Security::setDefaultAdmin()) if (Security::check_default_admin($RAW_external_uid, $RAW_external_passwd)) { ExternalAuthenticator::AuthLog($RAW_external_uid . '.sstripe - Logging on with an Administrator account'); $member = Security::findAnAdministrator(); } else { $SQL_source = Convert::raw2sql($RAW_source); ExternalAuthenticator::AuthLog($RAW_external_uid . '.sstripe - Searching for user with source ' . $SQL_source . ' in database'); $member = DataObject::get_one("Member", "\"Member\".\"External_UserID\" = '{$SQL_identity}'" . " AND \"Member\".\"External_SourceID\" = '{$SQL_source}'" . " AND \"Password\" IS NOT NULL"); if ($member) { ExternalAuthenticator::AuthLog($RAW_external_uid . '.sstripe - User was found in database'); if ($member->checkPassword($RAW_external_passwd) == false) { ExternalAuthenticator::AuthLog($RAW_external_uid . '.sstripe - Password authentication failed'); $member = null; } else { ExternalAuthenticator::AuthLog($RAW_external_uid . '.sstripe - Password authentication succeeded'); } } else { ExternalAuthenticator::AuthLog($RAW_external_uid . '.sstripe - User was NOT found in database'); } } if ($member) { return true; } else { ExternalAuthenticator::setAuthMessage(_t('ExternalAuthenticator.Failed')); return false; } }
public function transform($item, $parentObject, $duplicateStrategy) { $newFile = $this->getTypeForFile($item->Name); $folderPath = $parentObject->getRelativePath(); $parentId = $parentObject ? $parentObject->ID : 0; $filter = 'ParentID = \'' . Convert::raw2sql($parentId) . '\' and Title = \'' . Convert::raw2sql($item->Name) . '\''; $existing = DataObject::get_one('File', $filter); if ($existing && $duplicateStrategy == ExternalContentTransformer::DS_SKIP) { // just return the existing children return new TransformResult($existing, null); } else { if ($existing && $duplicateStrategy == ExternalContentTransformer::DS_OVERWRITE) { $newFile = $existing; } } // $newFile->Name = $item->Name; $newFile->Title = $item->Name; $newFile->MenuTitle = $item->Name; // $size = filesize($item->FilePath); $details = array('size' => $size, 'name' => $item->Name, 'tmp_name' => $item->FilePath); $upload = new FileLoader(); $folderPath = trim(substr($folderPath, strpos($folderPath, '/')), '/'); try { $upload->loadIntoFile($details, $newFile, $folderPath); } catch (ValidationException $ve) { // ignore for now, there should really be a proper error reporting mechanism though... SS_Log::log("File import failed: " . $ve->getMessage(), SS_Log::WARN); } return new TransformResult($newFile, null); }
public function transform($item, $parentObject, $duplicateStrategy) { $pageChildren = $item->stageChildren(); // okay, first we'll create the new page item, // and map a bunch of child information across $newFolder = new Folder(); $parentId = $parentObject ? $parentObject->ID : 0; $existing = DataObject::get_one('File', '"ParentID" = \'' . Convert::raw2sql($parentId) . '\' and "Name" = \'' . Convert::raw2sql($item->Title) . '\''); if ($existing && $duplicateStrategy == ExternalContentTransformer::DS_SKIP) { // just return the existing children return new TransformResult($existing, $pageChildren); } else { if ($existing && $duplicateStrategy == ExternalContentTransformer::DS_OVERWRITE) { $newFolder = $existing; } } $newFolder->Name = $item->Title; $newFolder->Title = $item->Title; $newFolder->MenuTitle = $item->MenuTitle; // what else should we map across? // $newPage->MatrixId = $item->id; // $newPage->OriginalProperties = serialize($item->getRemoteProperties()); $newFolder->ParentID = $parentObject->ID; $newFolder->Sort = 0; $newFolder->write(); if (!file_exists($newFolder->getFullPath())) { mkdir($newFolder->getFullPath(), Filesystem::$folder_create_mask); } return new TransformResult($newFolder, $pageChildren); }
/** * Convenience method to return links to cart related page. * * @param String $type The type of cart page a link is needed for * @return String The URL to the particular page */ function CartLink($type = 'Cart') { switch ($type) { case 'Account': if ($page = DataObject::get_one('AccountPage')) { return $page->Link(); } else { break; } case 'Checkout': if ($page = DataObject::get_one('CheckoutPage')) { return $page->Link(); } else { break; } case 'Login': return Director::absoluteBaseURL() . 'Security/login'; break; case 'Logout': if ($page = DataObject::get_one('AccountPage')) { return $page->Link() . 'logout'; } else { break; } case 'Cart': default: if ($page = DataObject::get_one('CartPage')) { return $page->Link(); } else { break; } } }
protected static function get_if_account_page_exists() { if ($page = DataObject::get_one('AccountPage')) { return $page; } user_error('No AccountPage was found. Please create one in the CMS!', E_USER_ERROR); }
public function processRecord($record, $columnMap, &$results, $preview = false) { // We match by 'Code', the ID property is confusing the importer if (isset($record['ID'])) { unset($record['ID']); } $objID = parent::processRecord($record, $columnMap, $results, $preview); $group = DataObject::get_by_id($this->objectClass, $objID); // set group hierarchies - we need to do this after all records // are imported to avoid missing "early" references to parents // which are imported later on in the CSV file. if (isset($record['ParentCode']) && $record['ParentCode']) { $parentGroup = DataObject::get_one('Group', array('"Group"."Code"' => $record['ParentCode'])); if ($parentGroup) { $group->ParentID = $parentGroup->ID; $group->write(); } } // set permission codes - these are all additive, meaning // existing permissions arent cleared. if (isset($record['PermissionCodes']) && $record['PermissionCodes']) { foreach (explode(',', $record['PermissionCodes']) as $code) { $p = DataObject::get_one('Permission', array('"Permission"."Code"' => $code, '"Permission"."GroupID"' => $group->ID)); if (!$p) { $p = new Permission(array('Code' => $code)); $p->write(); } $group->Permissions()->add($p); } } return $objID; }
/** * @param $data * @param $form * @return bool|SS_HTTPResponse */ function Register($data, $form) { // Set session array individually as setting the password breaks the form. $sessionArray = array('Email' => $data['Email']); // Check for existing member email address if ($existingUser = DataObject::get_one('Member', "Email = '" . Convert::raw2sql($data['Email']) . "'")) { $form->AddErrorMessage('Email', _t('RegistrationPage.EmailValidationText', 'Sorry, that email address already exists. Please choose another.'), 'validation'); Session::set('FormInfo.Form_RegistrationForm.data', $sessionArray); return $this->redirectBack(); } // Otherwise create new member and log them in $Member = new Member(); $form->saveInto($Member); $Member->write(); $Member->login(); // Find or create the 'user' group if (!($userGroup = DataObject::get_one('Group', "Code = 'users'"))) { $userGroup = new Group(); $userGroup->Code = 'users'; $userGroup->Title = 'Users'; $userGroup->Write(); $userGroup->Members()->add($Member); } // Add member to user group $userGroup->Members()->add($Member); // Get profile page otherwise display warning. if ($ProfilePage = DataObject::get_one('EditProfilePage')) { $name = $data['FirstName'] ?: ($name = $data['Email']); $this->setFlash(_t('RegistrationPage.RegisteredSuccessText', 'Welcome ' . $name . ', your account has been created!'), 'success'); return $this->redirect($ProfilePage->Link()); } else { $this->setFlash(_t('RegistrationPage.RegisteredWarningText', 'Please add a "Edit Profile Page" in your SiteTree to enable profile editing'), 'warning'); return $this->redirect(Director::absoluteBaseURL()); } }
public function transform($item, $parent, $strategy) { $page = new WordpressPage(); $params = $this->importer->getParams(); $exists = DataObject::get_one('WordpressPage', sprintf('"WordpressID" = %d AND "ParentID" = %d', $item->WordpressID, $parent->ID)); if ($exists) { switch ($strategy) { case ExternalContentTransformer::DS_OVERWRITE: $page = $exists; break; case ExternalContentTransformer::DS_DUPLICATE: break; case ExternalContentTransformer::DS_SKIP: return; } } $page->Title = $item->Title; $page->MenuTitle = $item->Title; $page->Content = $item->Description; $page->Content = HTTP::urlRewriter($page->Content, ' WordpressPageTransformer::transform_url($URL) '); $page->URLSegment = $item->Slug; $page->ParentID = $parent->ID; $page->ProvideComments = $item->AllowComments; $page->WordpressID = $item->WordpressID; $properties = $item->getRemoteProperties(); $page->OriginalData = serialize($properties); $page->OriginalLink = isset($properties['Link']) ? $properties['Link'] : null; $page->write(); if (isset($params['ImportMedia'])) { $this->importMedia($item, $page); } return new TransformResult($page, $item->stageChildren()); }
/** * Creates a member in a group with the correct permissions. * Example: Given I am logged in with "ADMIN" permissions * * @Given /^I am logged in with "([^"]*)" permissions$/ */ function iAmLoggedInWithPermissions($permCode) { if (!isset($this->cache_generatedMembers[$permCode])) { $group = \Group::get()->filter('Title', "{$permCode} group")->first(); if (!$group) { $group = \Injector::inst()->create('Group'); } $group->Title = "{$permCode} group"; $group->write(); $permission = \Injector::inst()->create('Permission'); $permission->Code = $permCode; $permission->write(); $group->Permissions()->add($permission); $member = \DataObject::get_one('Member', sprintf('"Email" = \'%s\'', "{$permCode}@example.org")); if (!$member) { $member = \Injector::inst()->create('Member'); } // make sure any validation for password is skipped, since we're not testing complexity here $validator = \Member::password_validator(); \Member::set_password_validator(null); $member->FirstName = $permCode; $member->Surname = "User"; $member->Email = "{$permCode}@example.org"; $member->PasswordEncryption = "none"; $member->changePassword('Secret!123'); $member->write(); $group->Members()->add($member); \Member::set_password_validator($validator); $this->cache_generatedMembers[$permCode] = $member; } return new Step\Given(sprintf('I log in with "%s" and "%s"', "{$permCode}@example.org", 'Secret!123')); }
public function transform($item, $parent, $strategy) { $page = new DrupalNode(); $params = $this->importer->getParams(); $exists = DataObject::get_one('DrupalNode', sprintf('"DrupalID" = %d AND "ParentID" = %d', $item->DrupalNodeID, $parent->ID)); if ($exists) { switch ($strategy) { case ExternalContentTransformer::DS_OVERWRITE: $page = $exists; break; case ExternalContentTransformer::DS_DUPLICATE: break; case ExternalContentTransformer::DS_SKIP: return; } } $page->Title = $item->Title; $page->MenuTitle = isset($item->MenuTitle) ? $item->MenuTitle : $item->Title; $page->Content = $item->Body; $page->ParentID = $parent->ID; $page->DrupalID = $item->DrupalNodeID; $page->OriginalData = serialize($item->getRemoteProperties()); $page->write(); /* if (isset($params['ImportMedia'])) { $this->importMedia($item, $page); } */ return new TransformResult($page, $item->stageChildren()); }
function testFrontendBlogPostRequiresPermission() { // get valid SecurityID (from comments form, would usually be copy/pasted) $blogEntry = $this->objFromFixture('BlogEntry', 'entry1'); $response = $this->get($blogEntry->URLSegment); $securityID = Session::get('SecurityID'); // without login $data = array( 'Title'=>'Disallowed', 'Author'=>'Disallowed', 'Content'=>'Disallowed', 'action_postblog' => 'Post blog entry', 'SecurityID' => $securityID ); $response = $this->post('blog/BlogEntryForm', $data); $this->assertFalse(DataObject::get_one('BlogEntry', sprintf("Title = 'Disallowed'"))); // with login $blogEditor = $this->objFromFixture('Member', 'blog_editor'); $blogEditor->logIn(); $data = array( 'Title'=>'Allowed', 'Author'=>'Allowed', 'Content'=>'Allowed', 'action_postblog' => 'Post blog entry', 'SecurityID' => $securityID ); $response = $this->post('blog/BlogEntryForm', $data); $this->assertType('BlogEntry', DataObject::get_one('BlogEntry', sprintf("Title = 'Allowed'"))); }
function doRegister($data, $form) { // Check for existing member emial address if ($member = DataObject::get_one("Member", "'Email' = '" . Convert::raw2sql($data['Email']) . "'")) { // Set error message $form->AddErrorMessage('Email', "Sorry, that email address already exists. Please choose another.", 'bad'); // Set form data from submitted values Session::set("FormInfo.Form_RegistrationForm.data", $data); // Return back to form return Director::redirectBack(); } // Otherwise create new member and log them in $Member = new Member(); $form->saveInto($Member); $Member->write(); $Member->login(); // Find or create the 'user' group if (!($userGroup = DataObject::get_one('Group', "Code = 'users'"))) { $userGroup = new Group(); $userGroup->Code = "users"; $userGroup->Title = "Users"; $userGroup->Write(); $userGroup->Members()->add($Member); } // Add member to user group $userGroup->Members()->add($Member); // Get Profile page if ($ProfilePage = DataObject::get_one('EditProfilePage')) { return Director::redirect($ProfilePage->Link('?success=1')); } }
private function _getOptions($obj = null, $prefix = '') { if (!$obj) { $parent = DataObject::get_one('BrowseWorldPage'); } else { $parent = $obj; } //Debug::show($parent); $children = $parent->Children(); $locations = array(); if (get_class($children) == 'DataObjectSet') { foreach ($children as $child) { //Debug::show($child); if ($child->ClassName == 'BrowseContinentsPage' || $child->ClassName == 'BrowseCountriesPage') { $businessCount = $child->getBusinessCount(); $locations[] = array('value' => $child->ID, 'title' => "{$prefix} " . $child->{$this->titleFieldName} . " ({$businessCount})"); $childLocations = $this->_getOptions($child, $prefix . $this->prefixChar); if (is_array($childLocations)) { $locations = array_merge($locations, $childLocations); } //Debug::show($locations); } } } else { //Debug::message("No children or only 1 child??"); //Debug::show($parent); //Debug::show($children); } //Debug::show($businesses); return $locations; }
public function php($data) { $member = $this->member; $valid = true; foreach ($this->unique as $field) { $other = DataObject::get_one('Member', sprintf('"%s" = \'%s\'', Convert::raw2sql($field), Convert::raw2sql($data[$field]))); if ($other && (!$this->member || !$this->member->exists() || $other->ID != $this->member->ID)) { $fieldInstance = $this->form->Fields()->dataFieldByName($field); if ($fieldInstance->getCustomValidationMessage()) { $message = $fieldInstance->getCustomValidationMessage(); } else { $message = sprintf(_t('MemberProfiles.MEMBERWITHSAME', 'There is already a member with the same %s.'), $field); } $valid = false; $this->validationError($field, $message, 'required'); } } // Create a dummy member as this is required for custom password validators if (isset($data['Password']) && $data['Password'] !== "") { if (is_null($member)) { $member = Member::create(); } if ($validator = $member::password_validator()) { $results = $validator->validate($data['Password'], $member); if (!$results->valid()) { $valid = false; foreach ($results->messageList() as $key => $value) { $this->validationError('Password', $value, 'required'); } } } } return $valid && parent::php($data); }
/** * @param $data * @param $form * @return bool|SS_HTTPResponse|void * @throws ValidationException * @throws null */ public function Save($data, $form) { /** @var Form $form */ $data = $form->getData(); if ($CurrentMember = Member::currentUser()) { if ($member = DataObject::get_one('Member', "Email = '" . Convert::raw2sql($data['Email']) . "' AND ID != " . $CurrentMember->ID)) { $form->addErrorMessage('Email', 'Sorry, that Email already exists.', 'validation'); return $this->controller->redirectBack(); } else { /** If no password don't save the field */ if (!isset($data['password'])) { unset($data['password']); } $this->controller->setFlash('Your profile has been updated', 'success'); $form->saveInto($CurrentMember); $CurrentMember->write(); return $this->controller->redirect($this->controller->Link()); } } else { /** Get registration page otherwise display warning. * * @var RegistrationPage $registerPage */ if ($registerPage = DataObject::get_one('RegistrationPage')) { return Security::PermissionFailure($this->controller, 'You must <a href="' . $registerPage->Link() . '">registered</a> and logged in to edit your profile.'); } else { $this->controller->setFlash('You must registered and logged in to edit your profile.', 'warning'); return $this->controller->redirect(Director::absoluteBaseURL()); } } }
/** * Initialises the BreadcrumbNavigation class. Only called when Breadcrumbs are actually used. * * @return ArrayList of parent pages */ function Pages() { if (!$this->initialised) { $this->parentPages = array(); $page = $this->owner; $i = 0; while ($page && (!self::$maxDepth || sizeof($this->parentPages) < self::$maxDepth) && (!self::$stopAtPageType || $page->ClassName != self::$stopAtPageType)) { if (self::$showHidden || $page->ShowInMenus || $page->ID == $this->owner->ID) { if ($page->URLSegment == self::$homeURLSegment) { $this->hasHome = true; } if ($page->ID == $this->owner->ID) { $page->isSelf = true; } if (!$page->isSelf || $page->isSelf && self::$includeSelf) { array_unshift($this->parentPages, $page); } } $page = $page->Parent; } if (!$this->hasHome && self::$includeHome) { array_unshift($this->parentPages, DataObject::get_one('SiteTree', "`URLSegment` = '" . self::$homeURLSegment . "'")); } $this->initialised = true; } return new ArrayList($this->parentPages); }
/** * Ensures that there is always a 404 page * by checking if there's an instance of * ErrorPage with a 404 and 500 error code. If there * is not, one is created when the DB is built. */ function requireDefaultRecords() { parent::requireDefaultRecords(); if ($this->class == 'ErrorPage' && SiteTree::get_create_default_pages()) { // Ensure that an assets path exists before we do any error page creation if (!file_exists(ASSETS_PATH)) { mkdir(ASSETS_PATH); } $pageNotFoundErrorPage = DataObject::get_one('ErrorPage', "\"ErrorCode\" = '404'"); $pageNotFoundErrorPageExists = $pageNotFoundErrorPage && $pageNotFoundErrorPage->exists() ? true : false; $pageNotFoundErrorPagePath = self::get_filepath_for_errorcode(404); if (!($pageNotFoundErrorPageExists && file_exists($pageNotFoundErrorPagePath))) { if (!$pageNotFoundErrorPageExists) { $pageNotFoundErrorPage = new ErrorPage(); $pageNotFoundErrorPage->ErrorCode = 404; $pageNotFoundErrorPage->Title = _t('ErrorPage.DEFAULTERRORPAGETITLE', 'Page not found'); $pageNotFoundErrorPage->Content = _t('ErrorPage.DEFAULTERRORPAGECONTENT', '<p>Sorry, it seems you were trying to access a page that doesn\'t exist.</p><p>Please check the spelling of the URL you were trying to access and try again.</p>'); $pageNotFoundErrorPage->write(); $pageNotFoundErrorPage->publish('Stage', 'Live'); } // Ensure a static error page is created from latest error page content $response = Director::test(Director::makeRelative($pageNotFoundErrorPage->Link())); $written = null; if ($fh = fopen($pageNotFoundErrorPagePath, 'w')) { $written = fwrite($fh, $response->getBody()); fclose($fh); } if ($written) { DB::alteration_message('404 error page created', 'created'); } else { DB::alteration_message(sprintf('404 error page could not be created at %s. Please check permissions', $pageNotFoundErrorPagePath), 'error'); } } $serverErrorPage = DataObject::get_one('ErrorPage', "\"ErrorCode\" = '500'"); $serverErrorPageExists = $serverErrorPage && $serverErrorPage->exists() ? true : false; $serverErrorPagePath = self::get_filepath_for_errorcode(500); if (!($serverErrorPageExists && file_exists($serverErrorPagePath))) { if (!$serverErrorPageExists) { $serverErrorPage = new ErrorPage(); $serverErrorPage->ErrorCode = 500; $serverErrorPage->Title = _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error'); $serverErrorPage->Content = _t('ErrorPage.DEFAULTSERVERERRORPAGECONTENT', '<p>Sorry, there was a problem with handling your request.</p>'); $serverErrorPage->write(); $serverErrorPage->publish('Stage', 'Live'); } // Ensure a static error page is created from latest error page content $response = Director::test(Director::makeRelative($serverErrorPage->Link())); $written = null; if ($fh = fopen($serverErrorPagePath, 'w')) { $written = fwrite($fh, $response->getBody()); fclose($fh); } if ($written) { DB::alteration_message('500 error page created', 'created'); } else { DB::alteration_message(sprintf('500 error page could not be created at %s. Please check permissions', $serverErrorPagePath), 'error'); } } } }
function up() { echo "Starting Migration Proc ...<BR>"; //check if migration already had ran ... $migration = DataObject::get_one("Migration", "Name='{$this->title}'"); if (!$migration) { DB::getConn()->transactionStart(); try { // migrate records from Live to Stage table DB::query("DELETE FROM JobPage"); DB::query("\nINSERT INTO JobPage\n\t\t(ID,\n\t\tJobPostedDate,\n\t\tJobCompany,\n\t\tJobMoreInfoLink,\n\t\tJobLocation,\n\t\tFoundationJob,\n\t\tExpirationDate,\n\t\tActive,\n\t\tJobInstructions2Apply,\n\t\tLocationType,\n\t\tTitle,\n\t\tContent)\nSELECT \tJobPage_Live.ID,\n\t\tJobPostedDate,\n\t\tJobCompany,\n\t\tJobMoreInfoLink,\n\t\tJobLocation,\n\t\tFoundationJob,\n\t\tExpirationDate,\n\t\tActive,\n\t\tJobInstructions2Apply,\n\t\tLocationType,\n\t\tTitle,\n\t\tContent\nFROM \tJobPage_Live\nINNER JOIN Page_Live on Page_Live.Id = JobPage_Live.Id\nINNER JOIN SiteTree_Live on SiteTree_Live.Id = JobPage_Live.Id"); DB::query("DROP TABLE JobPage_Live"); DB::query("DROP TABLE JobPage_versions"); // delete orphan records DB::query("delete from Page where Id in (select Id from SiteTree where ClassName = 'JobPage')"); DB::query("delete from SiteTree where ClassName = 'JobPage'"); DB::query("delete from Page_Live where Id in (select Id from SiteTree_Live where ClassName = 'JobPage')"); DB::query("delete from SiteTree_Live where ClassName = 'JobPage'"); DB::query("delete from Page_versions where Id in (select Id from SiteTree_versions where ClassName = 'JobPage')"); DB::query("delete from SiteTree_versions where ClassName = 'JobPage'"); DB::getConn()->transactionEnd(); } catch (Exception $e) { DB::getConn()->transactionRollback(); return; } $migration = new Migration(); $migration->Name = $this->title; $migration->Description = $this->description; $migration->Write(); } echo "Ending Migration Proc ...<BR>"; }