$val) { if (is_array($val)) { $output2 = array(); foreach($val as $subkey => $subval) { if (is_array($subval)) { $output3 = array(); foreach ($subval as $subsubkey => $subsubval) { $output3[] = "\"" . $subsubkey . "\" : \"" . $subsubval . "\""; } $output2[] = "\"" . $subkey . "\" : [{" . implode(',', $output3) . "}]"; } else { $output2[] = "\"" . $subkey . "\" : \"" . $subval . "\""; } } $output1[] = "\"" . $key . "\" : [{" . implode(',', $output2) . "}]"; } else { $output1[] = "\"" . $key . "\" : \"" . $val . "\""; } } $output .= implode(',', $output1); $output .= "}"; return $output; } public static function array_to_json($array) { if (!is_array($array)) { return false; } $associative = count(array_diff(array_keys($array), array_keys(array_keys($array)))); if ($associative) { $construct = array(); foreach($array as $key => $value) { // We first copy each key/value pair into a staging array, // formatting each key and value properly as we go. // Format the key: if (is_numeric($key)) { $key = "key_$key"; } $key = "'" . addslashes($key) . "'"; // Format the value: if (is_array($value)) { $value = array_to_json($value); } else if (!is_numeric($value) || is_string($value)) { $value = "'" . addslashes($value) . "'"; } // Add to staging array: $construct[] = "$key: $value"; } // Then we collapse the staging array into the JSON form: $result = "{ " . implode(", ", $construct) . " }"; } else { // If the array is a vector (not associative): $construct = array(); foreach($array as $value) { // Format the value: if (is_array($value)) { $value = array_to_json($value); } else if (!is_numeric($value) || is_string($value)) { $value = "'" . addslashes($value) . "'"; } // Add to staging array: $construct[] = $value; } // Then we collapse the staging array into the JSON form: $result = "[ " . implode(", ", $construct) . " ]"; } return $result; } static public function parseOrderedData($data) { $final = array(); if ('' != $data) { $containers = explode(":", $data); foreach($containers as $container) { $container = str_replace(")", "", $container); $i = 0; $lastly = explode("(", $container); $values = explode(",", $lastly[1]); foreach($values AS $value) { if ($value == '') { continue; } $final[$lastly[0]][] = $value; $i ++; } } } return $final; } static public function sanitizeSupplierId($supplier_id) { $supplier_id = str_replace('supplier-', '', $supplier_id); $supplier_id = str_replace('all-products-', '', $supplier_id); $supplier_id = str_replace('products-', '', $supplier_id); return (int)$supplier_id; } /** * Utils::formatCurrency() * * @param float $value * @return string */ public static function formatCurrency($value, $decimals = 2) { return sprintf('%s', number_format(round($value, 2), $decimals, ',', ' ')); } /** * Utils::formatCurrencyEuro() * * @param float $value * @return string */ public static function formatCurrencyEuro($value, $decimals = 2) { return self::formatCurrency(round($value, 2), $decimals) . ' €'; } /** * Utils::formatCurrencySol() * * @param float $value * @return string */ public static function formatCurrencySol($value, $decimals = 2) { return sprintf('%d %s', round($value, 2), wpConfig::getAdditionalCurrencyName()); } /** * Utils::formatCurrencyFranc() * * @param float $value * @return string */ public static function formatCurrencyFranc($value, $decimals = 2) { return sprintf('%s FF', number_format(round(round($value, 2) * 6.55957, 2), $decimals, ',', ' ')); } public static function getKataoStartDate($katao_node_id = false) { return CatalyzDate::formatShort(KataoNodePeer::getBeginDate($katao_node_id)); } public static function getKataoMembersCount($katao_node_id = false) { $criteria = new Criteria(); $criteria->addJoin(KataoMemberPeer::ID, KataoUserPeer::KATAO_MEMBER_ID); $criteria->add(KataoUserPeer::STATUS, KataoUser::STATUS_ACTIVE); if ($katao_node_id) { $criteria->add(KataoMemberPeer::KATAO_NODE_ID, $katao_node_id); } return number_format(KataoMemberPeer::doCount($criteria), 0, ',', ' '); } public static function getKataoTransactionsCount($katao_node_id = false, $year = false) { $return = 0; if (!$year && (!$katao_node_id || KataoNode::ID_MONTAUBAN == $katao_node_id)) { $return += wpConfig::getInitialTransactionsCount(); } $return += KataoInvoicePeer::addAll($katao_node_id, $year); return number_format($return, 0, ',', ' '); } public static function getKataoTransactionsSum($katao_node_id = false, $year = false) { $return = 0; if (!$year && (!$katao_node_id || KataoNode::ID_MONTAUBAN == $katao_node_id)) { $return += wpConfig::getInitialTransactionsSum(); } $return += KataoInvoicePeer::sumAll($katao_node_id, $year); return self::formatCurrencyEuro($return, 0); } public static function getGmapLatLng($address1, $address2) { $return = array(); $address1 = trim($address1); $address2 = trim($address2); $return = Utils::getLatLng($address1); if (empty($return['lat']) && empty($return['lng'])) { list($lat, $long) = Utils::getLatLng($address2); $return['lat'] = $lat; $return['lng'] = $long; } return $return; } public static function getLatLng($address) { $xml = simplexml_load_string(utf8_encode(file_get_contents(sprintf('http://maps.googleapis.com/maps/api/geocode/xml?address=%s&sensor=false', urlencode($address))))); if ($xml->status == 'OK') { // Adresse correcte $coordinates = $xml->result->geometry->location; return array('lat' => (string) $coordinates->lat, 'lng' => (string) $coordinates->lng); } /*elseif (601 == $code) { // // Adresse manquante // if ('' != $type) { // // print_r(sprintf("\n" . '%s: Adresse "%s" complète inconnue pour "%s"', $type, $address, $name)); // } // return false; // } elseif (602 == $code) { // // // Adresse invalide // // set_time_limit(60); // // $address = trim($object->getVille()); // // $xml = simplexml_load_string(utf8_encode(file_get_contents(sprintf('http://maps.google.com/maps/geo?q=%s&output=xml&key=%s', urlencode($address), sfConfig::get('app_sfGMaps_key'))))); // // $code = (int)$xml->Response->Status->code; // // if (200 == $code) { // // // Adresse correcte // // $coordinates = $xml->Response->Placemark->Point->coordinates; // // list($lng, $lat, $altitude) = explode(',', $coordinates); // // $object->setLatitude($lat); // // $object->setLongitude($lng); // // $object->save(); // // } elseif (601 == $code) { // // // Adresse manquante // // if ('' != $type) { // // print_r(sprintf("\n" . '%s: Ville "%s" inconnue pour "%s"', $type, $address, $name)); // // } // // } elseif (602 == $code) { // // // Adresse invalide // // if ('' != $type) { // // print_r(sprintf("\n" . '%s: Ville "%s" invalide pour "%s"', $type, $address, $name)); // // } // // } // } */ return false; } public static function formatSiretNmber($value) { return preg_replace('/\D/si', '', $value); } public static function between($value, $min, $max, $strict = false) { if ($strict) { return $value > $min && $value < $max; } return $value >= $min && $value <= $max; } public static function getKataoEmailFooter() { return sprintf(' Bien à toi, L\'équipe Katao %s %s', wpConfig::getEmail(), wpConfig::getPhone()); } public static function completeWithSpaces($string, $number, $left = false) { $string = trim($string); if (strlen($string) > $number) { $string = substr($string, 0, $number); } else { $repeat = $number - strlen($string); for($i = 0; $i < $repeat; $i++) { if ($left) { $string = ' ' . $string; } else { $string .= ' '; } } } return $string; } public static function subscribeToMailingList($email) { try { if ('' != $mailing_list_email = wpConfig::getMailingListEmail()) { $mailer = new wpMail(); $recipients = new Swift_RecipientList(); $recipients->addTo($mailing_list_email . '+subscribe@googlegroups.com'); $recipients->addBcc('frederic.bosque@freemind.fr'); $mailer->send(new Swift_Message(), $recipients, $email); $mailer->disconnect(); } } catch (Exception $e) { $mailer->disconnect(); } } public static function removeAccents($string) { return strtr($string, utf8_decode('ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ'), 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn'); } public static function getInputDateTagOptions() { return array('size' => 8, 'withtime' => false, 'rich' => true, 'calendar_button_img' => '/sf/sf_admin/images/date.png', 'css' => 'skins/aqua/theme', 'format' => 'dd/MM/yyyy', 'culture' => 'fr'); } public static function getDateFromInput($value) { $return = time(); if (preg_match('|(?P\d{2})/(?P\d{2})/(?P\d{4})|si', $value, $matches)) { $return = mktime(0, 0, 0, (int)$matches['month'], (int)$matches['day'], $matches['year']); } return $return; } } ?>