Returns the list of properties that don't have a result code yet.

This method returns a list of property names, but not its values.

@return string[]
507289
public function getRemainingMutations()
    {
        $remaining = [];
        foreach ($this->mutations as $propertyName => $propValue) {
            if (!isset($this->result[$propertyName])) {
                $remaining[] = $propertyName;
            }
        }

        return $remaining;
    }
441865
protected function getMissingBaseProperties(array $properties = null)
    {
        $basePropertyKeys = PropertyIds::getBasePropertyKeys();

        if ($properties === null) {
            return $basePropertyKeys;
        }

        foreach ($properties as $property) {
            $propertyId = $property->getId();
            $basePropertyKey = array_search($propertyId, $basePropertyKeys);
            if ($basePropertyKey !== false) {
                unset($basePropertyKeys[$basePropertyKey]);
            }
        }

        return $basePropertyKeys;
    }
747211
protected static function define_other_properties() {
        return [
            'formattedretentionperiod' => [
                'type' => PARAM_TEXT
            ],
            'formattedlawfulbases' => [
                'type' => name_description_exporter::read_properties_definition(),
                'multiple' => true
            ],
            'formattedsensitivedatareasons' => [
                'type' => name_description_exporter::read_properties_definition(),
                'multiple' => true,
                'optional' => true
            ],
            'roleoverrides' => [
                'type' => PARAM_TEXT
            ],
        ];
    }
794222
public function getDefaultValuesForProperties()
    {
        $this->initialize();
        if (!isset($this->fullConfiguration['properties'])) {
            return [];
        }

        $defaultValues = [];
        foreach ($this->fullConfiguration['properties'] as $propertyName => $propertyConfiguration) {
            if (isset($propertyConfiguration['defaultValue'])) {
                $type = isset($propertyConfiguration['type']) ? $propertyConfiguration['type'] : '';
                switch ($type) {
                    case 'DateTime':
                        $defaultValues[$propertyName] = new \DateTime($propertyConfiguration['defaultValue']);
                    break;
                    default:
                        $defaultValues[$propertyName] = $propertyConfiguration['defaultValue'];
                }
            }
        }

        return $defaultValues;
    }
468383
public function listInvalidProperties()
    {
        $invalidProperties = [];

        $allowedValues = $this->getMimeTypeAllowableValues();
        if (!is_null($this->container['mime_type']) && !in_array($this->container['mime_type'], $allowedValues, true)) {
            $invalidProperties[] = sprintf(
                "invalid value for 'mime_type', must be one of '%s'",
                implode("', '", $allowedValues)
            );
        }

        return $invalidProperties;
    }
588718
public function getPossibleReturnTypes() : array
    {
        $types = [];
        if ($this->hasReturnType()) {
            $types[] = $this->getReturnType();
            if ($types[0]->allowsNull()) {
                $types[] = null;
            }
        }
        return $types;
    }
1271718
public function listInvalidProperties()
    {
        $invalidProperties = [];

        $allowedValues = $this->getPhoneTypeAllowableValues();
        if (!in_array($this->container['phone_type'], $allowedValues)) {
            $invalidProperties[] = sprintf(
                "invalid value for 'phone_type', must be one of '%s'",
                implode("', '", $allowedValues)
            );
        }

        $allowedValues = $this->getRelationshipAllowableValues();
        if (!in_array($this->container['relationship'], $allowedValues)) {
            $invalidProperties[] = sprintf(
                "invalid value for 'relationship', must be one of '%s'",
                implode("', '", $allowedValues)
            );
        }

        $allowedValues = $this->getTypeAllowableValues();
        if (!in_array($this->container['type'], $allowedValues)) {
            $invalidProperties[] = sprintf(
                "invalid value for 'type', must be one of '%s'",
                implode("', '", $allowedValues)
            );
        }

        return $invalidProperties;
    }
