public function createSet($name)
 {
     $id = str_replace('-', '_', shopHelper::transliterate($name));
     $id = $this->set_model->suggestUniqueId($id);
     if (empty($name)) {
         $name = _w('(no-name)');
     }
     return $this->set_model->add(array('id' => $id, 'name' => $name));
 }
 public function createCategory($name)
 {
     $url = shopHelper::transliterate($name, false);
     $url = $this->category_model->suggestUniqueUrl($url);
     if (empty($name)) {
         $name = _w('(no-name)');
     }
     return $this->category_model->add(array('name' => $name, 'url' => $url));
 }
 public function getData($id)
 {
     $data = waRequest::post('info');
     if (!$id) {
         $product_id = waRequest::get('product_id', null, waRequest::TYPE_INT);
         $product = $this->getProduct($product_id);
         $data['product_id'] = $product['id'];
     }
     $data['url'] = trim($data['url'], '/');
     if (!$id && !$data['url']) {
         $data['url'] = shopHelper::transliterate($data['name']);
     }
     if (empty($data['name'])) {
         $data['name'] = '(' . _ws('no-title') . ')';
     }
     $data['status'] = isset($data['status']) ? 1 : 0;
     return $data;
 }
 private function saveSetSettings($id, &$data)
 {
     if (empty($data['count']) || $data['count'] < 0) {
         $data['count'] = 0;
     }
     /**
      * @var shopSetModel $model
      */
     $model = $this->getModel('set');
     if (!$id) {
         if (empty($data['id'])) {
             $id = shopHelper::transliterate($data['name']);
             $data['id'] = $model->suggestUniqueId($id);
         } else {
             $data['id'] = $model->suggestUniqueId($data['id']);
         }
         if (!$this->setSettingsValidate(null, $data)) {
             return false;
         }
         if (empty($data['name'])) {
             $data['name'] = _w('(no-name)');
         }
         $id = $model->add($data);
     } else {
         $set = $model->getById($id);
         if (!$this->setSettingsValidate($set, $data)) {
             return false;
         }
         if (empty($data['name'])) {
             $data['name'] = $set['name'];
         }
         if (!empty($data['id'])) {
             $id = $data['id'];
         } else {
             $id = shopHelper::transliterate($data['name']);
             if ($id != $set['id']) {
                 $id = $model->suggestUniqueId($id);
             }
             $data['id'] = $id;
         }
         $data['edit_datetime'] = date('Y-m-d H:i:s');
         $model->update($set['id'], $data);
     }
     if ($id) {
         $data['id'] = $data;
         /**
          * @event set_save
          * @param array $set
          * @return void
          */
         wa()->event('set_save', $data);
     }
     return $id;
 }
 /**
  * Create new waContactField of appropriate type from given array of options.
  */
 public static function createFromOpts($opts, $occupied_keys = array())
 {
     if (!is_array($opts) || empty($opts['_type'])) {
         return null;
     }
     // Generate field_id from name
     $fld_id = shopHelper::transliterate((string) ifset($opts['localized_names'], ''));
     if (!$fld_id) {
         $fld_id = 'f';
     }
     if (strlen($fld_id) > 15) {
         $fld_id = substr($fld_id, 0, 15);
     }
     while (isset($occupied_keys[$fld_id])) {
         if (strlen($fld_id) >= 15) {
             $fld_id = substr($fld_id, 0, 10);
         }
         $fld_id .= mt_rand(0, 9);
     }
     // Create field object of appropriate type
     $options = array('app_id' => 'shop');
     $ftype = strtolower($opts['_type']);
     switch ($ftype) {
         case 'textarea':
             $class = 'waContactStringField';
             $options['input_height'] = 5;
             break;
         case 'radio':
             $class = 'waContactRadioSelectField';
             break;
         default:
             $class = 'waContact' . ucfirst($ftype) . 'Field';
     }
     if (!$ftype || !class_exists($class)) {
         return null;
     }
     return new $class($fld_id, '', $options);
 }
Пример #6
0
 /**
  * @param $url
  * @param waModel $context
  * @param int $length
  * @param string $field
  * @return string
  */
 public static function genUniqueUrl($url, $context, &$counter = 0, $length = 512, $field = 'url')
 {
     $counter = 0;
     $url = preg_replace('/\\s+/', '-', $url);
     $url = shopHelper::transliterate($url);
     if (strlen($url) == 0) {
         $url = (time() << 24) + $counter++;
     } else {
         $url = mb_substr($url, 0, $length);
     }
     $url = mb_strtolower($url);
     $pattern = mb_substr($context->escape($url, 'like'), 0, $length - 3) . '%';
     $sql = "SELECT `{$field}` FROM {$context->getTableName()} WHERE url LIKE '{$pattern}' ORDER BY LENGTH(`{$field}`)";
     $alike = $context->query($sql)->fetchAll('url');
     if (is_array($alike) && isset($alike[$url])) {
         $last = array_shift($alike);
         $counter = 1;
         do {
             $modifier = "-{$counter}";
             $_length = mb_strlen($modifier);
             $url = mb_substr($last['url'], 0, $length - $_length) . $modifier;
         } while (isset($alike[$url]) && ++$counter < 100);
         if (isset($alike[$url])) {
             $short_uuid = (time() << 24) + $counter++;
             $_length = mb_strlen($short_uuid);
             $url = mb_substr($last['url'], 0, $length - $_length) . $short_uuid;
         }
     }
     return mb_strtolower($url);
 }
 public function execute()
 {
     $this->response = shopHelper::transliterate(waRequest::get('str', '', waRequest::TYPE_STRING_TRIM), waRequest::get('strict', 1, waRequest::TYPE_INT));
 }