View file application/modules/Core/Model/Banner.php

File size: 3.06Kb
<?php

/**
 * SocialEngine
 *
 * @category   Application_Extensions
 * @package    Classified
 * @copyright  Copyright 2006-2020 Webligo Developments
 * @license    http://www.socialengine.com/license/
 * @version    $Id: Classified.php 9747 2012-07-26 02:08:08Z john $
 * @author     Jung
 */

/**
 * @category   Application_Extensions
 * @package    Classified
 * @copyright  Copyright 2006-2020 Webligo Developments
 * @license    http://www.socialengine.com/license/
 */
class Core_Model_Banner extends Core_Model_Item_Abstract
{

  // Properties
  protected $_parent_type = null;
  protected $_searchTriggers = array();
  protected $_parent_is_owner = false;

  /**
   * Disable internal hooks?
   * @var boolean
   */
  protected $_disableHooks = true;

  // General
  /**
   * Gets an absolute URL to the page to view this item
   *
   * @return string
   */
  public function getCTAHref()
  {

    $params = $this->params;
    if( !empty($params['uri']) ) {
      return $params['uri'];
    }
    if( empty($params['route']) ) {
      return;
    }
    $route = $params['route'];
    unset($params['route']);
    $routeParams = array();
    if( isset($params['routeParams']) ) {
      $routeParams = $params['routeParams'];
    }
    return Zend_Controller_Front::getInstance()->getRouter()
        ->assemble($routeParams, $route, true);
  }

  public function getDescription()
  {
    // @todo decide how we want to handle multibyte string functions
    $tmpBody = strip_tags($this->body);
    return ( Engine_String::strlen($tmpBody) > 255 ? Engine_String::substr($tmpBody, 0, 255) . '...' : $tmpBody );
  }

  public function getCTALabel()
  {
    return isset($this->params['label']) ? $this->params['label'] : '';
  }

  public function setPhoto($photo)
  {
    if( $photo instanceof Zend_Form_Element_File ) {
      $file = $photo->getFileName();
      $fileName = $file;
    } elseif( is_array($photo) && !empty($photo['tmp_name']) ) {
      $file = $photo['tmp_name'];
      $fileName = $photo['name'];
    } elseif( is_string($photo) && file_exists($photo) ) {
      $file = $photo;
      $fileName = $photo;
    } else {
      throw new Core_Model_Exception('invalid argument passed to setPhoto');
    }

    if( !$fileName ) {
      $fileName = basename($file);
    }

    $extension = ltrim(strrchr(basename($fileName), '.'), '.');
    $base = rtrim(substr(basename($fileName), 0, strrpos(basename($fileName), '.')), '.');
    $path = APPLICATION_PATH . DIRECTORY_SEPARATOR . 'temporary';

    $params = array(
      'parent_type' => 'banner',
      'parent_id' => $this->getIdentity(),
      'name' => $fileName,
    );

    // Save
    $filesTable = Engine_Api::_()->getDbtable('files', 'storage');

    // Resize image (main)
    $mainPath = $path . DIRECTORY_SEPARATOR . $base . '_m.' . $extension;
    $image = Engine_Image::factory();
    $image->open($file)
      ->write($mainPath)
      ->destroy();
    // Store
    $iMain = $filesTable->createFile($mainPath, $params);

    // Remove temp files
    @unlink($mainPath);
    $this->photo_id = $iMain->file_id;
    $this->save();
    return $this;
  }

}