902377
public function listInvalidProperties()
    {
        $invalid_properties = [];
        if ($this->container['maxDockableShipVolume'] === null) {
            $invalid_properties[] = "'maxDockableShipVolume' can't be null";
        }
        if ($this->container['name'] === null) {
            $invalid_properties[] = "'name' can't be null";
        }
        if ($this->container['officeRentalCost'] === null) {
            $invalid_properties[] = "'officeRentalCost' can't be null";
        }
        if ($this->container['reprocessingEfficiency'] === null) {
            $invalid_properties[] = "'reprocessingEfficiency' can't be null";
        }
        if ($this->container['reprocessingStationsTake'] === null) {
            $invalid_properties[] = "'reprocessingStationsTake' can't be null";
        }
        if ($this->container['services'] === null) {
            $invalid_properties[] = "'services' can't be null";
        }
        if ($this->container['stationId'] === null) {
            $invalid_properties[] = "'stationId' can't be null";
        }
        if ($this->container['systemId'] === null) {
            $invalid_properties[] = "'systemId' can't be null";
        }
        if ($this->container['typeId'] === null) {
            $invalid_properties[] = "'typeId' can't be null";
        }
        return $invalid_properties;
    }
937859
protected static function define_properties() {
        return array(
            'courseid' => array(
                'type' => PARAM_INT
            ),
            'competencyid' => array(
                'type' => PARAM_INT
            ),
            'sortorder' => array(
                'type' => PARAM_INT
            ),
            'ruleoutcome' => array(
                'choices' => array(self::OUTCOME_NONE,
                    self::OUTCOME_EVIDENCE,
                    self::OUTCOME_RECOMMEND,
                    self::OUTCOME_COMPLETE
                ),
                'default' => self::OUTCOME_EVIDENCE,
                'type' => PARAM_INT,
            ),
        );
    }
1283894
public function listInvalidProperties()
    {
        $invalidProperties = [];

        if ($this->container['sender'] === null) {
            $invalidProperties[] = "'sender' can't be null";
        }
        if ($this->container['name'] === null) {
            $invalidProperties[] = "'name' can't be null";
        }
        if (!is_null($this->container['splitRule']) && ($this->container['splitRule'] > 50)) {
            $invalidProperties[] = "invalid value for 'splitRule', must be smaller than or equal to 50.";
        }

        if (!is_null($this->container['splitRule']) && ($this->container['splitRule'] < 1)) {
            $invalidProperties[] = "invalid value for 'splitRule', must be bigger than or equal to 1.";
        }

        $allowedValues = $this->getWinnerCriteriaAllowableValues();
        if (!in_array($this->container['winnerCriteria'], $allowedValues)) {
            $invalidProperties[] = sprintf(
                "invalid value for 'winnerCriteria', must be one of '%s'",
                implode("', '", $allowedValues)
            );
        }

        if (!is_null($this->container['winnerDelay']) && ($this->container['winnerDelay'] > 168)) {
            $invalidProperties[] = "invalid value for 'winnerDelay', must be smaller than or equal to 168.";
        }

        if (!is_null($this->container['winnerDelay']) && ($this->container['winnerDelay'] < 1)) {
            $invalidProperties[] = "invalid value for 'winnerDelay', must be bigger than or equal to 1.";
        }

        return $invalidProperties;
    }
1252638
public function listInvalidProperties()
    {
        $invalidProperties = [];

        if ($this->container['created'] === null) {
            $invalidProperties[] = "'created' can't be null";
        }
        if ($this->container['name'] === null) {
            $invalidProperties[] = "'name' can't be null";
        }
        $allowedValues = $this->getNameAllowableValues();
        if (!in_array($this->container['name'], $allowedValues)) {
            $invalidProperties[] = sprintf(
                "invalid value for 'name', must be one of '%s'",
                implode("', '", $allowedValues)
            );
        }

        if ($this->container['status'] === null) {
            $invalidProperties[] = "'status' can't be null";
        }
        $allowedValues = $this->getStatusAllowableValues();
        if (!in_array($this->container['status'], $allowedValues)) {
            $invalidProperties[] = sprintf(
                "invalid value for 'status', must be one of '%s'",
                implode("', '", $allowedValues)
            );
        }

        if ($this->container['updated'] === null) {
            $invalidProperties[] = "'updated' can't be null";
        }
        return $invalidProperties;
    }
