Beispiel #1
0
 /**
  * @param FieldType $fieldType Document field type.
  * @param mixed $value Field value.
  * @param string $toTypeClass Type class name.
  * @return null|mixed
  */
 public static function convertTo(FieldType $fieldType, $value, $toTypeClass)
 {
     /** @var Base $toTypeClass */
     $type = $toTypeClass::getType();
     switch ($type) {
         case FieldType::BOOL:
             $value = (bool) $value ? 'Y' : 'N';
             break;
         case FieldType::DATE:
             $value = date(Main\Type\Date::convertFormatToPhp(\FORMAT_DATE), (int) $value);
             break;
         case FieldType::DATETIME:
             $value = date(Main\Type\DateTime::convertFormatToPhp(\FORMAT_DATETIME), (int) $value);
             break;
         case FieldType::DOUBLE:
             $value = (double) $value;
             break;
         case FieldType::INT:
             $value = (int) $value;
             break;
         case FieldType::STRING:
         case FieldType::TEXT:
             $value = (string) $value;
             break;
         case FieldType::USER:
             $value = 'user_' . (int) $value;
             break;
         default:
             $value = null;
     }
     return $value;
 }
Beispiel #2
0
 /**
  * @param FieldType $fieldType Document field type.
  * @param mixed $value Field value.
  * @param string $toTypeClass Type class name.
  * @return null|mixed
  */
 public static function convertTo(FieldType $fieldType, $value, $toTypeClass)
 {
     /** @var Base $toTypeClass */
     $type = $toTypeClass::getType();
     switch ($type) {
         case FieldType::DOUBLE:
         case FieldType::INT:
             $value = $value ? (int) strtotime($value) : 0;
             break;
         case FieldType::DATE:
         case FieldType::DATETIME:
         case FieldType::STRING:
         case FieldType::TEXT:
             $value = (string) $value;
             if ($value) {
                 if ($type == FieldType::DATE) {
                     $format = \FORMAT_DATE;
                 } elseif ($type == FieldType::DATETIME) {
                     $format = \FORMAT_DATETIME;
                 } else {
                     $format = static::getType() == FieldType::DATE ? \FORMAT_DATE : \FORMAT_DATETIME;
                 }
                 if (\CheckDateTime($value, $format)) {
                     $value = date(Type\Date::convertFormatToPhp($format), \MakeTimeStamp($value, $format));
                 } else {
                     $value = date(Type\Date::convertFormatToPhp($format), strtotime($value));
                 }
             }
             break;
         default:
             $value = null;
     }
     return $value;
 }
Beispiel #3
0
 /**
  * @param FieldType $fieldType Document field type.
  * @param mixed $value Field value.
  * @param string $toTypeClass Type class name.
  * @return null|mixed
  */
 public static function convertTo(FieldType $fieldType, $value, $toTypeClass)
 {
     /** @var Base $toTypeClass */
     $type = $toTypeClass::getType();
     switch ($type) {
         case FieldType::BOOL:
             $value = strtolower((string) $value);
             $value = in_array($value, array('y', 'yes', 'true', '1')) ? 'Y' : 'N';
             break;
         case FieldType::DATE:
             $value = date(Main\Type\Date::convertFormatToPhp(\FORMAT_DATE), strtotime($value));
             break;
         case FieldType::DATETIME:
             $value = date(Main\Type\DateTime::convertFormatToPhp(\FORMAT_DATETIME), strtotime($value));
             break;
         case FieldType::DOUBLE:
             $value = str_replace(' ', '', str_replace(',', '.', $value));
             $value = (double) $value;
             break;
         case FieldType::INT:
             $value = str_replace(' ', '', $value);
             $value = (int) $value;
             break;
         case FieldType::STRING:
         case FieldType::TEXT:
             $value = (string) $value;
             break;
         case FieldType::USER:
             $value = trim($value);
             if (strpos($value, 'user_') === false && strpos($value, 'group_') === false && !preg_match('#^[0-9]+$#', $value)) {
                 $value = null;
             }
             break;
         default:
             $value = null;
     }
     return $value;
 }
 public static function parseDateString($str)
 {
     if ($str === '') {
         return null;
     }
     try {
         $date = new Date($str, Date::convertFormatToPhp(FORMAT_DATE));
     } catch (Main\ObjectException $e) {
         try {
             $date = new DateTime($str, Date::convertFormatToPhp(FORMAT_DATETIME));
             $date->setTime(0, 0, 0);
         } catch (Main\ObjectException $e) {
             return null;
         }
     }
     return $date;
 }
