예제 #1
0
 public function getModelTwitterAliases()
 {
     if (!isset($this->_modelTwitterAliases)) {
         $this->_modelTwitterAliases = RecordAliases::getAliases($this->model, 'twitter');
     }
     return $this->_modelTwitterAliases;
 }
예제 #2
0
 public static function getAliases(X2Model $model, $aliasType = null)
 {
     $params = array(':type' => get_class($model), ':recordId' => $model->id);
     if ($aliasType) {
         $params[':aliasType'] = $aliasType;
     }
     $aliases = RecordAliases::model()->findAll(array('condition' => 'recordType=:type AND recordId=:recordId' . ($aliasType ? ' AND aliasType=:aliasType' : ''), 'group' => 'aliasType, alias', 'params' => $params));
     return $aliases;
 }
예제 #3
0
 public function run(array $RecordAliases)
 {
     if (Yii::app()->user->isGuest) {
         Yii::app()->controller->redirect(Yii::app()->controller->createUrl('/site/login'));
     }
     $recordAliases = new RecordAliases();
     $recordAliases->setAttributes($RecordAliases);
     $recordAliases->recordType = Yii::app()->controller->modelClass;
     $model = $recordAliases->getModel();
     if (!Yii::app()->params->isAdmin && !Yii::app()->controller->checkPermissions($model, 'edit')) {
         Yii::app()->controller->denied();
     }
     if ($recordAliases->validate()) {
         $recordAliases->save();
         echo CJSON::encode(array('success' => array('alias' => $recordAliases->renderAlias(), 'rawAlias' => $recordAliases->alias, 'id' => $recordAliases->id, 'label' => $recordAliases->label)));
     } else {
         $model = $recordAliases->getModel();
         echo CJSON::encode(array('failure' => CHtml::errorSummary($recordAliases)));
     }
 }
예제 #4
0
 public function run($id)
 {
     if (Yii::app()->user->isGuest) {
         Yii::app()->controller->redirect(Yii::app()->controller->createUrl('/site/login'));
     }
     $recordAlias = RecordAliases::model()->findByPk($id);
     if (!$recordAlias) {
         throw new CHttpException(404, CHtml::encode(Yii::t('app', 'Record does not exist')));
     }
     $model = $recordAlias->getModel();
     if ($model) {
         if (!Yii::app()->params->isAdmin && !Yii::app()->controller->checkPermissions($model, 'delete')) {
             Yii::app()->controller->denied();
         }
         if ($recordAlias->delete()) {
             echo 'success';
             Yii::app()->end();
         }
     }
     echo 'failure';
 }
예제 #5
0
 public function run(array $RecordAliases)
 {
     if (Yii::app()->user->isGuest) {
         Yii::app()->controller->redirect(Yii::app()->controller->createUrl('/site/login'));
     }
     $recordAliases = new RecordAliases();
     $recordAliases->setAttributes($RecordAliases);
     $recordAliases->recordType = Yii::app()->controller->modelClass;
     $model = $recordAliases->getModel();
     if (!Yii::app()->params->isAdmin && !Yii::app()->controller->checkPermissions($model, 'edit')) {
         Yii::app()->controller->denied();
     }
     if ($recordAliases->validate()) {
         $recordAliases->save();
         echo CJSON::encode(array('success' => array('alias' => $recordAliases->renderAlias(), 'id' => $recordAliases->id)));
     } else {
         $model = $recordAliases->getModel();
         echo CJSON::encode(array('failure' => Yii::app()->controller->widget('RecordAliasesWidget', array('model' => $model, 'formOnly' => true, 'aliasModel' => $recordAliases), true)));
     }
 }