263590
protected function getGeneratedProperties(): array
    {
        $reflectionObject = new \ReflectionObject($this);
        $properties = $reflectionObject->getProperties(\ReflectionProperty::IS_PUBLIC);
        $result = [];
        foreach ($properties as $property) {
            if (!$property->isPublic() || @$property->isDefault()) {
                continue;
            }

            $result[] = $property;
        }

        return $result;
    }
916098
final private function getSqlKeyValues() {
		
		// force to array
		$propertyNames = (array)$this->keyProperties;

		// list to return
		$values = array();

		foreach ($propertyNames as $name) {
			$values[] = $this->{$name};
		}

		return $values;

	}
1182460
public function propertiesIdents()
    {
        $metadata = $this->proto()->metadata();
        if (isset($metadata['admin']['lists'])) {
            $adminMetadata   = $metadata['admin'];
            $collectionIdent = $this->collectionIdent();
            if (isset($adminMetadata['lists'][$collectionIdent]['properties'])) {
                return $adminMetadata['lists'][$collectionIdent]['properties'];
            }
        }

        return [];
    }
1137743
protected static function define_properties() {
        return array(
            'sourcefileid' => [
                'type' => PARAM_INT,
            ],
            'targetformat' => [
                'type' => PARAM_ALPHANUMEXT,
            ],
            'status' => [
                'type' => PARAM_INT,
                'choices' => [
                    self::STATUS_PENDING,
                    self::STATUS_IN_PROGRESS,
                    self::STATUS_COMPLETE,
                    self::STATUS_FAILED,
                ],
                'default' => self::STATUS_PENDING,
            ],
            'statusmessage' => [
                'type' => PARAM_RAW,
                'null' => NULL_ALLOWED,
                'default' => null,
            ],
            'converter' => [
                'type' => PARAM_RAW,
                'null' => NULL_ALLOWED,
                'default' => null,
            ],
            'destfileid' => [
                'type' => PARAM_INT,
                'null' => NULL_ALLOWED,
                'default' => null,
            ],
            'data' => [
                'type' => PARAM_RAW,
                'null' => NULL_ALLOWED,
                'default' => null,
            ],
        );
    }
