/** * Sends a push notification. * * @param array $data The data of the push notification. Valid fields * are: * channels - An Array of channels to push to. * push_time - A Date object for when to send the push. * expiration_time - A Date object for when to expire * the push. * expiration_interval - The seconds from now to expire the push. * where - A ParseQuery over ParseInstallation that is used to match * a set of installations to push to. * data - The data to send as part of the push * @param bool $useMasterKey Whether to use the Master Key for the request * * @throws \Exception, ParseException * * @return mixed */ public static function send($data, $useMasterKey = false) { if (isset($data['expiration_time']) && isset($data['expiration_interval'])) { throw new Exception('Both expiration_time and expiration_interval can\'t be set.'); } if (isset($data['where'])) { if ($data['where'] instanceof ParseQuery) { $where_options = $data['where']->_getOptions(); if (!isset($where_options['where'])) { $data['where'] = '{}'; } else { $dd = $data['where']->_getOptions(); $data['where'] = $dd['where']; } } else { throw new Exception('Where parameter for Parse Push must be of type ParseQuery'); } } if (isset($data['push_time'])) { //Local push date format is different from iso format generally used in Parse //Schedule does not work if date format not correct $data['push_time'] = ParseClient::getPushDateFormat($data['push_time'], isset($data['local_time'])); } if (isset($data['expiration_time'])) { $cc = ParseClient::_encode($data['expiration_time'], false); $data['expiration_time'] = $cc['iso']; } return ParseClient::_request('POST', 'push', null, json_encode(ParseClient::_encode($data, true)), $useMasterKey); }
/** * Returns an associative array encoding of the current operation. * * @return mixed */ public function _encode() { if ($this->isAssociativeArray) { $object = new \stdClass(); foreach ($this->value as $key => $value) { $object->{$key} = ParseClient::_encode($value, true); } return ParseClient::_encode($object, true); } return ParseClient::_encode($this->value, true); }
/** * Returns JSON object of the unsaved operations. * * @return array */ private function getSaveJSON() { $this->beforeSave(); return ParseClient::_encode($this->operationSet, true); }
/** * Build query string from query constraints. * * @param array $queryOptions Associative array of the query constraints. * * @return string Query string. */ private function buildQueryString($queryOptions) { if (isset($queryOptions['where'])) { $queryOptions['where'] = ParseClient::_encode($queryOptions['where'], true); $queryOptions['where'] = json_encode($queryOptions['where']); } return http_build_query($queryOptions); }
/** * Returns an associative array encoding of this operation. * * @return array */ public function _encode() { return array('__op' => 'AddUnique', 'objects' => ParseClient::_encode($this->objects, true)); }
/** * Returns associative array representing encoded operation. * * @return array */ public function _encode() { return ['__op' => 'Remove', 'objects' => ParseClient::_encode($this->objects, true)]; }
/** * Returns an associative array encoding of the current operation. * * @return mixed * * @throws \Exception */ public function _encode() { $addRelation = array(); $removeRelation = array(); if (!empty($this->relationsToAdd)) { $addRelation = array('__op' => 'AddRelation', 'objects' => ParseClient::_encode(self::convertToOneDimensionalArray($this->relationsToAdd), true)); } if (!empty($this->relationsToRemove)) { $removeRelation = array('__op' => 'RemoveRelation', 'objects' => ParseClient::_encode(self::convertToOneDimensionalArray($this->relationsToRemove), true)); } if (!empty($addRelation) && !empty($removeRelation)) { return array('__op' => 'Batch', 'ops' => [$addRelation, $removeRelation]); } return empty($addRelation) ? $removeRelation : $addRelation; }
/** * Returns JSON object of the unsaved operations. * * @return array */ private function getSaveJSON() { $operationSet = $this->operationSet; if (!$operationSet) { // Parse REST API needs {} not [] for "body" request property $operationSet = new \stdClass(); } return ParseClient::_encode($operationSet, true); }