예제 #6
0
 /**
  * Runs when a model is deleted.
  * Clears any entries in <tt>x2_phone_numbers</tt>.
  * Fires onAfterDelete event.
  */
 public function afterDelete()
 {
     // Clear out old tags:
     $class = get_class($this);
     Tags::model()->deleteAllByAttributes(array('type' => $class, 'itemId' => $this->id));
     // Clear out old phone numbers
     X2Model::model('PhoneNumber')->deleteAllByAttributes(array('modelId' => $this->id, 'modelType' => $class));
     RecordAliases::model()->deleteAllByAttributes(array('recordId' => $this->id, 'recordType' => $class));
     // Change all references to this record so that they retain the name but
     // exclude the ID:
     if ($this->hasAttribute('nameId') && $this->hasAttribute('name')) {
         $this->_oldAttributes = $this->getAttributes();
         $this->nameId = $this->name;
         $this->updateNameIdRefs();
     }
     // clear out associated actions
     Actions::model()->deleteAllByAttributes(array('associationType' => strtolower(self::getAssociationType(get_class($this))), 'associationId' => $this->id));
     if ($this->hasEventHandler('onAfterDelete')) {
         $this->onAfterDelete(new CEvent($this));
     }
 }
예제 #7
0
 public function getAliases()
 {
     return RecordAliases::getAliases($this->model);
 }
예제 #8
0
파일: x2base.php 프로젝트: shuvro35/X2CRM
 public function actions()
 {
     $actions = array('x2GridViewMassAction' => array('class' => 'X2GridViewMassActionAction'), 'inlineEmail' => array('class' => 'InlineEmailAction'));
     if ($this->module) {
         $module = Modules::model()->findByAttributes(array('name' => $this->module->name));
         if ($module->enableRecordAliasing) {
             $actions = array_merge($actions, RecordAliases::getActions());
         }
     }
     if ($this->modelClass !== '') {
         $modelClass = $this->modelClass;
         if ($modelClass::model()->asa('X2ModelConversionBehavior')) {
             $actions = array_merge($actions, X2ModelConversionBehavior::getActions());
         }
     }
     return $actions;
 }
예제 #9
0
 * 02110-1301 USA.
 * 
 * You can contact X2Engine, Inc. P.O. Box 66752, Scotts Valley,
 * California 95067, USA. or at email address contact@x2engine.com.
 * 
 * The interactive user interfaces in modified source and object code versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU Affero General Public License version 3.
 * 
 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
 * these Appropriate Legal Notices must retain the display of the "Powered by
 * X2Engine" logo. If the display of the logo is not reasonably feasible for
 * technical reasons, the Appropriate Legal Notices must display the words
 * "Powered by X2Engine".
 *****************************************************************************************/
$aliasTypeOptions = RecordAliases::model()->getAliasTypeOptions();
Yii::app()->clientScript->registerCssFile(Yii::app()->theme->baseUrl . '/css/components/views/recordAliasesWidget.css');
Yii::app()->clientScript->registerScriptFile('http://www.skypeassets.com/i/scom/js/skype-uri.js');
Yii::app()->clientScript->registerScript('recordAliasesWidgetJS', "\n\n\$(function () {\n    new x2.RecordAliasesWidget ({\n        element: '.record-aliases-dropdown-container',\n        aliasOptions: " . CJSON::encode($aliasTypeOptions) . ",\n        aliasTypeIcons: " . CJSON::encode($aliasModel->getAllIcons()) . ",\n        baseUrl: yii.scriptUrl + \n            '/" . Yii::app()->controller->module->name . "/" . Yii::app()->controller->module->name . "',\n        translations: " . CJSON::encode(array('dialogTitle' => Yii::t('app', 'Create Social Profile'), 'cancel' => Yii::t('app', 'Cancel'), 'create' => Yii::t('app', 'Create'), 'confirmDeletion' => Yii::t('app', 'Are you sure you want to delete this social profile?'), 'confirmDeletionTitle' => Yii::t('app', 'Delete social profile?'), 'OK' => Yii::t('app', 'OK'), 'skypeQtipLoadingText' => Yii::t('app', 'Loading...'))) . ",\n        recordId: " . $this->model->id . "\n    });\n});\n\n", CClientScript::POS_END);
if (!$this->formOnly) {
    echo CHtml::tag('button', array('id' => 'view-aliases-button', 'class' => 'x2-button right view-aliases-button icon', 'title' => Yii::t('app', 'Add social profile')), '');
    ?>
<div class='record-aliases-dropdown-container'>
    <ul class='alias-dropdown x2-dropdown-list' style='display: none;'>
        <span>
        <?php 
    foreach ($this->getAliases() as $alias) {
        ?>
        <li data-alias-type='<?php 
        echo CHtml::encode($aliasTypeOptions[$alias->aliasType]);
        ?>