示例#1
0
 /**
  * Upload a resource file
  *
  * @param integer|string $objectId
  * @param array $file
  *      string name
  *      string type
  *      string tmp_name
  *      integer error
  *      integer size
  * @param string $path
  * @param boolean $addSalt
  * @param integer $saltLength
  * @return string|boolean
  */
 public static function uploadResourceFile($objectId, $file, $path, $addSalt = true, $saltLength = 5)
 {
     $fileInfo = pathinfo($file['name']);
     $salt = $addSalt ? '_' . SlugUtility::generateRandomSlug($saltLength) : null;
     $fileName = $objectId . $salt . (!empty($fileInfo['extension']) ? '.' . strtolower($fileInfo['extension']) : null);
     $basePath = ApplicationService::getResourcesDir() . $path;
     if (is_writable($basePath)) {
         if (true === ($result = move_uploaded_file($file['tmp_name'], $basePath . $fileName))) {
             @chmod($basePath . $fileName, self::DEFAULT_FILE_PERMISSIONS);
             return $fileName;
         }
     }
     return false;
 }
 /**
  * Generate a rand string
  *
  * @param integer $length
  * @param  string $charList
  * @return string
  */
 public function generateRandString($length = 10, $charList = null)
 {
     return SlugUtility::generateRandomSlug($length, $charList);
 }
示例#3
0
 /**
  * Slugify a file name
  *
  * @param string $fileName
  * @param boolean $addSalt
  * @param boolean $processFullName
  * @return string
  */
 public static function slugifyFileName($fileName, $addSalt = true, $processFullName = false)
 {
     $fileExtension = FileSystemUtility::getFileExtension($fileName);
     $fileName = FileSystemUtility::getFileName($fileName);
     $maxFileNameLength = !$processFullName && $fileExtension ? (int) SettingService::getSetting('file_manager_file_name_length') - (strlen($fileExtension) + 1) : (int) SettingService::getSetting('file_manager_file_name_length');
     $slug = SlugUtility::slugify($processFullName && $fileExtension ? $fileName . '.' . $fileExtension : $fileName, $maxFileNameLength, '_', 0, self::$fileNamePattern);
     if (!$slug && $addSalt) {
         $slug = SlugUtility::generateRandomSlug($maxFileNameLength);
     }
     return $slug;
 }
 /**
  * Generate page slug
  *
  * @param integer $pageId
  * @param string $title
  * @param string $spaceDevider
  * @return string
  */
 public function generatePageSlug($pageId, $title, $spaceDevider = '-')
 {
     // generate a slug
     $newSlug = $slug = SlugUtility::slugify($title, self::PAGE_SLUG_LENGTH, $spaceDevider);
     $slagSalt = null;
     while (true) {
         // check the slug existent in structure pages
         $select = $this->select();
         $select->from('page_structure')->columns(['slug'])->where(['slug' => $newSlug, 'language' => $this->getCurrentLanguage()]);
         $select->where([new NotInPredicate('id', [$pageId])]);
         $statement = $this->prepareStatementForSqlObject($select);
         $structurePagesResultSet = new ResultSet();
         $structurePagesResultSet->initialize($statement->execute());
         // check the slug existent in system pages
         $select = $this->select();
         $select->from('page_system')->columns(['slug'])->where(['slug' => $newSlug]);
         $statement = $this->prepareStatementForSqlObject($select);
         $systemPagesResultSet = new ResultSet();
         $systemPagesResultSet->initialize($statement->execute());
         // generated slug not found
         if (!$structurePagesResultSet->current() && !$systemPagesResultSet->current()) {
             break;
         }
         $newSlug = $pageId . $spaceDevider . $slug . $slagSalt;
         // add an extra slug
         $slagSalt = $spaceDevider . SlugUtility::generateRandomSlug($this->slugLength);
         // add a slug
     }
     return $newSlug;
 }
示例#5
0
 /**
  * Generate slug
  *
  * @param integer $objectId
  * @param string $title
  * @param string $table
  * @param string $idField
  * @param integer $slugLength
  * @param array $filters
  * @param string $slugField
  * @param string $spaceDivider
  * @return string
  */
 public function generateSlug($objectId, $title, $table, $idField, $slugLength = 60, array $filters = [], $slugField = 'slug', $spaceDivider = '-')
 {
     // generate a slug
     $newSlug = $slug = SlugUtility::slugify($title, $slugLength, $spaceDivider);
     $slagSalt = null;
     while (true) {
         // check the slug existent
         $select = $this->select();
         $select->from($table)->columns([$slugField])->where([$slugField => $newSlug, 'language' => $this->getCurrentLanguage()] + $filters);
         $select->where([new NotInPredicate($idField, [$objectId])]);
         $statement = $this->prepareStatementForSqlObject($select);
         $resultSet = new ResultSet();
         $resultSet->initialize($statement->execute());
         // generated slug not found
         if (!$resultSet->current()) {
             break;
         } else {
             $newSlug = $objectId . $spaceDivider . $slug . $slagSalt;
         }
         // add an extra slug
         $slagSalt = $spaceDivider . SlugUtility::generateRandomSlug($this->slugLength);
         // add a salt
     }
     return $newSlug;
 }