Beispiel #5
0
 /**
  * <p>Преобразует дату из одного заданного формата в другой заданный формат. В формате допустимы следующие обозначения:</p> <p> </p> <table width="100%" class="tnormal"> <tr> <th width="40%">Обозначение</th> <th width="60%">Описание</th> </tr> <tr> <td>YYYY</td> <td>Год (0001 - 9999)</td> </tr> <tr> <td>MM</td> <td>Месяц (01 - 12)</td> </tr> <tr> <td>DD</td> <td>День (01 - 31)</td> </tr> <tr> <td>HH</td> <td>Часы (00 - 24)</td> </tr> <tr> <td>MI</td> <td>Минуты (00 - 59)</td> </tr> <tr> <td>SS</td> <td>Секунды (00 - 59)</td> </tr> </table> <p>Динамичный метод.</p>
  *
  *
  * @param string $date  Год (0001 - 9999)</b
  *
  * @param string $format = "DD.MM.YYYY Месяц (01 - 12)</bo
  *
  * @param H $H  День (01 - 31)</b
  *
  * @param M $I  Часы (00 - 24)</bo
  *
  * @param S $S  Минуты (00 - 59)</b
  *
  * @param  $string  Секунды (00 - 59)</bod
  *
  * @param new_forma $t = "DD.MM.YYYY 
  *
  * @param H $H  Дата для конвертации.
  *
  * @param M $I  Текущий формат даты. <br>Необязательный. По умолчанию - "DD.MM.YYYY HH:MI:SS".
  *
  * @param S $S  В какой формат необходимо преобразовать. <br>Необязательный. По
  * умолчанию - "DD.MM.YYYY HH:MI:SS".
  *
  * @return string 
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // зададим дату
  * $date = "31.12.2007";
  * 
  * // укажем формат этой даты
  * $format = "DD.MM.YYYY";
  * 
  * // получим формат текущего сайта
  * $new_format = CSite::GetDateFormat("SHORT"); // YYYY-MM-DD
  * 
  * // переведем дату из одного формата в другой
  * $new_date = $DB-&gt;<b>FormatDate</b>($date, $format, $new_format);
  * 
  * // в результате получим дату в новом формате
  * echo $new_date; // 2007-12-31
  * ?&gt;
  * 
  * 
  * &lt;?
  * // конвертация даты из формата одного сайта в формат другого
  * 
  * // получим формат сайта ru
  * $format_ru = CSite::GetDateFormat("SHORT", "ru"); // DD.MM.YYYY
  * 
  * // получим формат сайта en
  * $format_en = CSite::GetDateFormat("SHORT", "en"); // YYYY-MM-DD
  * 
  * // переведем дату из формата сайта ru в формат сайта en
  * $new_date = $DB-&gt;<b>FormatDate</b>($date, $format_ru, $format_en);
  * 
  * // в результате получим дату в новом формате
  * echo $date; // 2007-12-31
  * ?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/main/reference/cdatabase/dateformattophp.php">CDatabase::DateFormatToPHP</a>
  * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/csite/getdateformat.php">CSite::GetDateFormat</a>
  * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/functions/date/convertdatetime.php">ConvertDateTime</a> </li>
  * <li> <a href="http://dev.1c-bitrix.ru/api_help/main/functions/date/index.php">Функции для работы с
  * датой и временем</a> </li> </ul> <a name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/main/reference/cdatabase/formatdate.php
  * @author Bitrix
  */
 public static function FormatDate($strDate, $format = "DD.MM.YYYY HH:MI:SS", $new_format = "DD.MM.YYYY HH:MI:SS")
 {
     if (empty($strDate)) {
         return false;
     }
     if ($format === false && defined("FORMAT_DATETIME")) {
         $format = FORMAT_DATETIME;
     }
     $fromPhpFormat = Main\Type\Date::convertFormatToPhp($format);
     $time = false;
     try {
         $time = new Main\Type\DateTime($strDate, $fromPhpFormat);
     } catch (Main\ObjectException $e) {
     }
     if ($time !== false) {
         //Compatibility issue
         $fixed_format = preg_replace(array("/(?<!Y)Y(?!Y)/i", "/(?<!M)M(?!M|I)/i", "/(?<!D)D(?!D)/i", "/(?<!H)H:I:S/i"), array("YYYY", "MM", "DD", "HH:MI:SS"), strtoupper($new_format));
         $toPhpFormat = Main\Type\Date::convertFormatToPhp($fixed_format);
         return $time->format($toPhpFormat);
     }
     return false;
 }
