/** * Validate element value * * @param array $data * @param mixed $context * @return boolean */ public function isValid($value, $context = array()) { $isListFilter = $context instanceof \App_ListFilter; if ($this->getUseDates()) { $value = strtotime($value) ?: $value; } foreach ($this->_fields as $field) { $min = $isListFilter ? $context->getOneFilterValueByFieldName($field) : App_Util_Array::getItem($context, $field); if ($min !== null) { // Add support for dates if ($this->getUseDates()) { $min = strtotime($min) ?: $min; } // Normal behaviour $this->_setValue($value); $this->_currentField = $field; $this->_min = $min; // Check diff if ($min > $value || !$this->_allowEquals && $min >= $value) { $this->_error(self::NOT_GREATER, $value); return false; } } } return true; }
public function isValid($value, $context = null) { if (!parent::isValid($value, $context)) { return false; } if ($value == BusinessRule::CHANGE_COMMERCIAL_GROUP) { $type = App_Util_Array::getItem($context, '__parent.__parent.universeType'); if ($type == AlarmRuleModel::UNIVERSE_SUBSCRIPTIONS_OF_COMMERCIAL_GROUP || $type == AlarmRuleModel::UNIVERSE_COMMERCIAL_GROUP) { $universeId = App_Util_Array::getItem($context, '__parent.__parent.universeId'); $cg = $this->_getCommercialGroup($universeId, 'id'); if ($cg === NULL) { $this->_error(self::ERROR_COMMERCIAL_GROUP_NOT_EXISTS, $universeId); return false; } $restricted = $cg->restricted; switch (\App::getOrgUserLogged()->getType()) { case OrgCustomerModel::ORG_TYPE: if ($restricted) { $mss = "{$type} with commercial group id {$universeId}"; $this->_error(self::ERROR_UNIVERSE_TYPE_COMMERCIAL_GROUP_RESTRICTED, $mss); return false; } } } } return true; }
public function isValid($value, $context = NULL) { $sum = $value; $customerId = $context['customerId']; foreach ($this->_discountsToSum as $discountPath) { if ($discounts = App_Util_Array::getItem($context, $discountPath)) { foreach ($discounts as $discount) { if (App_Util_Array::getItem($discount, 'customerId') == $customerId) { $sum += App_Util_Array::getItem($discount, $this->_fieldName); } } } } if (!parent::isValid($sum)) { $this->_messageVariables = array('fieldName' => '_fieldName', 'max' => '_max', 'min' => '_min'); $messages = $this->getMessages(); if (!is_array($this->_messages)) { $this->_messages = array(); } foreach ($messages as $key => $message) { $this->_error($key, $sum); } return false; } return true; }
protected function _checkToken($token) { $params = array("%id%" => $token); $result = $this->_getPybeService()->callMethod($this::USE_METHOD, $params); $httpResponse = $this->_getPybeService()->getLastResult(); $this->_checkResponseResult($httpResponse, 'Pybe error checking 3rd party service session'); $serviceSession = \App_Util_Array::getItem($result, static::ITEM_KEY); return new $this->_modelClassResult($serviceSession); }
public function filter($value, $context = array()) { if (!($field = $this->getField())) { throw new Zend_Filter_Exception("Missing currency field in filter"); } if ($currencyId = App_Util_Array::getItem($context, $field)) { $this->_currencyId = $currencyId; } return parent::filter($value, $context); }
/** * Validate element value * * @param array $data * @param mixed $context * @return boolean */ public function isValid($value, $context = array()) { foreach ($this->_fieldValues as $fieldValue => $max) { if ($fieldValue == App_Util_Array::getItem($context, $this->getField())) { $this->_currentFieldValue = $fieldValue; parent::setMax($max); if (!parent::isValid($value)) { return false; } } } return true; }
protected function _filterData($data) { if (!empty($this->_allowedFields)) { $newData = array(); foreach ($this->_allowedFields as $field) { if ($value = \App_Util_Array::getItem($data, $field)) { \App_Util_Array::setItem($newData, $field, $value); } } $data = $newData; } return $data; }
/** * Returns true if and only if the assertion conditions are met * * This method is passed the ACL, Role, Resource, and privilege to which * the authorization query applies. If the $role, $resource, or $privilege * parameters are null, it means that the query applies to all Roles, * Resources, or privileges, respectively. * * @param Zend_Acl $acl * @param Zend_Acl_Role_Interface $role * @param Zend_Acl_Resource_Interface $resource * @param string $privilege * @return booleanel Supp */ public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null) { // We need specific objects to check against each other if (NULL === $role) { return false; } // Ensure we're handled User models if (!$role instanceof UserModel) { throw new Exception('Role must be an instance of UserModel'); } if (App_Util_Array::getItem($resource, 'supplementaryServices.location')) { return true; } return false; }
private function _map(array &$data, $map, $rev = false) { foreach ($map as $k1 => $k2) { list($fromKey, $toKey) = $rev ? array($k2, $k1) : array($k1, $k2); if ($fromKey !== '') { $v = App_Util_Array::getItem($data, $fromKey); if (!is_null($v)) { App_Util_Array::unsetItem($data, $fromKey); if ($toKey !== '') { App_Util_Array::setItem($data, $toKey, $v); } } } } }
/** * Validate element value * * @param array $data * @param mixed $context * @return boolean */ public function isValid($value, $context = array()) { foreach ($this->_fields as $field => $fieldName) { if (is_numeric($field)) { $field = $fieldName; } if ($max = App_Util_Array::getItem($context, $field)) { $this->_currentField = $fieldName; parent::setMax($max); if (!parent::isValid($value)) { return false; } } } return true; }
public function getConfig($key, $default = null) { if (is_array($key)) { if (isset($key['default'])) { $default = $key['default']; } if (!isset($key['key'])) { throw new InvalidArgumentException("Parameter key must be a string or an array with a 'key' element"); } $key = $key['key']; } $data = $this->exportData(); if (!\App_Util_Array::issetItem($data, $key)) { return $default; } return \App_Util_Array::getItem($data, $key); }
/** * Validate element value * * If a translation adapter is registered, any error messages will be * translated according to the current locale, using the given error code; * if no matching translation is found, the original message will be * utilized. * * Note: The *filtered* value is validated. * * @param array $data * @param mixed $context * @return boolean */ public function isValid($value, $context = null) { $fields = array('__parent.zonePlanId', '__parent.zonePlan'); if ($value == "-1") { return true; } foreach ($fields as $field) { $data = \App_Util_Array::getItem($context, $field); if (!empty($data)) { if (is_string($data)) { $zonePlan = \Application\Service\ZonePlanService::getInstance()->load($data); if (!$zonePlan) { $this->_error(self::NOT_EXISTS_ZONE_PLAN, $data); return false; } } else { if (is_array($data)) { $zonePlan = new ZonePlanModel($data); } else { $this->_error(self::INVALID_DATA_TYPE); return false; } } //TODO: workaround /* * For the post verb, they only send the modified zones in the normal object (modified are only readonly for get verb) * Now is not mandatory to send current items although they zones has been removed. */ // // if ($zonePlan->zonePlanModified) { // $zoneGroup = $zonePlan->zonePlanModified->getZoneGroupById($value); // } else { // $zoneGroup = $zonePlan->getZoneGroupById($value); // } // if (($zoneGroup !== NULL) && (!$zoneGroup->isDeleted)){ // return true; // } // // $this->_error(self::NOT_ZONE_GROUP_DEFINED, $value); // return false; return true; } } $this->_error(self::NOT_ZONE_PLAN_DEFINED); return false; }
/** * @param mixed $data Item object, usually Model instance */ public function currentItem(&$data) { $params = $data->params->exportData(); $paramsReturned = $params["params"]; $reportType = $paramsReturned["reportType"]; // Custom download report params switch ($reportType) { case ReportModel::KPI_MONTHLY: \App_Util_Array::unsetItem($paramsReturned, 'orgId'); break; case ReportModel::SUBSCRIPTION_SNAPSHOT_DAILY: $date = \App_Util_Array::getItem($paramsReturned, 'dateDaily'); \App_Util_Array::setItem($paramsReturned, 'date', $date); \App_Util_Array::unsetItem($paramsReturned, 'dateDaily'); break; } $helper = \Zend_Controller_Action_HelperBroker::getStaticHelper("formatDateTime"); $paramsAllowed = array("orgId", "date", "start", "end", "billingAccount", "groupBy", "supervisionGroup", "showCommercialGroup", "showBillingAccount", "showSubscriptions", "showAggregators"); $paramsFiltered = array_intersect_key($paramsReturned, array_flip($paramsAllowed)); $newData = array("downloadReportId" => $data->id, "created" => $helper->direct($data->created), "expire" => $helper->direct($data->expire), "modified" => $helper->direct($data->modified), "status" => $data->status === \Core\Model\WatcherModel::STATUS_FINISHED && !$data->eventCount ? 'timeout' : $data->status, "params" => array($reportType => $paramsFiltered), "remove" => $helper->direct($data->remove)); $data = $newData; }
protected function _findByServiceType($serviceType) { $filters = array("_parents" => 1, "organizationId" => \App::getOrgUserLogged()->id); $result = $this->_getPybeService()->callMethod($this::LIST_METHOD, $filters); $httpResponse = $this->_getPybeService()->getLastResult(); $this->_checkResponseResult($httpResponse, 'Pybe error looking for contracts by service type'); $valid_service_ids = array(); $services = \App_Util_Array::getItem($result, $this::SERVICE_KEY . '.items'); if ($services) { foreach ($services as $service) { if (isset($service['type']) && $service['type'] == $serviceType) { $valid_service_ids[] = $service['id']; } } } if (!$valid_service_ids) { return new ListResultModel(array('items' => array(), 'count' => 0)); } $entries = array(); $candidateContracts = array(); $contracts = \App_Util_Array::getItem($result, $this::LIST_KEY . '.items'); if ($contracts) { foreach ($contracts as $contract) { if (isset($contract['serviceId'])) { if (in_array($contract['serviceId'], $valid_service_ids)) { $entries[] = $contract; } } elseif (isset($contract['parentContractId'])) { if (isset($candidateContracts[$contract['parentContractId']])) { $candidateContracts[$contract['parentContractId']][] = $contract; } else { $candidateContracts[$contract['parentContractId']] = array($contract); } } } } if ($candidateContracts) { $parentContracts = \App_Util_Array::getItem($result, $this::PARENT_KEY . '.items'); if ($parentContracts) { foreach ($parentContracts as $contract) { if (isset($contract['serviceId'])) { if (in_array($contract['serviceId'], $valid_service_ids) and isset($candidateContracts[$contract['id']])) { $entries = array_merge($entries, $candidateContracts[$contract['id']]); } } } } } if (!$entries) { return new ListResultModel(array('items' => array(), 'count' => 0)); } $outputItems = array(); foreach ($entries as $entry) { $data = $this->_mapPybeModelToModel($entry); $outputItems[] = !is_null($this->_modelClassResult) ? new $this->_modelClassResult($data) : $data; } return new ListResultModel(array('items' => $outputItems, 'count' => count($outputItems))); }
protected function _setToProto(&$proto, $list, $setters) { foreach ($setters as $name => $set) { if (($value = \App_Util_Array::getItem($list, $set)) !== null) { $name = 'set' . ucfirst($name); $proto->{$name}($value); } } }
/** * Route shutdown hook -- Check for router exceptions * * @param Zend_Controller_Request_Abstract $request */ public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { if (!Zend_Auth::getInstance()->hasIdentity()) { return; } $ident = \Zend_Auth::getInstance()->getIdentity(); if (isset($ident['authType']) && in_array($ident['authType'], array(App_Controller_Plugin_Auth::AUTH_TYPE_ASYNC, App_Controller_Plugin_Auth::AUTH_TYPE_ACTIVATION_TOKEN, App_Controller_Plugin_Auth::AUTH_TYPE_DOWNLOAD_TOKEN, App_Controller_Plugin_Auth::AUTH_TYPE_EXTERNAL, App_Controller_Plugin_Auth::AUTH_TYPE_THIRD_PARTY, App_Controller_Plugin_Auth::AUTH_TYPE_LOST_PASSWORD, App_Controller_Plugin_Auth::AUTH_TYPE_LOST_PASSWORD_TOKEN, App_Controller_Plugin_Auth::AUTH_TYPE_PASSWORD_EXPIRED_TOKEN))) { return; } $sessionMapper = SessionMapper::getInstance(); $session = $sessionMapper->findOneById(\Zend_Session::getId()); if (!$session || !isset($session['id'])) { return; } if (($user = UserMapper::getInstance()->findOneById($session['id'])) && isset(self::$cookieLifeTimeByOrgType[$user->getOrgType()])) { $cookieLifeTime = self::$cookieLifeTimeByOrgType[$user->getOrgType()]; } else { $cookieLifeTime = self::$defaultCookieLifeTime; } /* * Old sessions use string for created/expire field. New session use a MongoDate. */ $created = $session['metadata']['created']; if ($created instanceof \MongoDate) { $created = $created->sec; } if (time() - $created - $cookieLifeTime > 0) { $this->_forceLogout($request, "Session Expired", PermissionCodes::AUTH_SESSION_EXPIRED); return; } if (App_Util_Array::getItem(self::$avoidActions, $request->getModuleName() . '.' . $request->getControllerName() . '.' . $request->getActionName())) { return; } if ($request->getHeader('X-M2mNoRenewSession')) { return; } if (Zend_Session::isRegenerated()) { return; } if (time() - $created < (1 - self::$tolerance) * $cookieLifeTime && (!self::$useProbability || rand(0, self::$probability))) { return; } $sessionMapper->renewSession(\Zend_Session::getId()); // Zend_Session::regenerateId(); // if (isset($data['logout'])) { // $sessionMapper->logoutSessionBySessionId(Zend_Session::getId(), $data['logout']); // } else if (isset($data['messages'])) { // $sessionMapper->addAllMessagesToAllSessionsBySessionId(Zend_Session::getId(), $data['messages']); // } }
/** * Defined by Zend_Validate_Interface * * Returns true if and only if the string length of $value is at least the min option and * no greater than the max option (when the max option is not null). * * @param string $value * @return boolean */ public function isValid($value) { if (!is_array($value)) { $this->_error(self::INVALID); return false; } $checkValues = array(); foreach ($value as $item) { $v = $this->_checkField ? \App_Util_Array::getItem($item, $this->_checkField) : $item; if (NULL !== $v) { if (!isset($checkValues[$v])) { $checkValues[$v] = 0; } $checkValues[$v]++; if ($checkValues[$v] > $this->_max) { $this->_error(self::TOO_MANY, $v); return false; } } } foreach ($checkValues as $key => $count) { if ($count < $this->_min) { $this->_error(self::TOO_FEW, $key); return false; } } return true; }
protected function _internalRender($name) { $vars = $this->getVars(); if (!empty($vars['data']) && count($vars['data'])) { $headers = $this->getHeaders(); if (empty($headers)) { foreach ($vars['data'] as $key => $value) { $this->_processHeaders($headers, $value); } } $headers = $this->_filterData($headers); $resultData = $vars['data']; $file = $this->getStream(); if ($file === false) { throw new GlobalServiceException("Impossible to create csv file"); } // UTF-8 BOM (Excel issues) fwrite($file, ""); $fileHeaders = $this->getFileHeaders(); foreach ($fileHeaders as $fileHeader) { if (fputcsv($file, $fileHeader, $this->getSeparator()) === false) { throw new GlobalServiceException("Impossible to write file header on csv file"); } } if (fputcsv($file, $headers, $this->getSeparator()) === false) { throw new GlobalServiceException("Impossible to write headers on csv file"); } foreach ($resultData as $item) { $itemCsv = array(); foreach ($headers as $key => $caption) { $value = App_Util_Array::getItem($item, $key); $itemCsv[] = $value !== null ? $this->_filterValue($key, $value, $item) : ''; } if ($this->_skipEmptyItems && App_Util_Array::isEmpty($itemCsv)) { continue; } if (fputcsv($file, $itemCsv, $this->getSeparator()) === false) { throw new GlobalServiceException("Impossible to write row on csv file"); } } if (method_exists($resultData, 'getSecondList') && ($secondList = $resultData->getSecondList())) { if (fputcsv($file, array(), $this->getSeparator()) === false) { throw new GlobalServiceException("Impossible to write second list separator on csv file"); } foreach ($secondList as $item) { if (fputcsv($file, $item, $this->getSeparator()) === false) { throw new GlobalServiceException("Impossible to write second list on csv file"); } } } $fileFooters = $this->getFileFooters(); foreach ($fileFooters as $fileFooter) { if (fputcsv($file, $fileFooter, $this->getSeparator()) === false) { throw new GlobalServiceException("Impossible to write file footer on csv file"); } } } }
public function testWildcardUnSetItemWithCount() { \App_Util_Array::setItem($this->_data, 'a.*.c', 'a'); $count = 1; \App_Util_Array::unsetItem($this->_data, 'a.*.c', $count); $this->assertNull(\App_Util_Array::getItem($this->_data, 'a.b.c')); $this->assertNotNull(\App_Util_Array::getItem($this->_data, 'a.d.c')); }
public function testGetConfigArray() { $struct = new StructConfigModel($this->_data); $this->assertEquals(App_Util_Array::getItem($this->_data, 'key1.key1_1'), $struct->getConfig(array('key' => 'key1.key1_1', 'default' => 'pop1'))); }
public function findAllPage($filters) { $filterList = $filters['filterList']; $paging = $filters['paging']; $result = $this->_getPybeService()->callMethod($this::LIST_METHOD, $this->_mapFilterListPaging($filterList, $paging)); $httpResponse = $this->_getPybeService()->getLastResult(); $this->_checkResponseResult($httpResponse, 'Pybe error: findAll function'); $filterList->setOldCount(\App_Util_Array::getItem($result, $this::LIST_KEY . '.count') ?: 0); $entries = \App_Util_Array::getItem($result, $this::LIST_KEY . '.items') ?: array(); return $entries; }
public function getAction() { parent::getAction(); $type = \App_Util_Array::getItem($this->view->data, 'params.params.reportType'); // Custom download report params switch ($type) { case ReportModel::KPI_MONTHLY: \App_Util_Array::unsetItem($this->view->data, 'params.params.orgId'); break; case ReportModel::SUBSCRIPTION_SNAPSHOT_DAILY: $date = \App_Util_Array::getItem($this->view->data, 'params.params.dateDaily'); \App_Util_Array::setItem($this->view->data, 'params.params.date', $date); \App_Util_Array::unsetItem($this->view->data, 'params.params.dateDaily'); break; } }
protected function _mapEricssonModelToModel(array $data) { \App_Util_Array::changePropertyName($data, 'customer', 'customerData'); $data = parent::_mapEricssonModelToModel($data); \App_Util_Array::changePropertyName($data, 'customerData.fiscalNumber', 'customerData.defaultBillingAccount.fiscalNumber'); if (isset($data['customerData'])) { $data['customer'] = OrgCustomerMapper::getInstance()->mapToModel($data['customerData']); unset($data['customerData']); } if (isset($data['serviceProviderData'])) { $data['serviceProvider'] = OrgServiceProviderMapper::getInstance()->mapToModel($data['serviceProviderData']); unset($data['serviceProviderData']); } if (isset($data['billingAccountData'])) { $data['billingAccountName'] = $data['billingAccountData']['name']; if (isset($data['billingAccountData']['region'])) { $data['billingAccountRegion'] = $data['billingAccountData']['region']; } unset($data['billingAccountData']); } \App_Util_Array::changePropertyName($data, 'prebillBillingcycle', 'billingCycle'); if (isset($data['billingCycle'])) { foreach ($data['billingCycle'] as &$bc) { $this->_mapReference($bc, 'billingAccount'); } } $this->_mapReference($data, 'billingAccount'); if (isset($data['datesData'])) { $data += $data['datesData']; unset($data['datesData']); } \App_Util_Array::changePropertiesNames($data, array('totalChargeData' => 'totalCharge', 'totalCharge.adjusts.adjustList' => 'totalCharge.adjusts', 'adjusts.adjustList' => 'adjusts', 'serviceGlobalCharges.basicServicesCustomerCharges' => 'serviceGlobalCharges.basicServices', 'serviceGlobalCharges.basicServices.commercialGroupData' => 'serviceGlobalCharges.basicServices.commercialGroup', 'serviceGlobalCharges.supplementaryServicesCustomerCharges' => 'serviceGlobalCharges.supplServices', 'subscriptionsChargesSummary.basicServices.commercialGroupData' => 'subscriptionsChargesSummary.basicServices.commercialGroup', 'subscriptionsChargesSummary.supplementaryServices' => 'subscriptionsChargesSummary.supplServices')); if (isset($data['serviceGlobalCharges']) && isset($data['serviceGlobalCharges']['basicServices']) && isset($data['serviceGlobalCharges']['basicServices']['commercialGroup'])) { foreach ($data['serviceGlobalCharges']['basicServices']['commercialGroup'] as &$item) { $this->_mapReference($item, 'aggregator'); } } if (isset($data['subscriptionsChargesSummary']) && isset($data['subscriptionsChargesSummary']['basicServices']) && isset($data['subscriptionsChargesSummary']['basicServices']['commercialGroup'])) { foreach ($data['subscriptionsChargesSummary']['basicServices']['commercialGroup'] as &$item) { \App_Util_Array::changePropertiesNames($item, array('oneTimeFee.lifecycleStateChangeEvent' => 'oneTimeFee.lifecycleStatusChangeEvent', 'monthlyFee.activeStateRecurrentFee' => 'monthlyFee.activeStatusRecurrentFee', 'monthlyFee.deactivatedStateRecurrentFee' => 'monthlyFee.deactivatedStatusRecurrentFee', 'monthlyFee.activationReadyRecurrentFee' => 'monthlyFee.activationReadyStatusRecurrentFee', 'monthlyFee.activationPendingRecurrentFee' => 'monthlyFee.activationPendingStatusRecurrentFee')); $this->_mapReference($item, 'aggregator'); } } if (!isset($data["published"])) { $data["published"] = isset($data["issuedDate"]) && $data["issuedDate"]; } $customerDiscounts = \App_Util_Array::getItem($data, 'totalCharge.discounts.customer'); if (empty($customerDiscounts)) { \App_Util_Array::unsetItem($data, 'totalCharge.discounts.customer'); } return $data; }