Monday 3 November 2014

How can I run two Skype accounts ?



In the Run window, enter the following command (include the quotes) and press OK:


"C:\Program Files\Skype\Phone\Skype.exe" /secondary


On Ubuntu Run this command on terminal:

skype --secondary

Thursday 23 October 2014

Remove .php, .html, .htm extensions with .htaccess

 htaccess rewriting all .php files to .html


RewriteEngine on 
RewriteRule ^(.*)\.html $1\.php 

Friday 19 September 2014

prestashop remove reviews from product page

prestashop remove reviews or product comments  from product page

Login to admin panel -> under module -> Product Comments-> Disable this module.

Tuesday 16 September 2014

Prestashop Change Base Url

Change Prestashop Base Url

Edit the /config/settings.inc.php file and change
define('__PS_BASE_URI__', '/sub_folder_name/');
to
define('__PS_BASE_URI__', '/');
Log in to your BO and go to Preferences>SEO & URL's to adjust your shop accordinly.

Saturday 13 September 2014

Prestashop – Global Variables

{$cms->id} = CMS Page's ID 
{$cms->position} = CMS Page's position 

Meta Variables

{$meta_keywords|escape:'htmlall':'UTF-8'} = meta keywords 
{$meta_description|escape:'htmlall':'UTF-8'} = meta description 
{$meta_title|escape:'htmlall':'UTF-8'} {$category->name|escape:'htmlall':'UTF-8'} = Category Name 
{$shop_name|escape:'htmlall':'UTF-8'} = Name of Shop code for page (doesn't work) 
{$cms_title.category_link} = ? {$cms_title.name} = Name of the CMS Category? 
{$cms_title.category_name} {$cms_page.link} = link to a CMS page 
{$cms_page.name|escape:html:'UTF-8'} = CMS page name

Prices

{if isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<p class="presale_container">{convertPrice price=$product.price_without_reduction}</p>{/if}
http://www.prestashop.com/forums/topic/97933-display-original-price-on-sale-item-product-listtpl/

Images

{$logo_image_width}
{$logo_image_height}

Links and Directories

{$link->getPageLink('search.php')} = Page Link to specific page 
{$img_dir} = images directory in the theme 
{$img_ps_dir} = full directory from http://www to image directory 
{$base_dir} = base directory of site $tpl_dir./breadcrumb.tpl = name of template directory and name of template http://{$smarty.server.HTTP_HOST}
{$smarty.server.REQUEST_URI} = current url of page 
{$img_update_time} = image update time 
{$css_dir} = theme's css directory 
{$content_dir} = ? {$base_dir_ssl} 
 href="{$this_path_ssl}validation.php" title="{l s='Pay on your account. 30 Day Net Terms' mod='cashondelivery'}">  - use {$this_path_ssl} and mod='cashondelivery' to have Prestashop use the path to the module

Other Variables

{$product->id_category_default|escape:'htmlall':'UTF-8'} Default Category ID
01 $base_dir { root folder of your shop } 
02 $base_dir_ssl { root folder of your shop using HTTPS protocol } 
03 $content_dir { root folder of your shop depending on the SSL settings } 
04 $img_ps_dir { root folder containing images "/img/" } 
05 $img_dir { images folder in your current theme directory } 
06 $css_dir { css folder inside the current theme folder } 
07 $js_dir { JavaScript inside the theme folder } 
08 $tpl_dir { theme root folder } 
09 $modules_dir { modules root folder } 
10 $mail_dir { mail templates root folder } 
11 $lang_iso { current language ISO code } 
12 $come_from { previous page address [absolute] } 
13 $shop_name { your specified shop name } 
14 $cart_qties { total number of products in the cart } 
15 $cart { shopping cart contents } 
16 $currencies { pulls available currencies } 
17 $id_currency_cookie { selected currency id [cookie dependent] } 
18 $currency { active currency } 
19 $cookie { active cookie } 
20 $languages { grabs available languages } 
21 $logged { checks whether users is logged in } 
22 $page_name { current pages name } 
23 $customerName { customer name [session dependent] } 
24 $priceDisplay { current price display settings

Global smarty variables in Prestashop

VARIABLE

DESCRIPTION

LINKS

{$come_from} URL for the visitor's origin.
{$link->getPageLink('prices-drop')} Specific page – Sales
{$link->getPageLink('contact', true)} Contact form (true is for SSL support)
{$cart} shopping cart contents
{$cart_qties} Number of products in the cart.
{$cookie} User cookie.
{$currencies} The various available currencies.
{$currency} Currency object (currently used currency).
{$customerName} Client name (if logged in).
{$id_currency_cookie} ID of the current currency.
{$languages} The various available languages.
{$logged} Indicates whether the visitor is logged to a customer account.
{$page_name} Page name.
{$priceDisplay} Price display method (with or without taxes…).
{$roundMode} Rounding method in use.
{$shop_name} Shop name.
{$use_taxes} Indicates whether taxes are enabled or not.

Directories

{$base_dir} root folder of your shop
{$base_dir_ssl} root folder of your shop using HTTPS protocol
{$content_dir} root folder of your shop depending on the SSL settings
{$css_dir} URL for the theme's CSS folder.
{$img_col_dir}
{$img_store_dir}  URL for the stores images folder.
{$img_cat_dir} URL for the categories images folder.
{$img_dir} URL for the theme's images folder.
{$img_lang_dir} URL for the languages images folder.
{$img_manu_dir} URL for the manufacturers images folder.
{$img_prod_dir} URL for the products images folder.
{$img_ps_dir} URL for the PrestaShop image folder.
{$img_ship_dir} URL for the carriers (shipping) images folder.
{$img_sup_dir} URL for the suppliers images folder.
{$js_dir} URL for the theme's JavaScript folder.
{$lang_iso} ISO code for the current language.
{$modules_dir} URL the modules folder.
{$mail_dir} URL for the mail templates folder.
{$pic_dir} URL for the pictures upload folder.
{tpl_dir} URL for the current theme's folder.

Thursday 11 September 2014

PrestaShop Remove Subcategories List From Category Page

PrestaShop Remove Subcategories List From Category Page

Remove this part of the code from category.tpl
{if isset($subcategories)}<!-- Subcategories --><div id="subcategories"><h3>{l s='Subcategories'}</h3><ul class="inline_list">{foreach from=$subcategories item=subcategory}<li><a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" title="{$subcategory.name|escape:'htmlall':'UTF-8'}">{if $subcategory.id_image}<img src="{$link->getCatImageLink($subcategory.link_rewrite, $subcategory.id_image, 'medium')}" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />{else}<img src="{$img_cat_dir}default-medium.jpg" alt="" width="{$mediumSize.width}" height="{$mediumSize.height}" />{/if}</a><br /><a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}">{$subcategory.name|escape:'htmlall':'UTF-8'}</a></li>{/foreach}</ul><br class="clear"/></div>{/if}

Friday 5 September 2014

Read File and fill values to select box

Read File and fill values to drop down


<?php file2combo("../Testing/file_read.txt");

function file2combo($filename){

if($filename==""){
return;
}

$fd = fopen("$filename", "r");

while(!feof($fd)){
  $line = trim(fgets($fd,1024));
if(trim($line)!=""){
echo '<option value="'.$line.'">'.$line.'</option>';
}
  }
fclose($fd);
}
?>

Wednesday 23 July 2014

jQuery validation for file type extension

jQuery validation for file type extension

<script type="text/javascript">
  $(function(){
    $('input#submit').click(function(){
      var file = $('input[type="file"]').val();
      var exts = ['doc','docx','rtf','odt'];
      // first check if file field has any value
      if ( file ) {
        // split file name at dot
        var get_ext = file.split('.');
        // reverse name to check extension
        get_ext = get_ext.reverse();
        // check file type is valid as given in 'exts' array
        if ( $.inArray ( get_ext[0].toLowerCase(), exts ) > -1 ){
          alert( 'Allowed extension!' );
        } else {
          alert( 'Invalid file!' );
        }
      }
    });
  });
</script>

Monday 21 July 2014

Read xls or xlsx file using PHP

PHP XLSXReader Sample

<?php 
date_default_timezone_set('UTC');
require('XLSXReader.php');
$xlsx = new XLSXReader('Companies.xlsx');
$sheetNames = $xlsx->getSheetNames();

?>
<?php 
foreach($sheetNames as $sheetName) {
$sheet = $xlsx->getSheet($sheetName);
?>
<h3><?php echo escape($sheetName);?></h3>
<?php 
array2Table($sheet->getData());
}

?>
<?php 
$data = array_map(function($row) {
$converted = XLSXReader::toUnixTimeStamp($row[0]);
return array($row[0], $converted, date('c', $converted), $row[1]);
}, $xlsx->getSheetData('Dates'));
array_unshift($data, array('Excel Date', 'Unix Timestamp', 'Formatted Date', 'Data'));
array2Table($data);

function array2Table($data) {
echo '<table>';
foreach($data as $row) {
echo "<tr>";
foreach($row as $cell) {
echo "<td>" . escape($cell) . "</td>";
}
echo "</tr>";
}
echo '</table>';
}

function debug($data) {
echo '<pre>';
print_r($data);
echo '</pre>';
}

function escape($string) {
return htmlspecialchars($string, ENT_QUOTES);
}?>



<?php



class XLSXReader {
protected $sheets = array();
protected $sharedstrings = array();
protected $sheetInfo;
protected $zip;
public $config = array(
'removeTrailingRows' => true
);
// XML schemas
const SCHEMA_OFFICEDOCUMENT  =  'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument';
const SCHEMA_RELATIONSHIP  =  'http://schemas.openxmlformats.org/package/2006/relationships';
const SCHEMA_OFFICEDOCUMENT_RELATIONSHIP = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
const SCHEMA_SHAREDSTRINGS =  'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings';
const SCHEMA_WORKSHEETRELATION =  'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet';

public function __construct($filePath, $config = array()) {
$this->config = array_merge($this->config, $config);
$this->zip = new ZipArchive();
$status = $this->zip->open($filePath);
if($status === true) {
$this->parse();
} else {
throw new Exception("Failed to open $filePath with zip error code: $status");
}
}

// get a file from the zip
protected function getEntryData($name) {
$data = $this->zip->getFromName($name);
if($data === false) {
throw new Exception("File $name does not exist in the Excel file");
} else {
return $data;
}
}

// extract the shared string and the list of sheets
protected function parse() {
$sheets = array();
$relationshipsXML = simplexml_load_string($this->getEntryData("_rels/.rels"));
foreach($relationshipsXML->Relationship as $rel) {
if($rel['Type'] == self::SCHEMA_OFFICEDOCUMENT) {
$workbookDir = dirname($rel['Target']) . '/';
$workbookXML = simplexml_load_string($this->getEntryData($rel['Target']));
foreach($workbookXML->sheets->sheet as $sheet) {
$r = $sheet->attributes('r', true);
$sheets[(string)$r->id] = array(
'sheetId' => (int)$sheet['sheetId'],
'name' => (string)$sheet['name']
);
}
$workbookRelationsXML = simplexml_load_string($this->getEntryData($workbookDir . '_rels/' . basename($rel['Target']) . '.rels'));
foreach($workbookRelationsXML->Relationship as $wrel) {
switch($wrel['Type']) {
case self::SCHEMA_WORKSHEETRELATION:
$sheets[(string)$wrel['Id']]['path'] = $workbookDir . (string)$wrel['Target'];
break;
case self::SCHEMA_SHAREDSTRINGS:
$sharedStringsXML = simplexml_load_string($this->getEntryData($workbookDir . (string)$wrel['Target']));
foreach($sharedStringsXML->si as $val) {
if(isset($val->t)) {
$this->sharedStrings[] = (string)$val->t;
} elseif(isset($val->r)) {
$this->sharedStrings[] = XLSXWorksheet::parseRichText($val);
}
}
break;
}
}
}
}
$this->sheetInfo = array();
foreach($sheets as $rid=>$info) {
$this->sheetInfo[$info['name']] = array(
'sheetId' => $info['sheetId'],
'rid' => $rid,
'path' => $info['path']
);
}
}

// returns an array of sheet names, indexed by sheetId
public function getSheetNames() {
$res = array();
foreach($this->sheetInfo as $sheetName=>$info) {
$res[$info['sheetId']] = $sheetName;
}
return $res;
}

public function getSheetCount() {
return count($this->sheetInfo);
}

// instantiates a sheet object (if needed) and returns an array of its data
public function getSheetData($sheetNameOrId) {
$sheet = $this->getSheet($sheetNameOrId);
return $sheet->getData();
}

// instantiates a sheet object (if needed) and returns the sheet object
public function getSheet($sheet) {
if(is_numeric($sheet)) {
$sheet = $this->getSheetNameById($sheet);
} elseif(!is_string($sheet)) {
throw new Exception("Sheet must be a string or a sheet Id");
}
if(!array_key_exists($sheet, $this->sheets)) {
$this->sheets[$sheet] = new XLSXWorksheet($this->getSheetXML($sheet), $sheet, $this);

}
return $this->sheets[$sheet];
}

public function getSheetNameById($sheetId) {
foreach($this->sheetInfo as $sheetName=>$sheetInfo) {
if($sheetInfo['sheetId'] === $sheetId) {
return $sheetName;
}
}
throw new Exception("Sheet ID $sheetId does not exist in the Excel file");
}

protected function getSheetXML($name) {
return simplexml_load_string($this->getEntryData($this->sheetInfo[$name]['path']));
}

// converts an Excel date field (a number) to a unix timestamp (granularity: seconds)
public static function toUnixTimeStamp($excelDateTime) {
if(!is_numeric($excelDateTime)) {
return $excelDateTime;
}
$d = floor($excelDateTime); // seconds since 1900
$t = $excelDateTime - $d;
return ($d > 0) ? ( $d - 25569 ) * 86400 + $t * 86400 : $t * 86400;
}

}

class XLSXWorksheet {

protected $workbook;
public $sheetName;
protected $data;
public $colCount;
public $rowCount;
protected $config;

public function __construct($xml, $sheetName, XLSXReader $workbook) {
$this->config = $workbook->config;
$this->sheetName = $sheetName;
$this->workbook = $workbook;
$this->parse($xml);
}

// returns an array of the data from the sheet
public function getData() {
return $this->data;
}

protected function parse($xml) {
$this->parseDimensions($xml->dimension);
$this->parseData($xml->sheetData);
}

protected function parseDimensions($dimensions) {
$range = (string) $dimensions['ref'];
$cells = explode(':', $range);
$maxValues = $this->getColumnIndex($cells[1]);
$this->colCount = $maxValues[0] + 1;
$this->rowCount = $maxValues[1] + 1;
}

protected function parseData($sheetData) {
$rows = array();
$curR = 0;
$lastDataRow = -1;
foreach ($sheetData->row as $row) {
$rowNum = (int)$row['r'];
if($rowNum != ($curR + 1)) {
$missingRows = $rowNum - ($curR + 1);
for($i=0; $i < $missingRows; $i++) {
$rows[$curR] = array_pad(array(),$this->colCount,null);
$curR++;
}
}
$curC = 0;
$rowData = array();
foreach ($row->c as $c) {
list($cellIndex,) = $this->getColumnIndex((string) $c['r']);
if($cellIndex !== $curC) {
$missingCols = $cellIndex - $curC;
for($i=0;$i<$missingCols;$i++) {
$rowData[$curC] = null;
$curC++;
}
}
$val = $this->parseCellValue($c);
if(!is_null($val)) {
$lastDataRow = $curR;
}
$rowData[$curC] = $val;
$curC++;
}
$rows[$curR] = array_pad($rowData, $this->colCount, null);
$curR++;
}
if($this->config['removeTrailingRows']) {
$this->data = array_slice($rows, 0, $lastDataRow + 1);
$this->rowCount = count($this->data);
} else {
$this->data = $rows;
}
}

protected function getColumnIndex($cell = 'A1') {
if (preg_match("/([A-Z]+)(\d+)/", $cell, $matches)) {
$col = $matches[1];
$row = $matches[2];
$colLen = strlen($col);
$index = 0;

for ($i = $colLen-1; $i >= 0; $i--) {
$index += (ord($col{$i}) - 64) * pow(26, $colLen-$i-1);
}
return array($index-1, $row-1);
}
throw new Exception("Invalid cell index");
}
protected function parseCellValue($cell) {
// $cell['t'] is the cell type
switch ((string)$cell["t"]) {
case "s": // Value is a shared string
if ((string)$cell->v != '') {
$value = $this->workbook->sharedStrings[intval($cell->v)];
} else {
$value = '';
}
break;
case "b": // Value is boolean
$value = (string)$cell->v;
if ($value == '0') {
$value = false;
} else if ($value == '1') {
$value = true;
} else {
$value = (bool)$cell->v;
}
break;
case "inlineStr": // Value is rich text inline
$value = self::parseRichText($cell->is);
break;
case "e": // Value is an error message
if ((string)$cell->v != '') {
$value = (string)$cell->v;
} else {
$value = '';
}
break;
default:
if(!isset($cell->v)) {
return null;
}
$value = (string)$cell->v;

// Check for numeric values
if (is_numeric($value)) {
if ($value == (int)$value) $value = (int)$value;
elseif ($value == (float)$value) $value = (float)$value;
elseif ($value == (double)$value) $value = (double)$value;
}
}
return $value;
}

// returns the text content from a rich text or inline string field
    public static function parseRichText($is = null) {
        $value = array();
        if (isset($is->t)) {
            $value[] = (string)$is->t;
        } else {
            foreach ($is->r as $run) {
                $value[] = (string)$run->t;
            }
        }
        return implode(' ', $value);
    }
}