Beispiel #6
0
 public function createInvoices(array $params)
 {
     $count = isset($params['COUNT']) ? (int) $params['COUNT'] : 0;
     if ($count <= 0) {
         return;
     }
     $sum = isset($params['SUM']) ? (int) $params['SUM'] : 0;
     if ($sum <= 0) {
         return;
     }
     $dealID = isset($params['DEAL_ID']) ? (int) $params['DEAL_ID'] : 0;
     $companyID = isset($params['COMPANY_ID']) ? (int) $params['COMPANY_ID'] : 0;
     $contactID = isset($params['CONTACT_ID']) ? (int) $params['CONTACT_ID'] : 0;
     $userIDs = isset($params['USER_IDS']) && is_array($params['USER_IDS']) ? $params['USER_IDS'] : array();
     if (empty($userIDs)) {
         $userIDs[] = \CCrmSecurityHelper::GetCurrentUserID();
     }
     $prefix = isset($params['PREFIX']) ? $params['PREFIX'] : '';
     if ($prefix === '') {
         $prefix = $this->id;
     }
     $date = isset($params['DATE']) ? $params['DATE'] : null;
     if (!$date) {
         $date = $date = new Date();
     }
     $maxDateOffset = isset($params['MAX_DATE_OFFSET']) ? (int) $params['MAX_DATE_OFFSET'] : 0;
     $dateFormat = Date::convertFormatToPhp(FORMAT_DATE);
     $dateTimeFormat = Date::convertFormatToPhp(FORMAT_DATETIME);
     $isWon = isset($params['IS_WON']) ? $params['IS_WON'] : false;
     if ($isWon) {
         $totalSum = $sum;
     } else {
         $totalSum = $sum - mt_rand((int) ($sum / 3), $sum);
     }
     $entity = new \CCrmInvoice(false);
     $invoiceSum = (int) $totalSum / $count;
     $totalInvoiceSum = 0;
     for ($i = 1; $i <= $count; $i++) {
         if ($i == $count) {
             $invoiceSum = $totalSum - $totalInvoiceSum;
         }
         $totalInvoiceSum += $invoiceSum;
         $time = DateTime::createFromTimestamp($date->getTimestamp());
         if ($maxDateOffset > 0) {
             $time->add(mt_rand(0, $maxDateOffset) . ' days');
         }
         $time->setTime(mt_rand(8, 20), mt_rand(0, 59), 0);
         $siteTime = $time->format($dateTimeFormat);
         $siteDate = $time->format($dateFormat);
         \CCrmOwnerType::GetCaption(\CCrmOwnerType::Company, $companyID, false);
         $companyInfo = self::getCompanyInfo($companyID);
         $contactInfo = self::getContactInfo($contactID);
         $fields = array('ORDER_TOPIC' => "{$prefix} invoice # {$i}", 'STATUS_ID' => $isWon ? 'P' : 'N', 'DATE_INSERT' => $siteTime, 'DATE_BILL' => $siteDate, 'RESPONSIBLE_ID' => self::getRandomItem($userIDs), 'UF_DEAL_ID' => $dealID, 'UF_COMPANY_ID' => $companyID, 'UF_CONTACT_ID' => $contactID, 'PERSON_TYPE_ID' => 1, 'PAY_SYSTEM_ID' => 1, 'INVOICE_PROPERTIES' => array(10 => $companyInfo['TITLE'], 11 => $companyInfo['FULL_ADDRESS'], 12 => $contactInfo['FULL_NAME'], 13 => $contactInfo['EMAIL'], 14 => $contactInfo['PHONE']), 'PRODUCT_ROWS' => array(array('ID' => 0, 'PRODUCT_NAME' => "{$prefix} product", 'QUANTITY' => 1, 'PRICE' => $invoiceSum, 'PRODUCT_ID' => 0, 'CUSTOMIZED' => 'Y')));
         $ID = $entity->Add($fields);
     }
 }
Beispiel #7
0
 function DateFormatToPHP($format)
 {
     static $cache = array();
     if (!isset($cache[$format])) {
         $cache[$format] = Main\Type\Date::convertFormatToPhp($format);
     }
     return $cache[$format];
 }