115052
public function listInvalidProperties()
    {
        $invalid_properties = array();
        if ($this->container['transcoderWatermark'] === null) {
            $invalid_properties[] = "'transcoderWatermark' can't be null";
        }
        if ($this->container['serverVersion'] === null) {
            $invalid_properties[] = "'serverVersion' can't be null";
        }
        if ($this->container['gpuAcceleration'] === null) {
            $invalid_properties[] = "'gpuAcceleration' can't be null";
        }
        if ($this->container['wseName'] === null) {
            $invalid_properties[] = "'wseName' can't be null";
        }
        if ($this->container['transcoderLicensed'] === null) {
            $invalid_properties[] = "'transcoderLicensed' can't be null";
        }
        if ($this->container['javaMaxHeapSize'] === null) {
            $invalid_properties[] = "'javaMaxHeapSize' can't be null";
        }
        if ($this->container['transcoderLicensesInUse'] === null) {
            $invalid_properties[] = "'transcoderLicensesInUse' can't be null";
        }
        if ($this->container['javaVersion'] === null) {
            $invalid_properties[] = "'javaVersion' can't be null";
        }
        if ($this->container['httpOriginAvailable'] === null) {
            $invalid_properties[] = "'httpOriginAvailable' can't be null";
        }
        if ($this->container['serverName'] === null) {
            $invalid_properties[] = "'serverName' can't be null";
        }
        if ($this->container['osArchitecture'] === null) {
            $invalid_properties[] = "'osArchitecture' can't be null";
        }
        if ($this->container['drmApplications'] === null) {
            $invalid_properties[] = "'drmApplications' can't be null";
        }
        if ($this->container['javaVMVersion'] === null) {
            $invalid_properties[] = "'javaVMVersion' can't be null";
        }
        if ($this->container['transcoderLicenses'] === null) {
            $invalid_properties[] = "'transcoderLicenses' can't be null";
        }
        if ($this->container['timeRunning'] === null) {
            $invalid_properties[] = "'timeRunning' can't be null";
        }
        if ($this->container['licenseType'] === null) {
            $invalid_properties[] = "'licenseType' can't be null";
        }
        if ($this->container['osBitness'] === null) {
            $invalid_properties[] = "'osBitness' can't be null";
        }
        if ($this->container['dvrApplications'] === null) {
            $invalid_properties[] = "'dvrApplications' can't be null";
        }
        if ($this->container['osVersion'] === null) {
            $invalid_properties[] = "'osVersion' can't be null";
        }
        if ($this->container['serverBuild'] === null) {
            $invalid_properties[] = "'serverBuild' can't be null";
        }
        if ($this->container['javaName'] === null) {
            $invalid_properties[] = "'javaName' can't be null";
        }
        if ($this->container['maxConnections'] === null) {
            $invalid_properties[] = "'maxConnections' can't be null";
        }
        if ($this->container['dvrLicensed'] === null) {
            $invalid_properties[] = "'dvrLicensed' can't be null";
        }
        if ($this->container['serverMode'] === null) {
            $invalid_properties[] = "'serverMode' can't be null";
        }
        if ($this->container['javaBitness'] === null) {
            $invalid_properties[] = "'javaBitness' can't be null";
        }
        if ($this->container['currentConnections'] === null) {
            $invalid_properties[] = "'currentConnections' can't be null";
        }
        if ($this->container['drmLicensed'] === null) {
            $invalid_properties[] = "'drmLicensed' can't be null";
        }
        if ($this->container['javaVendor'] === null) {
            $invalid_properties[] = "'javaVendor' can't be null";
        }
        if ($this->container['osName'] === null) {
            $invalid_properties[] = "'osName' can't be null";
        }
        if ($this->container['version'] === null) {
            $invalid_properties[] = "'version' can't be null";
        }
        if ($this->container['transcoderApplications'] === null) {
            $invalid_properties[] = "'transcoderApplications' can't be null";
        }
        if ($this->container['transcoderAvailable'] === null) {
            $invalid_properties[] = "'transcoderAvailable' can't be null";
        }
        if ($this->container['javaHome'] === null) {
            $invalid_properties[] = "'javaHome' can't be null";
        }
        if ($this->container['maxIncommingStreams'] === null) {
            $invalid_properties[] = "'maxIncommingStreams' can't be null";
        }
        if ($this->container['totalMemory'] === null) {
            $invalid_properties[] = "'totalMemory' can't be null";
        }
        if ($this->container['availableMemory'] === null) {
            $invalid_properties[] = "'availableMemory' can't be null";
        }
        if ($this->container['nativeBase'] === null) {
            $invalid_properties[] = "'nativeBase' can't be null";
        }
        if ($this->container['dvrInUse'] === null) {
            $invalid_properties[] = "'dvrInUse' can't be null";
        }
        if ($this->container['drmInUse'] === null) {
            $invalid_properties[] = "'drmInUse' can't be null";
        }
        if ($this->container['licenseExpireDate'] === null) {
            $invalid_properties[] = "'licenseExpireDate' can't be null";
        }
        if ($this->container['processorCores'] === null) {
            $invalid_properties[] = "'processorCores' can't be null";
        }
        if ($this->container['restAPIAvailable'] === null) {
            $invalid_properties[] = "'restAPIAvailable' can't be null";
        }
        return $invalid_properties;
    }
183332
protected static function define_other_properties() {
        return [
            'timestamp' => [
                'type' => PARAM_INT,
            ],
            'neweventtimestamp' => [
                'type' => PARAM_INT,
            ],
            'viewdaylink' => [
                'type' => PARAM_URL,
                'optional' => true,
            ],
            'events' => [
                'type' => calendar_event_exporter::read_properties_definition(),
                'multiple' => true,
            ],
            'hasevents' => [
                'type' => PARAM_BOOL,
                'default' => false,
            ],
            'calendareventtypes' => [
                'type' => PARAM_RAW,
                'multiple' => true,
            ],
            'previousperiod' => [
                'type' => PARAM_INT,
            ],
            'nextperiod' => [
                'type' => PARAM_INT,
            ],
            'navigation' => [
                'type' => PARAM_RAW,
            ],
            'haslastdayofevent' => [
                'type' => PARAM_BOOL,
                'default' => false,
            ],
        ];
    }